gnu: kodi: Update to 19.5.

* gnu/packages/kodi.scm (kodi): Update to 19.5.
[source]: Remove obsolete patches; delete bundled jars.
[arguments]: Update configure flags; adjust build phase 'patch-stuff to use
Groovy from Guix; adjust file names; remove obsolete substitutions; disable
TestCPUInfo.GetCPUFrequency test; remove trailing #T from build phases.
[native-inputs]: Drop input labels; add googletest, groovy, openjdk9, and
java-commons-lang; remove icedtea.
[inputs]: Add spdlog-for-kodi; replace fmt-7 with fmt-6 (for spdlog).
(kodi/wayland)[arguments]: Adjust configure flags.
[inputs]: Use modify-inputs.
* gnu/local.mk (dist_patch_DATA): Remove obsolete patches.
* gnu/packages/patches/kodi-set-libcurl-ssl-parameters.patch: Adjust.
* gnu/packages/patches/kodi-increase-test-timeout.patch: Remove file.
* gnu/packages/patches/kodi-skip-test-449.patch: Remove file.
This commit is contained in:
Ricardo Wurmus 2022-12-31 00:55:43 +01:00
parent 01a2b3cce6
commit dbd9305a56
No known key found for this signature in database
GPG key ID: 197A5888235FACAC
5 changed files with 129 additions and 188 deletions

View file

@ -1398,9 +1398,7 @@ dist_patch_DATA = \
%D%/packages/patches/kobodeluxe-manpage-minus-not-hyphen.patch \
%D%/packages/patches/kobodeluxe-midicon-segmentation-fault.patch \
%D%/packages/patches/kobodeluxe-graphics-window-signed-char.patch \
%D%/packages/patches/kodi-increase-test-timeout.patch \
%D%/packages/patches/kodi-set-libcurl-ssl-parameters.patch \
%D%/packages/patches/kodi-skip-test-449.patch \
%D%/packages/patches/kwayland-skip-flaky-test.patch \
%D%/packages/patches/laby-make-install.patch \
%D%/packages/patches/ldns-drill-examples.patch \

View file

@ -6,6 +6,7 @@
;;; Copyright © 2018, 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2021 Greg Hogan <code@greghogan.com>
;;; Copyright © 2022 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -39,6 +40,7 @@ (define-module (gnu packages kodi)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages cdrom)
#:use-module (gnu packages check)
#:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
#:use-module (gnu packages curl)
@ -55,12 +57,14 @@ (define-module (gnu packages kodi)
#:use-module (gnu packages glib)
#:use-module (gnu packages gperf)
#:use-module (gnu packages groff)
#:use-module (gnu packages groovy)
#:use-module (gnu packages gnunet)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages image)
#:use-module (gnu packages java)
#:use-module (gnu packages libusb)
#:use-module (gnu packages linux)
#:use-module (gnu packages logging)
#:use-module (gnu packages mp3)
#:use-module (gnu packages pcre)
#:use-module (gnu packages pkg-config)
@ -270,43 +274,40 @@ (define-public fstrcmp
(define-public kodi
(package
(name "kodi")
(version "18.8")
(version "19.5")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/xbmc/xbmc")
(commit (string-append version "-Leia"))))
(commit (string-append version "-Matrix"))))
(file-name (git-file-name name version))
(sha256
(base32
"0qpkpz43s207msvv3qkiy6vzqwcgmydxv3py7vc29mv6h30chrva"))
(patches (search-patches "kodi-skip-test-449.patch"
"kodi-increase-test-timeout.patch"
"kodi-set-libcurl-ssl-parameters.patch"))
"1pfd1ajivr865h0fkpbv778626c4czrvq8650bzqv9aqzh8f36my"))
(patches (search-patches "kodi-set-libcurl-ssl-parameters.patch"))
(modules '((guix build utils)))
(snippet
'(begin
(use-modules (guix build utils))
(for-each delete-file-recursively
'("project/BuildDependencies/"
;; TODO: Purge these jars.
;;"tools/codegenerator/groovy"
;; And these sources:
"tools/codegenerator/groovy/commons-lang-2.6.jar"
"tools/codegenerator/groovy/groovy-all-2.4.4.jar"
;; Purge these sources:
;; "tools/depend/native/JsonSchemaBuilder"
;; "tools/depend/native/TexturePacker"
;; "lib/gtest"
;; "lib/cpluff"
;; "lib/libUPnP"
"lib/libUPnP/Neptune/ThirdParty"
"project/Win32BuildSetup/tools/7z"))
#t))
(modules '((guix build utils)))))
"project/Win32BuildSetup/tools/7z"))))))
(build-system cmake-build-system)
(arguments
'(#:modules ((srfi srfi-1)
(guix build cmake-build-system)
(guix build utils))
#:configure-flags
(list "-DENABLE_INTERNAL_FFMPEG=OFF"
(list "-DCORE_PLATFORM_NAME=x11"
"-DAPP_RENDER_SYSTEM=gl"
"-DENABLE_INTERNAL_FFMPEG=OFF"
"-DENABLE_INTERNAL_CROSSGUID=OFF"
(string-append "-Dlibdvdread_URL="
(assoc-ref %build-inputs "libdvdread-bootstrapped"))
@ -324,28 +325,36 @@ (define-public kodi
;; bootstrap it on our own instead.
(add-after 'unpack 'bootstrap-bundled-software
(lambda _
(let ((dirs '("tools/depends/native/JsonSchemaBuilder/src"
"lib/cpluff")))
(let ((dirs '("tools/depends/native/JsonSchemaBuilder/src")))
(every (lambda (third-party)
(with-directory-excursion third-party
(invoke "autoreconf" "-vif")))
dirs))))
(add-after 'bootstrap-bundled-software 'patch-stuff
(lambda* (#:key inputs #:allow-other-keys)
;; Run groovy executable directly.
(substitute* "xbmc/interfaces/swig/CMakeLists.txt"
(("COMMAND \\$\\{Java_JAVA_EXECUTABLE\\}")
"COMMAND groovy")
(("ARGS \\$\\{JAVA_OPEN_OPTS\\} -cp \"\\$\\{classpath\\}\" groovy.ui.GroovyMain")
"ARGS -cp \"${classpath}\" ")
(("classpath \\$\\{GROOVY_DIR\\}/groovy-all-\\$\\{GROOVY_VER\\}.jar")
"classpath ")
(("\\$\\{GROOVY_DIR\\}/commons-lang-\\$\\{COMMONS_VER\\}.jar")
(search-input-file inputs "/share/java/commons-lang-2.6.jar"))
(("^set\\(GROOVY_VER.*")
(string-append "set(GROOVY_VER 3.0.5)\n")))
;; Prevent the build scripts from calling autoreconf in the
;; build stage. Otherwise, it would undo the bootstrapping
;; and shebang patching that we worked so hard for.
(substitute* "cmake/modules/FindCpluff.cmake"
(("autoreconf -vif") "true"))
(substitute* "lib/cpluff/po/Makefile.in.in"
(("/bin/sh") (which "sh")))
(substitute* "cmake/modules/FindLibDvd.cmake"
;; The libdvd* sources that we bootstrapped separately are
;; unpacked in the build phase. This is our best opportunity
;; to make them writable before the build process starts.
(("autoreconf -vif") "chmod -R u+w ."))
(substitute* "xbmc/platform/linux/LinuxTimezone.cpp"
(substitute* "xbmc/platform/posix/PosixTimezone.cpp"
(("/usr/share/zoneinfo")
(search-input-directory inputs "share/zoneinfo")))
@ -357,20 +366,21 @@ (define-public kodi
;; Let's disable some tests that are known not to work here.
;; Doing this later while in the cmake "../build" directory
;; is trickier.
(substitute* '("xbmc/utils/test/TestSystemInfo.cpp")
(substitute* "xbmc/utils/test/TestSystemInfo.cpp"
(("TEST_F\\(TestSystemInfo, GetOsPrettyNameWithVersion\\)")
"TEST_F(TestSystemInfo, DISABLED_GetOsPrettyNameWithVersion)")
(("TEST_F\\(TestSystemInfo, GetOsName\\)")
"TEST_F(TestSystemInfo, DISABLED_GetOsName)")
(("TEST_F\\(TestSystemInfo, GetOsVersion\\)")
"TEST_F(TestSystemInfo, DISABLED_GetOsVersion)"))
#t))
(substitute* "xbmc/utils/test/TestCPUInfo.cpp"
(("TEST_F\\(TestCPUInfo, GetCPUFrequency\\)")
"TEST_F(TestCPUInfo, DISABLED_GetCPUFrequency)"))))
(add-before 'build 'set-build-environment
(lambda _
;; Some bundled build scripts fall back to /bin/sh
;; if this is not set.
(setenv "CONFIG_SHELL" (which "sh"))
#t))
(setenv "CONFIG_SHELL" (which "sh"))))
(add-before 'check 'build-kodi-test
(lambda _
(invoke "make" "kodi-test"))))))
@ -379,77 +389,81 @@ (define-public kodi
;; - plist
;; - shairplay
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
("gettext" ,gettext-minimal)
("icedtea" ,icedtea) ; needed at build-time only, mandatory
("libdvdcss-bootstrapped" ,libdvdcss/kodi)
("libdvdnav-bootstrapped" ,libdvdnav/kodi)
("libdvdread-bootstrapped" ,libdvdread/kodi)
("libtool" ,libtool)
("pkg-config" ,pkg-config)
("swig" ,swig)
("yasm" ,yasm)))
(list autoconf
automake
gettext-minimal
googletest
groovy
openjdk9 ;like groovy
java-commons-lang
libdvdcss/kodi
libdvdnav/kodi
libdvdread/kodi
libtool
pkg-config
swig
yasm))
(inputs
`(("alsa-lib" ,alsa-lib)
("avahi" ,avahi)
("bluez" ,bluez)
("crossguid" ,crossguid)
("curl" ,curl)
("dcadec" ,dcadec)
("dbus" ,dbus)
("eudev" ,eudev)
("ffmpeg" ,ffmpeg-4)
("flac" ,flac)
("flatbuffers" ,flatbuffers)
("fmt" ,fmt-7)
("fontconfig" ,fontconfig)
("freetype" ,freetype)
("fribidi" ,fribidi)
("fstrcmp" ,fstrcmp)
("giflib" ,giflib)
("glew" ,glew)
("gnutls" ,gnutls)
("lame" ,lame)
("lcms" ,lcms)
("libass" ,libass)
("libbluray" ,libbluray)
("libcap" ,libcap)
("libcdio" ,libcdio)
("libdrm" ,libdrm)
("libgcrypt" ,libgcrypt)
("libjpeg" ,libjpeg-turbo)
("libltdl" ,libltdl)
("libmad" ,libmad)
("libmicrohttpd" ,libmicrohttpd)
("libmpeg2" ,libmpeg2)
("libnfs" ,libnfs)
("libogg" ,libogg)
("libpng" ,libpng)
("libssh" ,libssh)
("libtiff" ,libtiff)
("libva" ,libva)
("libvorbis" ,libvorbis)
("libxml2" ,libxml2)
("libxrandr" ,libxrandr)
("libxrender" ,libxrender)
("libxslt" ,libxslt)
("lzo" ,lzo)
("mariadb-dev" ,mariadb "lib")
("mariadb-dev" ,mariadb "dev")
("openssl" ,openssl)
("pcre" ,pcre)
("pulseaudio" ,pulseaudio)
("python" ,python-2)
("rapidjson" ,rapidjson)
("samba" ,samba)
("sqlite" ,sqlite)
("taglib" ,taglib)
("tinyxml" ,tinyxml)
("tzdata" ,tzdata)
("util-linux" ,util-linux)
("zip" ,zip)
("zlib" ,zlib)))
(list alsa-lib
avahi
bluez
crossguid
curl
dcadec
dbus
eudev
ffmpeg-4
flac
flatbuffers
fmt-6
fontconfig
freetype
fribidi
fstrcmp
giflib
glew
gnutls
lame
lcms
libass
libbluray
libcap
libcdio
libdrm
libgcrypt
libjpeg-turbo
libltdl
libmad
libmicrohttpd
libmpeg2
libnfs
libogg
libpng
libssh
libtiff
libva
libvorbis
libxml2
libxrandr
libxrender
libxslt
lzo
(list mariadb "lib")
(list mariadb "dev")
openssl
pcre
pulseaudio
python
rapidjson
samba
spdlog-for-kodi
sqlite
taglib
tinyxml
tzdata
util-linux
zip
zlib))
(synopsis "Media center for home theater computers")
(description "Kodi is a media center application for playing videos,
music, games, etc. Kodi is highly customizable and features a theme and
@ -458,11 +472,11 @@ (define-public kodi
;; XBMC is largely GPL2+, with some library components as LGPL2.1+, but
;; there are some other licenses spread throughout.
(license (list license:gpl2+ license:lgpl2.1+
license:gpl3+ ;WiiRemote client
license:expat ;cpluff, dbwrappers
license:public-domain ;cpluff/examples
license:bsd-3 ;misc, gtest
license:bsd-2)))) ;xbmc/freebsd
license:gpl3+ ;WiiRemote client
license:expat ;cpluff, dbwrappers
license:public-domain ;cpluff/examples
license:bsd-3 ;misc
license:bsd-2)))) ;xbmc/freebsd
(define-public kodi/wayland
(package/inherit kodi
@ -470,15 +484,14 @@ (define-public kodi/wayland
(arguments
(substitute-keyword-arguments (package-arguments kodi)
((#:configure-flags flags)
`(append '("-DCORE_PLATFORM_NAME=wayland"
"-DWAYLAND_RENDER_SYSTEM=gl")
,flags))))
`(cons "-DCORE_PLATFORM_NAME=wayland"
(delete "-DCORE_PLATFORM_NAME=x11" ,flags)))))
(inputs
`(("libinput" ,libinput)
("libxkbcommon" ,libxkbcommon)
("waylandpp" ,waylandpp)
("waylandp-protocols" ,wayland-protocols)
,@(package-inputs kodi)))
(modify-inputs (package-input kodi)
(prepend (list libinput
libxkbcommon
waylandpp
wayland-protocols))))
(synopsis "Kodi with Wayland rendering backend")))
(define-public kodi-cli

View file

@ -1,18 +0,0 @@
Increase thread timeout to reduce flakiness.
Taken from upstream:
https://github.com/xbmc/xbmc/commit/574b0182d8b641fd24029f372ebdcccc897123e2
diff --git a/xbmc/threads/test/TestEvent.cpp b/xbmc/threads/test/TestEvent.cpp
index 42fb8c2fc609..40e644c0ed3c 100644
--- a/xbmc/threads/test/TestEvent.cpp
+++ b/xbmc/threads/test/TestEvent.cpp
@@ -484,7 +484,7 @@ TEST(TestEvent, GroupTimedWait)
EXPECT_TRUE(w3.result == NULL);
// this should end given the wait is for only 50 millis
- EXPECT_TRUE(waitThread3.timed_join(MILLIS(100)));
+ EXPECT_TRUE(waitThread3.timed_join(MILLIS(200)));
EXPECT_TRUE(!w3.waiting);
EXPECT_TRUE(w3.result == NULL);

View file

@ -3,15 +3,16 @@ connections work we can set them based on SSL_CERT_DIR and SSL_CERT_FILE.
--- a/xbmc/filesystem/CurlFile.cpp
+++ b/xbmc/filesystem/CurlFile.cpp
@@ -626,5 +626,9 @@
@@ -626,8 +626,12 @@
if (!m_cipherlist.empty())
g_curlInterface.easy_setopt(h, CURLOPT_SSL_CIPHER_LIST, m_cipherlist.c_str());
+ // Load certificate data from environment paths
+ g_curlInterface.easy_setopt(m_state->m_easyHandle, CURLOPT_CAPATH, getenv("SSL_CERT_DIR"));
+ g_curlInterface.easy_setopt(m_state->m_easyHandle, CURLOPT_CAINFO, getenv("SSL_CERT_FILE"));
+
// enable HTTP2 support. default: CURL_HTTP_VERSION_1_1. Curl >= 7.62.0 defaults to CURL_HTTP_VERSION_2TLS
g_curlInterface.easy_setopt(h, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
-
}
if (CServiceBroker::GetSettingsComponent()->GetAdvancedSettings()->m_curlDisableHTTP2)
g_curlInterface.easy_setopt(h, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
else
// enable HTTP2 support. default: CURL_HTTP_VERSION_1_1. Curl >= 7.62.0 defaults to CURL_HTTP_VERSION_2TLS
g_curlInterface.easy_setopt(h, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2TLS);

View file

@ -1,53 +0,0 @@
This test fails regularly between 18.0rc3 and 18.0rc5.2
449/520 Test #449: TestWebServer.CanHeadFile................................................***Failed 0.90 sec
Note: Google Test filter = TestWebServer.CanHeadFile
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from TestWebServer
[ RUN ] TestWebServer.CanHeadFile
/tmp/guix-build-kodi-18.0rc5.2.drv-0/kodi-18.0rc5.2-checkout/xbmc/network/test/TestWebServer.cpp:156: Failure
Expected: "4"
To be equal to: httpHeader.GetValue("Content-Length").c_str()
Which is: "0"
[ FAILED ] TestWebServer.CanHeadFile (6 ms)
[----------] 1 test from TestWebServer (6 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (635 ms total)
[ PASSED ] 0 tests.
[ FAILED ] 1 test, listed below:
[ FAILED ] TestWebServer.CanHeadFile
---
xbmc/network/test/TestWebServer.cpp | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/xbmc/network/test/TestWebServer.cpp b/xbmc/network/test/TestWebServer.cpp
index a87d9f4..b2240f4 100644
--- a/xbmc/network/test/TestWebServer.cpp
+++ b/xbmc/network/test/TestWebServer.cpp
@@ -520,13 +520,13 @@ TEST_F(TestWebServer, CanNotHeadNonExistingFile)
ASSERT_FALSE(curl.Exists(CURL(GetUrlOfTestFile("file_does_not_exist"))));
}
-TEST_F(TestWebServer, CanHeadFile)
-{
- CCurlFile curl;
- ASSERT_TRUE(curl.Exists(CURL(GetUrlOfTestFile(TEST_FILES_HTML))));
-
- CheckHtmlTestFileResponse(curl);
-}
+//TEST_F(TestWebServer, CanHeadFile)
+//{
+// CCurlFile curl;
+// ASSERT_TRUE(curl.Exists(CURL(GetUrlOfTestFile(TEST_FILES_HTML))));
+//
+// CheckHtmlTestFileResponse(curl);
+//}
TEST_F(TestWebServer, CanNotGetNonExistingFile)
{
--
2.20.1