diff --git a/pkgs/applications/video/kodi/unwrapped.nix b/pkgs/applications/video/kodi/unwrapped.nix index 1b9e7f4314fa..cda9f91d94df 100644 --- a/pkgs/applications/video/kodi/unwrapped.nix +++ b/pkgs/applications/video/kodi/unwrapped.nix @@ -263,6 +263,15 @@ stdenv.mkDerivation ( url = "https://github.com/xbmc/xbmc/commit/269053ebbfd3cc4a3156a511f54ab7f08a09a730.patch"; hash = "sha256-JzzrMJvAufrxTxtWnzknUS9JLJEed+qdtVnIYYe9LCw="; }) + # Mire fixes for Pipwire. See https://github.com/xbmc/xbmc/pull/26441 + (fetchpatch { + url = "https://github.com/xbmc/xbmc/commit/821901f30469c56f3fff0604c7a8796b77d11fc1.patch"; + hash = "sha256-XfAipqmYF8GCgEJNMjvQbaH0GWib/YE3jTMAMat4Xg8="; + }) + (fetchpatch { + url = "https://github.com/xbmc/xbmc/commit/7d369dd07acae535d57aec412359406646d5fb86.patch"; + hash = "sha256-5NnGwHf1FlKjDdbkCo4yTgl/aBbz+7+6FIJWVq+sF9E="; + }) ]; # make derivations declared in the let binding available here, so @@ -276,186 +285,187 @@ stdenv.mkDerivation ( apache_commons_text ; - buildInputs = [ - gnutls - libidn2 - libtasn1 - nasm - p11-kit - libxml2 - python3Packages.python - boost - libmicrohttpd - gettext - pcre-cpp - yajl - fribidi - libva - libdrm - openssl - gperf - tinyxml2 - tinyxml-2 - taglib - libssh - gtest - ncurses - spdlog - alsa-lib - libGL - libGLU - fontconfig - freetype - ftgl - libjpeg - libpng - libtiff - libmpeg2 - libsamplerate - libmad - libogg - libvorbis - flac - libxslt - systemd - lzo - libcdio - libmodplug - libass - libbluray - libudfread - sqlite - libmysqlclient - avahi - lame - curl - bzip2 - zip - unzip - mesa-demos - libcec - libcec_platform - dcadec - libuuid - libxcrypt - libgcrypt - libgpg-error - libunistring - libcrossguid - libplist - bluez - glib - harfbuzz - lcms2 - libpthreadstubs - ffmpeg - flatbuffers - fstrcmp - rapidjson - lirc - mesa-gl-headers + buildInputs = + [ + gnutls + libidn2 + libtasn1 + nasm + p11-kit + libxml2 + python3Packages.python + boost + libmicrohttpd + gettext + pcre-cpp + yajl + fribidi + libva + libdrm + openssl + gperf + tinyxml2 + tinyxml-2 + taglib + libssh + gtest + ncurses + spdlog + alsa-lib + libGL + libGLU + fontconfig + freetype + ftgl + libjpeg + libpng + libtiff + libmpeg2 + libsamplerate + libmad + libogg + libvorbis + flac + libxslt + systemd + lzo + libcdio + libmodplug + libass + libbluray + libudfread + sqlite + libmysqlclient + avahi + lame + curl + bzip2 + zip + unzip + mesa-demos + libcec + libcec_platform + dcadec + libuuid + libxcrypt + libgcrypt + libgpg-error + libunistring + libcrossguid + libplist + bluez + glib + harfbuzz + lcms2 + libpthreadstubs + ffmpeg + flatbuffers + fstrcmp + rapidjson + lirc + mesa-gl-headers - # Deps needed by TexturePacker, which is built and installed in normal - # kodi build, however the one used during the build is not this one - # in order to support cross-compilation. - giflib - zlib - ] - ++ lib.optionals x11Support [ - libX11 - xorgproto - libXt - libXmu - libXext.dev - libXdmcp - libXinerama - libXrandr.dev - libXtst - libXfixes - ] - ++ lib.optional dbusSupport dbus - ++ lib.optional joystickSupport cwiid - ++ lib.optional nfsSupport libnfs - ++ lib.optional pulseSupport libpulseaudio - ++ lib.optional pipewireSupport pipewire - ++ lib.optional rtmpSupport rtmpdump - ++ lib.optional sambaSupport samba - ++ lib.optional udevSupport udev - ++ lib.optional usbSupport libusb-compat-0_1 - ++ lib.optional vdpauSupport libvdpau - ++ lib.optionals waylandSupport [ - wayland - waylandpp.dev - wayland-protocols - # Not sure why ".dev" is needed here, but CMake doesn't find libxkbcommon otherwise - libxkbcommon.dev - ] - ++ lib.optionals gbmSupport [ - libxkbcommon.dev - libgbm - libinput.dev - libdisplay-info - ]; + # Deps needed by TexturePacker, which is built and installed in normal + # kodi build, however the one used during the build is not this one + # in order to support cross-compilation. + giflib + zlib + ] + ++ lib.optionals x11Support [ + libX11 + xorgproto + libXt + libXmu + libXext.dev + libXdmcp + libXinerama + libXrandr.dev + libXtst + libXfixes + ] + ++ lib.optional dbusSupport dbus + ++ lib.optional joystickSupport cwiid + ++ lib.optional nfsSupport libnfs + ++ lib.optional pulseSupport libpulseaudio + ++ lib.optional pipewireSupport pipewire + ++ lib.optional rtmpSupport rtmpdump + ++ lib.optional sambaSupport samba + ++ lib.optional udevSupport udev + ++ lib.optional usbSupport libusb-compat-0_1 + ++ lib.optional vdpauSupport libvdpau + ++ lib.optionals waylandSupport [ + wayland + waylandpp.dev + wayland-protocols + # Not sure why ".dev" is needed here, but CMake doesn't find libxkbcommon otherwise + libxkbcommon.dev + ] + ++ lib.optionals gbmSupport [ + libxkbcommon.dev + libgbm + libinput.dev + libdisplay-info + ]; - nativeBuildInputs = [ - cmake - doxygen - makeWrapper - which - pkg-config - autoconf - automake - libtool # still needed for some components. Check if that is the case with 19.0 - jre_headless - yasm - gettext - python3Packages.python - flatbuffers - ] - ++ lib.optionals waylandSupport [ - wayland-protocols - waylandpp.bin - ]; + nativeBuildInputs = + [ + cmake + doxygen + makeWrapper + which + pkg-config + autoconf + automake + libtool # still needed for some components. Check if that is the case with 19.0 + jre_headless + yasm + gettext + python3Packages.python + flatbuffers + ] + ++ lib.optionals waylandSupport [ + wayland-protocols + waylandpp.bin + ]; - depsBuildBuild = [ - buildPackages.stdenv.cc - ]; + depsBuildBuild = [ buildPackages.stdenv.cc ]; - cmakeFlags = [ - "-DAPP_RENDER_SYSTEM=${if gbmSupport then "gles" else "gl"}" - "-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=${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" - "-DPYTHON_EXECUTABLE=${buildPackages.python3Packages.python}/bin/python" - "-DPYTHON_LIB_PATH=${python3Packages.python.sitePackages}" - "-DWITH_JSONSCHEMABUILDER=${lib.getExe jsonSchemaBuilder}" - # When wrapped KODI_HOME will likely contain symlinks to static assets - # that Kodi's built in webserver will cautiously refuse to serve up - # (because their realpaths are outside of KODI_HOME and the other - # whitelisted directories). This adds the entire nix store to the Kodi - # webserver whitelist to avoid this problem. - "-DKODI_WEBSERVER_EXTRA_WHITELIST=${builtins.storeDir}" - ] - ++ lib.optionals waylandSupport [ - "-DWAYLANDPP_SCANNER=${buildPackages.waylandpp}/bin/wayland-scanner++" - ] - ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ - "-DWITH_TEXTUREPACKER=${lib.getExe texturePacker}" - ]; + cmakeFlags = + [ + "-DAPP_RENDER_SYSTEM=${if gbmSupport then "gles" else "gl"}" + "-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=${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" + "-DPYTHON_EXECUTABLE=${buildPackages.python3Packages.python}/bin/python" + "-DPYTHON_LIB_PATH=${python3Packages.python.sitePackages}" + "-DWITH_JSONSCHEMABUILDER=${lib.getExe jsonSchemaBuilder}" + # When wrapped KODI_HOME will likely contain symlinks to static assets + # that Kodi's built in webserver will cautiously refuse to serve up + # (because their realpaths are outside of KODI_HOME and the other + # whitelisted directories). This adds the entire nix store to the Kodi + # webserver whitelist to avoid this problem. + "-DKODI_WEBSERVER_EXTRA_WHITELIST=${builtins.storeDir}" + ] + ++ lib.optionals waylandSupport [ + "-DWAYLANDPP_SCANNER=${buildPackages.waylandpp}/bin/wayland-scanner++" + ] + ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ + "-DWITH_TEXTUREPACKER=${lib.getExe texturePacker}" + ]; # 14 tests fail but the biggest issue is that every test takes 30 seconds - # I'm guessing there is a thing waiting to time out