From 8ed9df36f78b201952d9a307acb5f17b1e425bb5 Mon Sep 17 00:00:00 2001 From: Silvan Calarco Date: Thu, 26 Dec 2024 01:13:16 +0100 Subject: [PATCH] patch to fix assert in libudev >= 256 ( https://github.com/LibreELEC/LibreELEC.tv/pull/8982 ) [release 21.1-3mamba;Wed Dec 25 2024] --- kodi-21.1-ffmpeg-6-disable-nv-codec.patch | 12 ++++ kodi-21.1-libnfs-6.0.2.patch | 68 +++++++++++++++++++++++ kodi-21.1-libudev-256.patch | 33 +++++++++++ kodi-21.1-swig-4.3.0.patch | 26 +++++++++ kodi.spec | 26 +++++++-- 5 files changed, 159 insertions(+), 6 deletions(-) create mode 100644 kodi-21.1-ffmpeg-6-disable-nv-codec.patch create mode 100644 kodi-21.1-libnfs-6.0.2.patch create mode 100644 kodi-21.1-libudev-256.patch create mode 100644 kodi-21.1-swig-4.3.0.patch diff --git a/kodi-21.1-ffmpeg-6-disable-nv-codec.patch b/kodi-21.1-ffmpeg-6-disable-nv-codec.patch new file mode 100644 index 0000000..21c7fa6 --- /dev/null +++ b/kodi-21.1-ffmpeg-6-disable-nv-codec.patch @@ -0,0 +1,12 @@ +--- xbmc-21.1-Omega/tools/depends/target/ffmpeg/CMakeLists.txt.orig 2024-12-24 14:31:11.853284309 +0100 ++++ xbmc-21.1-Omega/tools/depends/target/ffmpeg/CMakeLists.txt 2024-12-24 14:31:47.599368276 +0100 +@@ -38,6 +38,9 @@ + --enable-runtime-cpudetect + --enable-pthreads + --extra-version="Kodi" ++ --disable-ffnvcodec ++ --disable-nvdec ++ --disable-nvenc + ) + + if(CMAKE_C_FLAGS) diff --git a/kodi-21.1-libnfs-6.0.2.patch b/kodi-21.1-libnfs-6.0.2.patch new file mode 100644 index 0000000..f305b54 --- /dev/null +++ b/kodi-21.1-libnfs-6.0.2.patch @@ -0,0 +1,68 @@ +From 6b1d29cd25daf1fdfd27897b7d43f1b8756aa2bc Mon Sep 17 00:00:00 2001 +From: Stephan Sundermann +Date: Sun, 15 Dec 2024 04:03:03 +0100 +Subject: [PATCH] [depends] Update to libnfs 6.0.2 + +--- + tools/depends/target/libnfs/LIBNFS-VERSION | 4 ++-- + xbmc/filesystem/NFSFile.cpp | 14 ++++++++++++-- + 2 files changed, 14 insertions(+), 4 deletions(-) + +diff --git a/tools/depends/target/libnfs/LIBNFS-VERSION b/tools/depends/target/libnfs/LIBNFS-VERSION +index 892aa7afcfd48..699a31c70fcae 100644 +--- a/tools/depends/target/libnfs/LIBNFS-VERSION ++++ b/tools/depends/target/libnfs/LIBNFS-VERSION +@@ -1,6 +1,6 @@ + LIBNAME=libnfs +-VERSION=5.0.2 ++VERSION=6.0.2 + ARCHIVE=$(LIBNAME)-$(VERSION).tar.gz +-SHA512=6dcf4ea8a01b35beb53694625d20fbebd858a88725c2742671878ad6fe7877999f93d262fb58a435b00c283c3e6fb6fa7222d04bb4540bf674b7ce196e9424f5 ++SHA512=539790ab98aac7b2f25755b745d1f5e016518f1adb3748b8c58df187048bc31e091915d59e6359bb95c49dd986361cbbf2536edcda02598b0fac236762b61a46 + BYPRODUCT=libnfs.a + BYPRODUCT_WIN=nfs.lib +diff --git a/xbmc/filesystem/NFSFile.cpp b/xbmc/filesystem/NFSFile.cpp +index b96b2bc4fad4b..0dd311a694d16 100644 +--- a/xbmc/filesystem/NFSFile.cpp ++++ b/xbmc/filesystem/NFSFile.cpp +@@ -477,7 +477,11 @@ void CNfsConnection::keepAlive(const std::string& _exportPath, struct nfsfh* _pF + + nfs_lseek(pContext, _pFileHandle, 0, SEEK_CUR, &offset); + ++#ifdef LIBNFS_API_V2 ++ int bytes = nfs_read(pContext, _pFileHandle, buffer, sizeof(buffer)); ++#else + int bytes = nfs_read(pContext, _pFileHandle, 32, buffer); ++#endif + if (bytes < 0) + { + CLog::LogF(LOGERROR, "nfs_read - Error ({}, {})", bytes, nfs_get_error(pContext)); +@@ -741,9 +745,11 @@ ssize_t CNFSFile::Read(void *lpBuf, size_t uiBufSize) + + if (m_pFileHandle == NULL || m_pNfsContext == NULL ) + return -1; +- ++#ifdef LIBNFS_API_V2 ++ numberOfBytesRead = nfs_read(m_pNfsContext, m_pFileHandle, lpBuf, uiBufSize); ++#else + numberOfBytesRead = nfs_read(m_pNfsContext, m_pFileHandle, uiBufSize, (char *)lpBuf); +- ++#endif + lock.unlock(); //no need to keep the connection lock after that + + gNfsConnection.resetKeepAlive(m_exportPath, m_pFileHandle);//triggers keep alive timer reset for this filehandle +@@ -843,10 +849,14 @@ ssize_t CNFSFile::Write(const void* lpBuf, size_t uiBufSize) + } + //write chunk + //! @bug libnfs < 2.0.0 isn't const correct ++#ifdef LIBNFS_API_V2 ++ writtenBytes = nfs_write(m_pNfsContext, m_pFileHandle, lpBuf + numberOfBytesWritten, chunkSize); ++#else + writtenBytes = nfs_write(m_pNfsContext, + m_pFileHandle, + chunkSize, + const_cast((const char *)lpBuf) + numberOfBytesWritten); ++#endif + //decrease left bytes + leftBytes-= writtenBytes; + //increase overall written bytes diff --git a/kodi-21.1-libudev-256.patch b/kodi-21.1-libudev-256.patch new file mode 100644 index 0000000..a7fc557 --- /dev/null +++ b/kodi-21.1-libudev-256.patch @@ -0,0 +1,33 @@ +From 8a78c59791ba408c3f03e285b68f9afbac2658d8 Mon Sep 17 00:00:00 2001 +From: Rudi Heitbaum +Date: Wed, 12 Jun 2024 21:45:23 +0000 +Subject: [PATCH] PeripheralBusUSBLibUdev: fix assert issue with systemd udev + +do not call udev_device_get_parent(udev_device_get_parent(dev)) +directly as a null return on the parent will cause an assert in +udev_device_get_parent +--- + .../platform/linux/peripherals/PeripheralBusUSBLibUdev.cpp | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/xbmc/platform/linux/peripherals/PeripheralBusUSBLibUdev.cpp b/xbmc/platform/linux/peripherals/PeripheralBusUSBLibUdev.cpp +index aeb5e71d9f..3b649652c3 100644 +--- a/xbmc/platform/linux/peripherals/PeripheralBusUSBLibUdev.cpp ++++ b/xbmc/platform/linux/peripherals/PeripheralBusUSBLibUdev.cpp +@@ -108,7 +108,12 @@ bool CPeripheralBusUSB::PerformDeviceScan(PeripheralScanResults &results) + + if (bContinue) + { +- dev = udev_device_get_parent(udev_device_get_parent(parent)); ++ // do not call udev_device_get_parent(udev_device_get_parent(dev)) ++ // directly as a null return on the parent will cause an assert in ++ // udev_device_get_parent ++ dev = udev_device_get_parent(parent); ++ if (dev) ++ dev = udev_device_get_parent(dev); + if (!dev || !udev_device_get_sysattr_value(dev,"idVendor") || !udev_device_get_sysattr_value(dev, "idProduct")) + bContinue = false; + } +-- +2.43.0 + diff --git a/kodi-21.1-swig-4.3.0.patch b/kodi-21.1-swig-4.3.0.patch new file mode 100644 index 0000000..e87ead7 --- /dev/null +++ b/kodi-21.1-swig-4.3.0.patch @@ -0,0 +1,26 @@ +From 4ff0ba903bed472cddb0d6e5c53c8176cded6b09 Mon Sep 17 00:00:00 2001 +From: Rudi Heitbaum +Date: Mon, 21 Oct 2024 22:10:29 +1100 +Subject: [PATCH] [swig] Fix building with swig 4.3.0 + +swig 4.3.0 has dropped the -xmllang option used with -xml, which had no effect on the output. + +Ref: +- https://github.com/swig/swig/commit/86498e46c6a6218a3d091c12513c40076ac2ce63 +--- + xbmc/interfaces/swig/CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/xbmc/interfaces/swig/CMakeLists.txt b/xbmc/interfaces/swig/CMakeLists.txt +index 1951b2a336789..46c84c7f7efc5 100644 +--- a/xbmc/interfaces/swig/CMakeLists.txt ++++ b/xbmc/interfaces/swig/CMakeLists.txt +@@ -22,7 +22,7 @@ function(generate_file file) + + add_custom_command(OUTPUT ${CPP_FILE} + COMMAND ${SWIG_EXECUTABLE} +- ARGS -w401 -c++ -o ${file}.xml -xml -I${CMAKE_SOURCE_DIR}/xbmc -xmllang python ${CMAKE_CURRENT_SOURCE_DIR}/../swig/${file} ++ ARGS -w401 -c++ -o ${file}.xml -xml -I${CMAKE_SOURCE_DIR}/xbmc ${CMAKE_CURRENT_SOURCE_DIR}/../swig/${file} + COMMAND ${Java_JAVA_EXECUTABLE} + ARGS ${JAVA_OPEN_OPTS} -cp "${classpath}" groovy.ui.GroovyMain ${CMAKE_SOURCE_DIR}/tools/codegenerator/Generator.groovy ${file}.xml ${CMAKE_CURRENT_SOURCE_DIR}/../python/PythonSwig.cpp.template ${file}.cpp > ${devnull} + ${CLANG_FORMAT_COMMAND} diff --git a/kodi.spec b/kodi.spec index c1460ef..57cfc6f 100644 --- a/kodi.spec +++ b/kodi.spec @@ -25,7 +25,7 @@ Name: kodi Version: 21.1 -Release: 1mamba +Release: 3mamba Summary: A media player and entertainment hub for digital media Group: Graphical Desktop/Applications/Multimedia Vendor: openmamba @@ -43,8 +43,11 @@ Source7: https://mirrors.kodi.tv/build-deps/sources/flatbuffers-%{_flatbuf Source8: https://mirrors.kodi.tv/build-deps/sources/libudfread-%{_libudfread_version}.tar.gz Patch1: xbmc-12.0-set_native_cxxflags.patch Patch2: xbmc-12.0-relax_badcolordepth_check.patch +Patch3: kodi-21.1-ffmpeg-6-disable-nv-codec.patch +Patch4: kodi-21.1-libnfs-6.0.2.patch +Patch5: kodi-21.1-swig-4.3.0.patch +Patch6: kodi-21.1-libudev-256.patch License: GPL - ## AUTOBUILDREQ-BEGIN BuildRequires: glibc-devel BuildRequires: libX11-devel @@ -56,7 +59,6 @@ BuildRequires: libatomic-devel BuildRequires: libavahi-devel BuildRequires: libbluetooth-devel BuildRequires: libbluray-devel -BuildRequires: libbrotli-devel BuildRequires: libbzip2-devel BuildRequires: libcap-devel BuildRequires: libcdio-devel @@ -80,7 +82,7 @@ BuildRequires: libgnutls-devel BuildRequires: libharfbuzz-devel BuildRequires: libidn2-devel BuildRequires: libinput-devel -BuildRequires: libjpeg-devel +BuildRequires: libjpeg-turbo BuildRequires: liblcms2-devel BuildRequires: liblzma-devel BuildRequires: liblzo-devel @@ -117,12 +119,11 @@ BuildRequires: libxkbcommon-devel BuildRequires: libxml2-devel BuildRequires: libxslt-devel BuildRequires: libz-devel -BuildRequires: libzstd-devel BuildRequires: lirc-devel BuildRequires: trousers-devel ## AUTOBUILDREQ-END +BuildRequires: libspdlog-devel >= 0:1.15.0-1mamba BuildRequires: libdisplay-info-devel >= 0:0.2.0-1mamba -BuildRequires: libspdlog-devel >= 1.14.1-1mamba BuildRequires: doxygen BuildRequires: gperf BuildRequires: java-openjdk17 @@ -185,6 +186,8 @@ XBMC is an award-winning free and open source (GPL) software media player and en %debug_package +%global _lto_cflags %{nil} + %prep %setup -q -n xbmc-%{pkgver}%{?codenameadd} #-D -T @@ -195,6 +198,11 @@ XBMC is an award-winning free and open source (GPL) software media player and en %patch 2 -p1 %endif +%patch 3 -p1 +%patch 4 -p1 -b .libnfs-6.0.2 +%patch 5 -p1 -b .swig-4.3.0 +%patch 6 -p1 -b .libudev-256 + %build export JAVA_HOME=%{jvmdir}/java-17 #:<< ___EOF @@ -296,6 +304,12 @@ fi %doc README.md %changelog +* Wed Dec 25 2024 Silvan Calarco 21.1-3mamba +- patch to fix assert in libudev >= 256 ( https://github.com/LibreELEC/LibreELEC.tv/pull/8982 ) + +* Sun Dec 22 2024 Automatic Build System 21.1-2mamba +- rebuilt by autoport with build requirements: libspdlog-devel>=0:1.15.0-1mamba + * Tue Sep 03 2024 Automatic Build System 21.1-1mamba - automatic version update by autodist