summary refs log tree commit diff
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2022-12-31 00:55:43 +0100
committerRicardo Wurmus <rekado@elephly.net>2022-12-31 00:55:43 +0100
commitdbd9305a5682b1c5cd0b2a516b09f1f3af47209d (patch)
tree45522c2fb73d2eb6a940d65d6076bb52be61f00e
parent01a2b3cce618b3b3ecb8431bba54747fe2b3377f (diff)
downloadguix-dbd9305a5682b1c5cd0b2a516b09f1f3af47209d.tar.gz
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.
-rw-r--r--gnu/local.mk2
-rw-r--r--gnu/packages/kodi.scm231
-rw-r--r--gnu/packages/patches/kodi-increase-test-timeout.patch18
-rw-r--r--gnu/packages/patches/kodi-set-libcurl-ssl-parameters.patch13
-rw-r--r--gnu/packages/patches/kodi-skip-test-449.patch53
5 files changed, 129 insertions, 188 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 7c7b5c12bd..f0b1b3fd15 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -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		\
diff --git a/gnu/packages/kodi.scm b/gnu/packages/kodi.scm
index 18791359f2..c43f812ece 100644
--- a/gnu/packages/kodi.scm
+++ b/gnu/packages/kodi.scm
@@ -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 @@
   #: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 @@
   #: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 @@ alternatives. In compilers, this can reduce the cascade of secondary errors.")
 (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 @@ alternatives. In compilers, this can reduce the cascade of secondary errors.")
          ;; 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 @@ alternatives. In compilers, this can reduce the cascade of secondary errors.")
              ;; 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 @@ alternatives. In compilers, this can reduce the cascade of secondary errors.")
     ;; - 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 @@ plug-in system.")
     ;; 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 @@ plug-in system.")
     (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
diff --git a/gnu/packages/patches/kodi-increase-test-timeout.patch b/gnu/packages/patches/kodi-increase-test-timeout.patch
deleted file mode 100644
index 8fb149ff9d..0000000000
--- a/gnu/packages/patches/kodi-increase-test-timeout.patch
+++ /dev/null
@@ -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);
diff --git a/gnu/packages/patches/kodi-set-libcurl-ssl-parameters.patch b/gnu/packages/patches/kodi-set-libcurl-ssl-parameters.patch
index 2f60737e30..99d8a45de6 100644
--- a/gnu/packages/patches/kodi-set-libcurl-ssl-parameters.patch
+++ b/gnu/packages/patches/kodi-set-libcurl-ssl-parameters.patch
@@ -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);
diff --git a/gnu/packages/patches/kodi-skip-test-449.patch b/gnu/packages/patches/kodi-skip-test-449.patch
deleted file mode 100644
index a418239a7c..0000000000
--- a/gnu/packages/patches/kodi-skip-test-449.patch
+++ /dev/null
@@ -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
-