diff options
author | Aaron Andersen <aaron@fosslib.net> | 2024-04-18 16:23:23 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-18 16:23:23 +0000 |
commit | b9f2ef100ebd2fd6878e9a95d5c880ea990225af (patch) | |
tree | 4171b52ead780594a0e5933eb37b8db65fb7fb73 /pkgs/applications/video | |
parent | 3e1911632d7c424146dc14d4cb939a6a91336040 (diff) | |
parent | a55f8bd2d21468e95c078f72d4aafad1a0e815ec (diff) |
Merge pull request #304097 from nvmd/master+kodi-composable
kodi: make overrideAttrs and withPackages composable
Diffstat (limited to 'pkgs/applications/video')
-rw-r--r-- | pkgs/applications/video/kodi/default.nix | 20 | ||||
-rw-r--r-- | pkgs/applications/video/kodi/unwrapped.nix | 46 |
2 files changed, 39 insertions, 27 deletions
diff --git a/pkgs/applications/video/kodi/default.nix b/pkgs/applications/video/kodi/default.nix index 3f382efff11b9..b028558a61da7 100644 --- a/pkgs/applications/video/kodi/default.nix +++ b/pkgs/applications/video/kodi/default.nix @@ -1,14 +1,18 @@ { callPackage, ... } @ args: let unwrapped = callPackage ./unwrapped.nix (removeAttrs args [ "callPackage" ]); - kodiPackages = callPackage ../../../top-level/kodi-packages.nix { kodi = unwrapped; }; in unwrapped.overrideAttrs (oldAttrs: { - passthru = oldAttrs.passthru // { - packages = kodiPackages; - withPackages = func: callPackage ./wrapper.nix { - kodi = unwrapped; - addons = kodiPackages.requiredKodiAddons (func kodiPackages); - }; - }; + passthru = + let + finalKodi = oldAttrs.passthru.kodi; + kodiPackages = callPackage ../../../top-level/kodi-packages.nix { kodi = finalKodi; }; + in + oldAttrs.passthru // { + packages = kodiPackages; + withPackages = func: callPackage ./wrapper.nix { + kodi = finalKodi; + addons = kodiPackages.requiredKodiAddons (func kodiPackages); + }; + }; }) diff --git a/pkgs/applications/video/kodi/unwrapped.nix b/pkgs/applications/video/kodi/unwrapped.nix index a5c12ed0e7022..e8e5b5844f1f4 100644 --- a/pkgs/applications/video/kodi/unwrapped.nix +++ b/pkgs/applications/video/kodi/unwrapped.nix @@ -28,6 +28,7 @@ , rtmpSupport ? true, rtmpdump , sambaSupport ? true, samba , udevSupport ? true, udev +, opticalSupport ? true , usbSupport ? false, libusb-compat-0_1 , vdpauSupport ? true, libvdpau , waylandSupport ? false, wayland, wayland-protocols @@ -40,10 +41,6 @@ assert usbSupport -> !udevSupport; # libusb-compat-0_1 won't be used if udev is assert gbmSupport || waylandSupport || x11Support; let - kodiReleaseDate = "20240405"; - kodiVersion = "21.0"; - rel = "Omega"; - # see https://github.com/xbmc/xbmc/blob/${kodiVersion}-${rel}/tools/depends/target/ to get suggested versions for all dependencies # We can build these externally but FindLibDvd.cmake forces us to build it @@ -88,17 +85,23 @@ let ++ lib.optional waylandSupport "wayland" ++ lib.optional x11Support "x11"; -in stdenv.mkDerivation { +in stdenv.mkDerivation (finalAttrs: { pname = "kodi"; - version = kodiVersion; + version = "21.0"; + kodiReleaseName = "Omega"; src = fetchFromGitHub { owner = "xbmc"; - repo = "xbmc"; - rev = "${kodiVersion}-${rel}"; - hash = "sha256-xrFWqgwTkurEwt3/+/e4SCM6Uk9nxuW62SrCFWWqZO0="; + repo = "xbmc"; + rev = "${finalAttrs.version}-${finalAttrs.kodiReleaseName}"; + hash = "sha256-xrFWqgwTkurEwt3/+/e4SCM6Uk9nxuW62SrCFWWqZO0="; }; + # make derivations declared in the let binding available here, so + # they can be overridden + inherit libdvdcss libdvdnav libdvdread groovy + apache_commons_lang apache_commons_text; + buildInputs = [ gnutls libidn2 libtasn1 nasm p11-kit libxml2 python3Packages.python @@ -168,17 +171,20 @@ in stdenv.mkDerivation { cmakeFlags = [ "-DAPP_RENDER_SYSTEM=${if gbmSupport then "gles" else "gl"}" - "-Dlibdvdcss_URL=${libdvdcss}" - "-Dlibdvdnav_URL=${libdvdnav}" - "-Dlibdvdread_URL=${libdvdread}" - "-Dgroovy_SOURCE_DIR=${groovy}" - "-Dapache-commons-lang_SOURCE_DIR=${apache_commons_lang}" - "-Dapache-commons-text_SOURCE_DIR=${apache_commons_text}" - "-DGIT_VERSION=${kodiReleaseDate}" + "-Dlibdvdcss_URL=${finalAttrs.libdvdcss}" + "-Dlibdvdnav_URL=${finalAttrs.libdvdnav}" + "-Dlibdvdread_URL=${finalAttrs.libdvdread}" + "-Dgroovy_SOURCE_DIR=${finalAttrs.groovy}" + "-Dapache-commons-lang_SOURCE_DIR=${finalAttrs.apache_commons_lang}" + "-Dapache-commons-text_SOURCE_DIR=${finalAttrs.apache_commons_text}" + # Upstream derives this from the git HEADs hash and date. + # LibreElec (minimal distro for kodi) uses the equivalent to this. + "-DGIT_VERSION=${finalAttrs.version}-${finalAttrs.kodiReleaseName}" "-DENABLE_EVENTCLIENTS=ON" "-DENABLE_INTERNAL_CROSSGUID=OFF" "-DENABLE_INTERNAL_RapidJSON=OFF" - "-DENABLE_OPTICAL=ON" + "-DENABLE_OPTICAL=${if opticalSupport then "ON" else "OFF"}" + "-DENABLE_VDPAU=${if vdpauSupport then "ON" else "OFF"}" "-DLIRC_DEVICE=/run/lirc/lircd" "-DSWIG_EXECUTABLE=${buildPackages.swig}/bin/swig" "-DFLATBUFFERS_FLATC_EXECUTABLE=${buildPackages.flatbuffers}/bin/flatc" @@ -221,7 +227,8 @@ in stdenv.mkDerivation { --prefix PATH ":" "${lib.makeBinPath ([ python3Packages.python glxinfo ] ++ lib.optional x11Support xdpyinfo ++ lib.optional sambaSupport samba)}" \ --prefix LD_LIBRARY_PATH ":" "${lib.makeLibraryPath - ([ curl systemd libmad libvdpau libcec libcec_platform libass ] + ([ curl systemd libmad libcec libcec_platform libass ] + ++ lib.optional vdpauSupport libvdpau ++ lib.optional nfsSupport libnfs ++ lib.optional rtmpSupport rtmpdump)}" done @@ -240,6 +247,7 @@ in stdenv.mkDerivation { passthru = { pythonPackages = python3Packages; ffmpeg = ffmpeg; + kodi = finalAttrs.finalPackage; }; meta = with lib; { @@ -249,4 +257,4 @@ in stdenv.mkDerivation { platforms = platforms.linux; maintainers = teams.kodi.members; }; -} +}) |