kodi: apply pipwire upstream patch

Signed-off-by: Florian Brandes <florian.brandes@posteo.de>
This commit is contained in:
2025-08-17 11:43:08 +02:00
parent 01ab850b17
commit 23d50f5b65

View File

@@ -263,6 +263,15 @@ stdenv.mkDerivation (
url = "https://github.com/xbmc/xbmc/commit/269053ebbfd3cc4a3156a511f54ab7f08a09a730.patch"; url = "https://github.com/xbmc/xbmc/commit/269053ebbfd3cc4a3156a511f54ab7f08a09a730.patch";
hash = "sha256-JzzrMJvAufrxTxtWnzknUS9JLJEed+qdtVnIYYe9LCw="; 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 # make derivations declared in the let binding available here, so
@@ -276,186 +285,187 @@ stdenv.mkDerivation (
apache_commons_text apache_commons_text
; ;
buildInputs = [ buildInputs =
gnutls [
libidn2 gnutls
libtasn1 libidn2
nasm libtasn1
p11-kit nasm
libxml2 p11-kit
python3Packages.python libxml2
boost python3Packages.python
libmicrohttpd boost
gettext libmicrohttpd
pcre-cpp gettext
yajl pcre-cpp
fribidi yajl
libva fribidi
libdrm libva
openssl libdrm
gperf openssl
tinyxml2 gperf
tinyxml-2 tinyxml2
taglib tinyxml-2
libssh taglib
gtest libssh
ncurses gtest
spdlog ncurses
alsa-lib spdlog
libGL alsa-lib
libGLU libGL
fontconfig libGLU
freetype fontconfig
ftgl freetype
libjpeg ftgl
libpng libjpeg
libtiff libpng
libmpeg2 libtiff
libsamplerate libmpeg2
libmad libsamplerate
libogg libmad
libvorbis libogg
flac libvorbis
libxslt flac
systemd libxslt
lzo systemd
libcdio lzo
libmodplug libcdio
libass libmodplug
libbluray libass
libudfread libbluray
sqlite libudfread
libmysqlclient sqlite
avahi libmysqlclient
lame avahi
curl lame
bzip2 curl
zip bzip2
unzip zip
mesa-demos unzip
libcec mesa-demos
libcec_platform libcec
dcadec libcec_platform
libuuid dcadec
libxcrypt libuuid
libgcrypt libxcrypt
libgpg-error libgcrypt
libunistring libgpg-error
libcrossguid libunistring
libplist libcrossguid
bluez libplist
glib bluez
harfbuzz glib
lcms2 harfbuzz
libpthreadstubs lcms2
ffmpeg libpthreadstubs
flatbuffers ffmpeg
fstrcmp flatbuffers
rapidjson fstrcmp
lirc rapidjson
mesa-gl-headers lirc
mesa-gl-headers
# Deps needed by TexturePacker, which is built and installed in normal # Deps needed by TexturePacker, which is built and installed in normal
# kodi build, however the one used during the build is not this one # kodi build, however the one used during the build is not this one
# in order to support cross-compilation. # in order to support cross-compilation.
giflib giflib
zlib zlib
] ]
++ lib.optionals x11Support [ ++ lib.optionals x11Support [
libX11 libX11
xorgproto xorgproto
libXt libXt
libXmu libXmu
libXext.dev libXext.dev
libXdmcp libXdmcp
libXinerama libXinerama
libXrandr.dev libXrandr.dev
libXtst libXtst
libXfixes libXfixes
] ]
++ lib.optional dbusSupport dbus ++ lib.optional dbusSupport dbus
++ lib.optional joystickSupport cwiid ++ lib.optional joystickSupport cwiid
++ lib.optional nfsSupport libnfs ++ lib.optional nfsSupport libnfs
++ lib.optional pulseSupport libpulseaudio ++ lib.optional pulseSupport libpulseaudio
++ lib.optional pipewireSupport pipewire ++ lib.optional pipewireSupport pipewire
++ lib.optional rtmpSupport rtmpdump ++ lib.optional rtmpSupport rtmpdump
++ lib.optional sambaSupport samba ++ lib.optional sambaSupport samba
++ lib.optional udevSupport udev ++ lib.optional udevSupport udev
++ lib.optional usbSupport libusb-compat-0_1 ++ lib.optional usbSupport libusb-compat-0_1
++ lib.optional vdpauSupport libvdpau ++ lib.optional vdpauSupport libvdpau
++ lib.optionals waylandSupport [ ++ lib.optionals waylandSupport [
wayland wayland
waylandpp.dev waylandpp.dev
wayland-protocols wayland-protocols
# Not sure why ".dev" is needed here, but CMake doesn't find libxkbcommon otherwise # Not sure why ".dev" is needed here, but CMake doesn't find libxkbcommon otherwise
libxkbcommon.dev libxkbcommon.dev
] ]
++ lib.optionals gbmSupport [ ++ lib.optionals gbmSupport [
libxkbcommon.dev libxkbcommon.dev
libgbm libgbm
libinput.dev libinput.dev
libdisplay-info libdisplay-info
]; ];
nativeBuildInputs = [ nativeBuildInputs =
cmake [
doxygen cmake
makeWrapper doxygen
which makeWrapper
pkg-config which
autoconf pkg-config
automake autoconf
libtool # still needed for some components. Check if that is the case with 19.0 automake
jre_headless libtool # still needed for some components. Check if that is the case with 19.0
yasm jre_headless
gettext yasm
python3Packages.python gettext
flatbuffers python3Packages.python
] flatbuffers
++ lib.optionals waylandSupport [ ]
wayland-protocols ++ lib.optionals waylandSupport [
waylandpp.bin wayland-protocols
]; waylandpp.bin
];
depsBuildBuild = [ depsBuildBuild = [ buildPackages.stdenv.cc ];
buildPackages.stdenv.cc
];
cmakeFlags = [ cmakeFlags =
"-DAPP_RENDER_SYSTEM=${if gbmSupport then "gles" else "gl"}" [
"-Dlibdvdcss_URL=${finalAttrs.libdvdcss}" "-DAPP_RENDER_SYSTEM=${if gbmSupport then "gles" else "gl"}"
"-Dlibdvdnav_URL=${finalAttrs.libdvdnav}" "-Dlibdvdcss_URL=${finalAttrs.libdvdcss}"
"-Dlibdvdread_URL=${finalAttrs.libdvdread}" "-Dlibdvdnav_URL=${finalAttrs.libdvdnav}"
"-Dgroovy_SOURCE_DIR=${finalAttrs.groovy}" "-Dlibdvdread_URL=${finalAttrs.libdvdread}"
"-Dapache-commons-lang_SOURCE_DIR=${finalAttrs.apache_commons_lang}" "-Dgroovy_SOURCE_DIR=${finalAttrs.groovy}"
"-Dapache-commons-text_SOURCE_DIR=${finalAttrs.apache_commons_text}" "-Dapache-commons-lang_SOURCE_DIR=${finalAttrs.apache_commons_lang}"
# Upstream derives this from the git HEADs hash and date. "-Dapache-commons-text_SOURCE_DIR=${finalAttrs.apache_commons_text}"
# LibreElec (minimal distro for kodi) uses the equivalent to this. # Upstream derives this from the git HEADs hash and date.
"-DGIT_VERSION=${finalAttrs.version}-${finalAttrs.kodiReleaseName}" # LibreElec (minimal distro for kodi) uses the equivalent to this.
"-DENABLE_EVENTCLIENTS=ON" "-DGIT_VERSION=${finalAttrs.version}-${finalAttrs.kodiReleaseName}"
"-DENABLE_INTERNAL_CROSSGUID=OFF" "-DENABLE_EVENTCLIENTS=ON"
"-DENABLE_INTERNAL_RapidJSON=OFF" "-DENABLE_INTERNAL_CROSSGUID=OFF"
"-DENABLE_OPTICAL=${if opticalSupport then "ON" else "OFF"}" "-DENABLE_INTERNAL_RapidJSON=OFF"
"-DENABLE_VDPAU=${if vdpauSupport then "ON" else "OFF"}" "-DENABLE_OPTICAL=${if opticalSupport then "ON" else "OFF"}"
"-DLIRC_DEVICE=/run/lirc/lircd" "-DENABLE_VDPAU=${if vdpauSupport then "ON" else "OFF"}"
"-DSWIG_EXECUTABLE=${buildPackages.swig}/bin/swig" "-DLIRC_DEVICE=/run/lirc/lircd"
"-DFLATBUFFERS_FLATC_EXECUTABLE=${buildPackages.flatbuffers}/bin/flatc" "-DSWIG_EXECUTABLE=${buildPackages.swig}/bin/swig"
"-DPYTHON_EXECUTABLE=${buildPackages.python3Packages.python}/bin/python" "-DFLATBUFFERS_FLATC_EXECUTABLE=${buildPackages.flatbuffers}/bin/flatc"
"-DPYTHON_LIB_PATH=${python3Packages.python.sitePackages}" "-DPYTHON_EXECUTABLE=${buildPackages.python3Packages.python}/bin/python"
"-DWITH_JSONSCHEMABUILDER=${lib.getExe jsonSchemaBuilder}" "-DPYTHON_LIB_PATH=${python3Packages.python.sitePackages}"
# When wrapped KODI_HOME will likely contain symlinks to static assets "-DWITH_JSONSCHEMABUILDER=${lib.getExe jsonSchemaBuilder}"
# that Kodi's built in webserver will cautiously refuse to serve up # When wrapped KODI_HOME will likely contain symlinks to static assets
# (because their realpaths are outside of KODI_HOME and the other # that Kodi's built in webserver will cautiously refuse to serve up
# whitelisted directories). This adds the entire nix store to the Kodi # (because their realpaths are outside of KODI_HOME and the other
# webserver whitelist to avoid this problem. # whitelisted directories). This adds the entire nix store to the Kodi
"-DKODI_WEBSERVER_EXTRA_WHITELIST=${builtins.storeDir}" # webserver whitelist to avoid this problem.
] "-DKODI_WEBSERVER_EXTRA_WHITELIST=${builtins.storeDir}"
++ lib.optionals waylandSupport [ ]
"-DWAYLANDPP_SCANNER=${buildPackages.waylandpp}/bin/wayland-scanner++" ++ lib.optionals waylandSupport [
] "-DWAYLANDPP_SCANNER=${buildPackages.waylandpp}/bin/wayland-scanner++"
++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ ]
"-DWITH_TEXTUREPACKER=${lib.getExe texturePacker}" ++ 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 - # 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 # I'm guessing there is a thing waiting to time out