kodi: 18.9 -> 19.0

This commit is contained in:
Aaron Andersen 2020-12-02 21:01:18 -05:00
parent 1ec1a234d8
commit 145d22ad8d
2 changed files with 30 additions and 24 deletions

View file

@ -1,9 +1,10 @@
{ stdenv, lib, fetchurl, fetchFromGitHub, autoconf, automake, libtool, makeWrapper, linuxHeaders { stdenv, lib, fetchurl, fetchFromGitHub, autoconf, automake, libtool, makeWrapper, linuxHeaders
, pkg-config, cmake, gnumake, yasm, python2Packages , pkg-config, cmake, gnumake, yasm, python3Packages
, libgcrypt, libgpgerror, libunistring , libgcrypt, libgpgerror, libunistring
, boost, avahi, lame , boost, avahi, lame
, gettext, pcre-cpp, yajl, fribidi, which , gettext, pcre-cpp, yajl, fribidi, which
, openssl, gperf, tinyxml2, taglib, libssh, swig, jre_headless , openssl, gperf, tinyxml2, taglib, libssh, swig, jre_headless
, gtest, ncurses, spdlog
, libxml2, systemd , libxml2, systemd
, alsaLib, libGLU, libGL, fontconfig, freetype, ftgl , alsaLib, libGLU, libGL, fontconfig, freetype, ftgl
, libjpeg, libpng, libtiff , libjpeg, libpng, libtiff
@ -42,17 +43,18 @@ assert udevSupport -> udev != null;
assert usbSupport -> libusb-compat-0_1 != null && ! udevSupport; # libusb-compat-0_1 won't be used if udev is avaliable assert usbSupport -> libusb-compat-0_1 != null && ! udevSupport; # libusb-compat-0_1 won't be used if udev is avaliable
assert vdpauSupport -> libvdpau != null; assert vdpauSupport -> libvdpau != null;
assert useWayland -> wayland != null && wayland-protocols != null && waylandpp != null && libxkbcommon != null; assert useWayland -> wayland != null && wayland-protocols != null && waylandpp != null && libxkbcommon != null;
assert useGbm || useWayland || x11Support;
let let
kodiReleaseDate = "20200728"; kodiReleaseDate = "20210219";
kodiVersion = "18.9"; kodiVersion = "19.0";
rel = "Leia"; rel = "Matrix";
kodi_src = fetchFromGitHub { kodi_src = fetchFromGitHub {
owner = "xbmc"; owner = "xbmc";
repo = "xbmc"; repo = "xbmc";
rev = "${kodiVersion}-${rel}"; rev = "${kodiVersion}-${rel}";
sha256 = "0nnf7823pixj6n2fkjc8rbdjwayvhlbglij2by4rnjzzfgmqmw20"; sha256 = "097dg6a7v4ia85jx1pmlpwzdpqcqxlrmniqd005q73zvgj67zc2p";
}; };
cmakeProto = fetchurl { cmakeProto = fetchurl {
@ -87,9 +89,9 @@ let
ffmpeg = kodiDependency rec { ffmpeg = kodiDependency rec {
name = "FFmpeg"; name = "FFmpeg";
version = "4.0.3"; version = "4.3.1";
rev = "${version}-${rel}-18.2"; rev = "${version}-${rel}-Beta1";
sha256 = "1krsjlr949iy5l6ljxancza1yi6w1annxc5s6k283i9mb15qy8cy"; sha256 = "1c5rwlxn6xj501iw7masdv2p6wb9rkmd299lmlkx97sw1kvxvg2w";
preConfigure = '' preConfigure = ''
cp ${kodi_src}/tools/depends/target/ffmpeg/{CMakeLists.txt,*.cmake} . cp ${kodi_src}/tools/depends/target/ffmpeg/{CMakeLists.txt,*.cmake} .
sed -i 's/ --cpu=''${CPU}//' CMakeLists.txt sed -i 's/ --cpu=''${CPU}//' CMakeLists.txt
@ -151,6 +153,12 @@ let
postPatch = cmakeProtoPatch; postPatch = cmakeProtoPatch;
}; };
kodi_platforms =
lib.optional useGbm "gbm" ++
lib.optional useWayland "wayland" ++
lib.optional x11Support "x11"
;
in stdenv.mkDerivation { in stdenv.mkDerivation {
name = "kodi-${lib.optionalString useWayland "wayland-"}${kodiVersion}"; name = "kodi-${lib.optionalString useWayland "wayland-"}${kodiVersion}";
@ -158,10 +166,11 @@ in stdenv.mkDerivation {
buildInputs = [ buildInputs = [
gnutls libidn libtasn1 nasm p11-kit gnutls libidn libtasn1 nasm p11-kit
libxml2 python2Packages.python libxml2 python3Packages.python
boost libmicrohttpd boost libmicrohttpd
gettext pcre-cpp yajl fribidi libva libdrm gettext pcre-cpp yajl fribidi libva libdrm
openssl gperf tinyxml2 taglib libssh openssl gperf tinyxml2 taglib libssh
gtest ncurses spdlog
alsaLib libGL libGLU fontconfig freetype ftgl alsaLib libGL libGLU fontconfig freetype ftgl
libjpeg libpng libtiff libjpeg libpng libtiff
libmpeg2 libsamplerate libmad libmpeg2 libsamplerate libmad
@ -210,7 +219,7 @@ in stdenv.mkDerivation {
which which
pkg-config gnumake pkg-config gnumake
autoconf automake libtool # still needed for some components. Check if that is the case with 19.0 autoconf automake libtool # still needed for some components. Check if that is the case with 19.0
jre_headless yasm gettext python2Packages.python flatbuffers jre_headless yasm gettext python3Packages.python flatbuffers
# for TexturePacker # for TexturePacker
giflib zlib libpng libjpeg lzo giflib zlib libpng libjpeg lzo
@ -221,6 +230,8 @@ in stdenv.mkDerivation {
]; ];
cmakeFlags = [ cmakeFlags = [
"-DAPP_RENDER_SYSTEM=${if useGbm then "gles" else "gl"}"
"-DCORE_PLATFORM_NAME=${lib.concatStringsSep " " kodi_platforms}"
"-Dlibdvdcss_URL=${libdvdcss.src}" "-Dlibdvdcss_URL=${libdvdcss.src}"
"-Dlibdvdnav_URL=${libdvdnav.src}" "-Dlibdvdnav_URL=${libdvdnav.src}"
"-Dlibdvdread_URL=${libdvdread.src}" "-Dlibdvdread_URL=${libdvdread.src}"
@ -231,14 +242,9 @@ in stdenv.mkDerivation {
"-DLIRC_DEVICE=/run/lirc/lircd" "-DLIRC_DEVICE=/run/lirc/lircd"
"-DSWIG_EXECUTABLE=${buildPackages.swig}/bin/swig" "-DSWIG_EXECUTABLE=${buildPackages.swig}/bin/swig"
"-DFLATBUFFERS_FLATC_EXECUTABLE=${buildPackages.flatbuffers}/bin/flatc" "-DFLATBUFFERS_FLATC_EXECUTABLE=${buildPackages.flatbuffers}/bin/flatc"
"-DPYTHON_EXECUTABLE=${buildPackages.python2Packages.python}/bin/python" "-DPYTHON_EXECUTABLE=${buildPackages.python3Packages.python}/bin/python"
] ++ lib.optional useWayland [ ] ++ lib.optional useWayland [
"-DCORE_PLATFORM_NAME=wayland"
"-DWAYLAND_RENDER_SYSTEM=gl"
"-DWAYLANDPP_SCANNER=${buildPackages.waylandpp}/bin/wayland-scanner++" "-DWAYLANDPP_SCANNER=${buildPackages.waylandpp}/bin/wayland-scanner++"
] ++ lib.optional useGbm [
"-DCORE_PLATFORM_NAME=gbm"
"-DGBM_RENDER_SYSTEM=gles"
]; ];
# 14 tests fail but the biggest issue is that every test takes 30 seconds - # 14 tests fail but the biggest issue is that every test takes 30 seconds -
@ -256,14 +262,14 @@ in stdenv.mkDerivation {
''; '';
postPatch = '' postPatch = ''
substituteInPlace xbmc/platform/linux/LinuxTimezone.cpp \ substituteInPlace xbmc/platform/posix/PosixTimezone.cpp \
--replace 'usr/share/zoneinfo' 'etc/zoneinfo' --replace 'usr/share/zoneinfo' 'etc/zoneinfo'
''; '';
postInstall = '' postInstall = ''
for p in $(ls $out/bin/) ; do for p in $(ls $out/bin/) ; do
wrapProgram $out/bin/$p \ wrapProgram $out/bin/$p \
--prefix PATH ":" "${lib.makeBinPath ([ python2Packages.python glxinfo ] ++ lib.optional x11Support xdpyinfo)}" \ --prefix PATH ":" "${lib.makeBinPath ([ python3Packages.python glxinfo ] ++ lib.optional x11Support xdpyinfo)}" \
--prefix LD_LIBRARY_PATH ":" "${lib.makeLibraryPath --prefix LD_LIBRARY_PATH ":" "${lib.makeLibraryPath
([ curl systemd libmad libvdpau libcec libcec_platform libass ] ([ curl systemd libmad libvdpau libcec libcec_platform libass ]
++ lib.optional nfsSupport libnfs ++ lib.optional nfsSupport libnfs
@ -279,7 +285,7 @@ in stdenv.mkDerivation {
installCheckPhase = "$out/bin/kodi --version"; installCheckPhase = "$out/bin/kodi --version";
passthru = { passthru = {
pythonPackages = python2Packages; pythonPackages = python3Packages;
}; };
meta = with lib; { meta = with lib; {

View file

@ -1,7 +1,7 @@
{ lib, stdenv, callPackage, fetchFromGitHub { lib, stdenv, callPackage, fetchFromGitHub
, cmake, kodiPlain, libcec_platform, tinyxml, rapidxml , cmake, kodiPlain, libcec_platform, tinyxml, rapidxml
, steam, udev, libusb1, jsoncpp, libhdhomerun, zlib , steam, udev, libusb1, jsoncpp, libhdhomerun, zlib
, python2Packages, expat, glib, nspr, nss, openssl , python3Packages, expat, glib, nspr, nss, openssl
, libssh, libarchive, lzma, bzip2, lz4, lzo }: , libssh, libarchive, lzma, bzip2, lz4, lzo }:
with lib; with lib;
@ -9,7 +9,7 @@ with lib;
let self = rec { let self = rec {
pluginDir = "/share/kodi/addons"; pluginDir = "/share/kodi/addons";
rel = "Leia"; rel = "Matrix";
kodi = kodiPlain; kodi = kodiPlain;
@ -451,7 +451,7 @@ let self = rec {
}; };
}; };
yatp = python2Packages.toPythonModule (mkKodiPlugin rec { yatp = python3Packages.toPythonModule (mkKodiPlugin rec {
plugin = "yatp"; plugin = "yatp";
namespace = "plugin.video.yatp"; namespace = "plugin.video.yatp";
version = "3.3.2"; version = "3.3.2";
@ -467,8 +467,8 @@ let self = rec {
propagatedBuildInputs = [ propagatedBuildInputs = [
simpleplugin simpleplugin
python2Packages.requests python3Packages.requests
python2Packages.libtorrent-rasterbar python3Packages.libtorrent-rasterbar
]; ];
meta = { meta = {