Subject: bug#45572: elisa fails to build

From: Leo Famulari <[email-masked]>
Date: Thu, 31 Dec 2020 13:45:09 -0500

While testing some updates, I noticed that the Elisa package is failing
to build:

------
[ 73%] Building CXX object autotests/CMakeFiles/mediaplaylistTest.dir/mediaplaylisttest.cpp.o
cd /tmp/guix-build-elisa-0.4.2.drv-0/build/autotests && /gnu/store/rn75fm7adgx3pw5j8pg3bczfqq1y17lk-gcc-7.5.0/bin/c++  -DKCOREADDONS_LIB -DKF_DEPRECATED_WARNINGS_SINCE=0x060000 -DQT_CONCURRENT_LIB -DQT_CORE_LIB -DQT_DBUS_LIB -DQT_DEPRECATED_WARNINGS_SINCE=0x060000 -DQT_GUI_LIB -DQT_MULTIMEDIA_LIB -DQT_NETWORK_LIB -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_FROM_BYTEARRAY -DQT_NO_CAST_TO_ASCII -DQT_NO_DEBUG -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_SIGNALS_SLOTS_KEYWORDS -DQT_NO_URL_CAST_FROM_STRING -DQT_STRICT_ITERATORS -DQT_TESTCASE_BUILDDIR=\"/tmp/guix-build-elisa-0.4.2.drv-0/build\" -DQT_TESTLIB_LIB -DQT_USE_QSTRINGBUILDER -DQT_WIDGETS_LIB -DQT_XML_LIB -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -I/tmp/guix-build-elisa-0.4.2.drv-0/build/autotests -I/tmp/guix-build-elisa-0.4.2.drv-0/elisa-0.4.2/autotests -I/tmp/guix-build-elisa-0.4.2.drv-0/build/autotests/mediaplaylistTest_autogen/include -I/tmp/guix-build-elisa-0.4.2.drv-0/build -I/tmp/guix-build-elisa-0.4.2.drv-0/build/src -I/tmp/guix-build-elisa-0.4.2.drv-0/elisa-0.4.2/src -isystem /gnu/store/qylisyh4cz32askxl5640qjhl47kr1wp-qtbase-5.14.2/include/qt5 -isystem /gnu/store/qylisyh4cz32askxl5640qjhl47kr1wp-qtbase-5.14.2/include/qt5/QtTest -isystem /gnu/store/qylisyh4cz32askxl5640qjhl47kr1wp-qtbase-5.14.2/include/qt5/QtCore -isystem /gnu/store/qylisyh4cz32askxl5640qjhl47kr1wp-qtbase-5.14.2/lib/qt5/mkspecs/linux-g++ -isystem /gnu/store/420avh642yhwpi37lh0s3hgvr4gd2a5z-qtmultimedia-5.14.2/include/qt5 -isystem /gnu/store/420avh642yhwpi37lh0s3hgvr4gd2a5z-qtmultimedia-5.14.2/include/qt5/QtMultimedia -isystem /gnu/store/qylisyh4cz32askxl5640qjhl47kr1wp-qtbase-5.14.2/include/qt5/QtNetwork -isystem /gnu/store/qylisyh4cz32askxl5640qjhl47kr1wp-qtbase-5.14.2/include/qt5/QtGui -isystem /gnu/store/047g9srhk3mmyd7ddigg5shp0h7mw5h7-kio-5.70.1/include/KF5/KIOCore -isystem /gnu/store/047g9srhk3mmyd7ddigg5shp0h7mw5h7-kio-5.70.1/include/KF5 -isystem /gnu/store/cvj2vjqpmfqar65dags74yzdvjc6jzr8-kcoreaddons-5.70.0/include/KF5/KCoreAddons -isystem /gnu/store/cvj2vjqpmfqar65dags74yzdvjc6jzr8-kcoreaddons-5.70.0/include/KF5 -isystem /gnu/store/71bmdnv3lwcc6q73yxzl3nmx6q534a4l-kservice-5.70.0/include/KF5/KService -isystem /gnu/store/71bmdnv3lwcc6q73yxzl3nmx6q534a4l-kservice-5.70.0/include/KF5 -isystem /gnu/store/xrd0045nianyi0xpr6kgvmdxz9yml90f-kconfig-5.70.0/include/KF5/KConfigCore -isystem /gnu/store/xrd0045nianyi0xpr6kgvmdxz9yml90f-kconfig-5.70.0/include/KF5 -isystem /gnu/store/qylisyh4cz32askxl5640qjhl47kr1wp-qtbase-5.14.2/include/qt5/QtConcurrent -isystem /gnu/store/qylisyh4cz32askxl5640qjhl47kr1wp-qtbase-5.14.2/include/qt5/QtDBus -isystem /gnu/store/047g9srhk3mmyd7ddigg5shp0h7mw5h7-kio-5.70.1/include/KF5/KIOFileWidgets -isystem /gnu/store/047g9srhk3mmyd7ddigg5shp0h7mw5h7-kio-5.70.1/include/KF5/KIOWidgets -isystem /gnu/store/047g9srhk3mmyd7ddigg5shp0h7mw5h7-kio-5.70.1/include/KF5/KIOGui -isystem /gnu/store/jf8gdil596rljss523cq4z3cm0msl60s-kwindowsystem-5.70.0/include/KF5/KWindowSystem -isystem /gnu/store/jf8gdil596rljss523cq4z3cm0msl60s-kwindowsystem-5.70.0/include/KF5 -isystem /gnu/store/qylisyh4cz32askxl5640qjhl47kr1wp-qtbase-5.14.2/include/qt5/QtWidgets -isystem /gnu/store/dpcbjbw95a260115q582064n9bqm60gi-kjobwidgets-5.70.0/include/KF5/KJobWidgets -isystem /gnu/store/dpcbjbw95a260115q582064n9bqm60gi-kjobwidgets-5.70.0/include/KF5 -isystem /gnu/store/jvngbmp43991gyiwslv7acqirqx4s80g-kcompletion-5.70.0/include/KF5/KCompletion -isystem /gnu/store/jvngbmp43991gyiwslv7acqirqx4s80g-kcompletion-5.70.0/include/KF5 -isystem /gnu/store/vxr8ial9ja2dy32q9q0p3x64pg5fhfi0-kwidgetsaddons-5.70.0/include/KF5/KWidgetsAddons -isystem /gnu/store/vxr8ial9ja2dy32q9q0p3x64pg5fhfi0-kwidgetsaddons-5.70.0/include/KF5 -isystem /gnu/store/j00bn8l53yhdal6dkpx78f9kp516fdw9-kbookmarks-5.70.0/include/KF5/KBookmarks -isystem /gnu/store/j00bn8l53yhdal6dkpx78f9kp516fdw9-kbookmarks-5.70.0/include/KF5 -isystem /gnu/store/qylisyh4cz32askxl5640qjhl47kr1wp-qtbase-5.14.2/include/qt5/QtXml -isystem /gnu/store/2gm9rzlkp8nh7abk833ff2qn96di5dck-kitemviews-5.70.0/include/KF5/KItemViews -isystem /gnu/store/2gm9rzlkp8nh7abk833ff2qn96di5dck-kitemviews-5.70.0/include/KF5 -isystem /gnu/store/87g5n8mv64b69plrd4zx601d1jvks57x-kxmlgui-5.70.0/include/KF5/KXmlGui -isystem /gnu/store/87g5n8mv64b69plrd4zx601d1jvks57x-kxmlgui-5.70.0/include/KF5 -isystem /gnu/store/z89cryq00d2j419yrasbsgn9x913q6cy-kconfigwidgets-5.70.0/include/KF5/KConfigWidgets -isystem /gnu/store/z89cryq00d2j419yrasbsgn9x913q6cy-kconfigwidgets-5.70.0/include/KF5 -isystem /gnu/store/akfl9n3mvsw885q6rw4bilfld7i1dkn2-kcodecs-5.70.0/include/KF5/KCodecs -isystem /gnu/store/akfl9n3mvsw885q6rw4bilfld7i1dkn2-kcodecs-5.70.0/include/KF5 -isystem /gnu/store/xrd0045nianyi0xpr6kgvmdxz9yml90f-kconfig-5.70.0/include/KF5/KConfigGui -isystem /gnu/store/b30frg6f8vj17qzfky4ffyllwrpd0grq-kauth-5.70.0/include/KF5/KAuth -isystem /gnu/store/b30frg6f8vj17qzfky4ffyllwrpd0grq-kauth-5.70.0/include/KF5 -isystem /gnu/store/p147d8rin479b7by0495qdq03yz5rzrm-solid-5.70.0/include/KF5/Solid -isystem /gnu/store/p147d8rin479b7by0495qdq03yz5rzrm-solid-5.70.0/include/KF5 -isystem /gnu/store/lsjli7nmq60814qci8sy05vkwl1i7d3q-kcmutils-5.70.0/include/KF5/KCMUtils -isystem /gnu/store/lsjli7nmq60814qci8sy05vkwl1i7d3q-kcmutils-5.70.0/include/KF5 -isystem /gnu/store/0s956ybpsvbz4k7gvri5vh3rfvasllw0-baloo-5.70.0/include/KF5/Baloo -isystem /gnu/store/0s956ybpsvbz4k7gvri5vh3rfvasllw0-baloo-5.70.0/include/KF5 -isystem /gnu/store/yd46yshz0gkyvl3j0rhbj8jsh4r6ifmg-kfilemetadata-5.70.0/include/KF5/KFileMetaData -isystem /gnu/store/yd46yshz0gkyvl3j0rhbj8jsh4r6ifmg-kfilemetadata-5.70.0/include/KF5 -isystem /gnu/store/301qcal7s9r22m65g30jnxs8505ln3z7-kdbusaddons-5.70.0/include/KF5/KDBusAddons -isystem /gnu/store/301qcal7s9r22m65g30jnxs8505ln3z7-kdbusaddons-5.70.0/include/KF5 -isystem /gnu/store/qylisyh4cz32askxl5640qjhl47kr1wp-qtbase-5.14.2/include/qt5/QtCore/5.14.2 -isystem /gnu/store/qylisyh4cz32askxl5640qjhl47kr1wp-qtbase-5.14.2/include/qt5/QtCore/5.14.2/QtCore  -fno-exceptions -Wall -Wextra -Wcast-align -Wchar-subscripts -Wformat-security -Wno-long-long -Wpointer-arith -Wundef -Wnon-virtual-dtor -Woverloaded-virtual -Werror=return-type -Wvla -Wdate-time -Wsuggest-override -Wlogical-op -pedantic -Wzero-as-null-pointer-constant -O2 -g -DNDEBUG -fvisibility=hidden -fvisibility-inlines-hidden   -fPIC -std=gnu++1z -o CMakeFiles/mediaplaylistTest.dir/mediaplaylisttest.cpp.o -c /tmp/guix-build-elisa-0.4.2.drv-0/elisa-0.4.2/autotests/mediaplaylisttest.cpp
In file included from /gnu/store/qylisyh4cz32askxl5640qjhl47kr1wp-qtbase-5.14.2/include/qt5/QtTest/qtest.h:45:0,
                 from /gnu/store/qylisyh4cz32askxl5640qjhl47kr1wp-qtbase-5.14.2/include/qt5/QtTest/QtTest:11,
                 from /tmp/guix-build-elisa-0.4.2.drv-0/elisa-0.4.2/autotests/mediaplaylisttest.cpp:27:
/tmp/guix-build-elisa-0.4.2.drv-0/elisa-0.4.2/autotests/mediaplaylisttest.cpp: In member function ‘void MediaPlayListTest::restoreTrackWithoutAlbum()’:
/tmp/guix-build-elisa-0.4.2.drv-0/elisa-0.4.2/autotests/mediaplaylisttest.cpp:3048:5: error: call of overloaded ‘qCompare(QString, <brace-enclosed initializer list>, const char [77], const char [3], const char [78], int)’ is ambiguous
     QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::AlbumRole).toString(), {});
     ^
In file included from /gnu/store/qylisyh4cz32askxl5640qjhl47kr1wp-qtbase-5.14.2/include/qt5/QtTest/qtest.h:45:0,
                 from /gnu/store/qylisyh4cz32askxl5640qjhl47kr1wp-qtbase-5.14.2/include/qt5/QtTest/QtTest:11,
                 from /tmp/guix-build-elisa-0.4.2.drv-0/elisa-0.4.2/autotests/mediaplaylisttest.cpp:27:
/gnu/store/qylisyh4cz32askxl5640qjhl47kr1wp-qtbase-5.14.2/include/qt5/QtTest/qtestcase.h:349:17: note: candidate: bool QTest::qCompare(const T&, const T&, const char*, const char*, const char*, int) [with T = QString]
     inline bool qCompare(T const &t1, T const &t2, const char *actual, const char *expected,
                 ^~~~~~~~
/gnu/store/qylisyh4cz32askxl5640qjhl47kr1wp-qtbase-5.14.2/include/qt5/QtTest/qtestcase.h:372:27: note: candidate: bool QTest::qCompare(QStringView, QStringView, const char*, const char*, const char*, int)
     Q_TESTLIB_EXPORT bool qCompare(QStringView t1, QStringView t2,
                           ^~~~~~~~
/gnu/store/qylisyh4cz32askxl5640qjhl47kr1wp-qtbase-5.14.2/include/qt5/QtTest/qtestcase.h:375:27: note: candidate: bool QTest::qCompare(QStringView, const QLatin1String&, const char*, const char*, const char*, int)
     Q_TESTLIB_EXPORT bool qCompare(QStringView t1, const QLatin1String &t2,
                           ^~~~~~~~
/gnu/store/qylisyh4cz32askxl5640qjhl47kr1wp-qtbase-5.14.2/include/qt5/QtTest/qtestcase.h:381:17: note: candidate: bool QTest::qCompare(const QString&, const QString&, const char*, const char*, const char*, int)
     inline bool qCompare(const QString &t1, const QString &t2,
                 ^~~~~~~~
/gnu/store/qylisyh4cz32askxl5640qjhl47kr1wp-qtbase-5.14.2/include/qt5/QtTest/qtestcase.h:387:17: note: candidate: bool QTest::qCompare(const QString&, const QLatin1String&, const char*, const char*, const char*, int)
     inline bool qCompare(const QString &t1, const QLatin1String &t2,
                 ^~~~~~~~
In file included from /gnu/store/qylisyh4cz32askxl5640qjhl47kr1wp-qtbase-5.14.2/include/qt5/QtTest/qtest_widgets.h:51:0,
                 from /gnu/store/qylisyh4cz32askxl5640qjhl47kr1wp-qtbase-5.14.2/include/qt5/QtTest/qtest.h:462,
                 from /gnu/store/qylisyh4cz32askxl5640qjhl47kr1wp-qtbase-5.14.2/include/qt5/QtTest/QtTest:11,
                 from /tmp/guix-build-elisa-0.4.2.drv-0/elisa-0.4.2/autotests/mediaplaylisttest.cpp:27:
/gnu/store/qylisyh4cz32askxl5640qjhl47kr1wp-qtbase-5.14.2/include/qt5/QtTest/qtest_gui.h:192:13: note: candidate: bool QTest::qCompare(const QPixmap&, const QPixmap&, const char*, const char*, const char*, int)
 inline bool qCompare(QPixmap const &t1, QPixmap const &t2, const char *actual, const char *expected,
             ^~~~~~~~
make[2]: *** [autotests/CMakeFiles/mediaplaylistTest.dir/build.make:92: autotests/CMakeFiles/mediaplaylistTest.dir/mediaplaylisttest.cpp.o] Error 1
make[2]: Leaving directory '/tmp/guix-build-elisa-0.4.2.drv-0/build'
make[1]: *** [CMakeFiles/Makefile2:1135: autotests/CMakeFiles/mediaplaylistTest.dir/all] Error 2
make[1]: Leaving directory '/tmp/guix-build-elisa-0.4.2.drv-0/build'
make: *** [Makefile:144: all] Error 2
command "make" "-j" "1" failed with status 2
builder for `/gnu/store/hpsy1ycs1300qssc3s452wib6gkaphxf-elisa-0.4.2.drv' failed with exit code 1
------

I tried updating Elisa to the latest upstream release (with the attached
patch), but that failed in a different way:

------
PASS   : ElisaQmlTests::TestNavigationActionBar::test_replaceAndPlay()
PASS   : ElisaQmlTests::TestNavigationActionBar::test_showArtist()
PASS   : ElisaQmlTests::TestNavigationActionBar::cleanupTestCase()
QSYSTEM: ElisaQmlTests::UnknownTestFunc() "Session bus not found\nTo circumvent this problem try the following command (with Linux and bash)\nexport $(dbus-launch)"

      Start 14: filescannerTest
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Internal error:   Could not resolve keysym XF86FullScreen
Errors from xkbcomp are not fatal to the X server
14/15 Test #14: filescannerTest ..................   Passed    0.87 sec
      Start 15: filewriterTest
15/15 Test #15: filewriterTest ...................***Failed    0.14 sec
********* Start testing of FileWriterTest *********
Config: Using QtTest library 5.14.2, Qt 5.14.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 7.5.0)
PASS   : FileWriterTest::initTestCase()
FAIL!  : FileWriterTest::testFileAllMetaDataWrite() Compared values are not the same
   Actual   (scannedTrackAfter.title())  : "Title"
   Expected (QStringLiteral("testTitle")): "testTitle"
   Loc: [/tmp/guix-build-elisa-20.12.0.drv-0/source/autotests/filewritertest.cpp(56)]
FAIL!  : FileWriterTest::testFileSingleMetaDataWrite() Compared values are not the same
   Actual   (scannedTrackAfter.album())  : "Test"
   Expected (QStringLiteral("testAlbum")): "testAlbum"
   Loc: [/tmp/guix-build-elisa-20.12.0.drv-0/source/autotests/filewritertest.cpp(84)]
PASS   : FileWriterTest::cleanupTestCase()
Totals: 2 passed, 2 failed, 0 skipped, 0 blacklisted, 94ms
********* Finished testing of FileWriterTest *********

80% tests passed, 3 tests failed out of 15

Total Test time (real) = 380.23 sec

The following tests FAILED:
	  2 - databaseInterfaceTest (Child aborted)
	 13 - elisaqmltests (Failed)
	 15 - filewriterTest (Failed)
Errors while running CTest
make: *** [Makefile:112: test] Error 8

Test suite failed, dumping logs.
command "make" "test" failed with status 2
builder for `/gnu/store/my3j4cm7wpf4rda54p3xhfchmvxqj4k7-elisa-20.12.0.drv' failed with exit code 1
------
diff --git a/gnu/packages/kde-multimedia.scm b/gnu/packages/kde-multimedia.scm
index cc312b6c40..844e461465 100644
--- a/gnu/packages/kde-multimedia.scm
+++ b/gnu/packages/kde-multimedia.scm
@@ -20,6 +20,7 @@
 (define-module (gnu packages kde-multimedia)
   #:use-module (guix build-system qt)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix utils)
@@ -133,14 +134,16 @@ This package is part of the KDE multimedia module.")
 (define-public elisa
   (package
     (name "elisa")
-    (version "0.4.2")
+    (version "20.12.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "mirror://kde//stable/elisa/0.4.2"
-                           "/elisa-" version ".tar.xz"))
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://anongit.kde.org/elisa.git")
+              (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "0v9af6l89pgz1g7naf7gwcnq8znlicyh7z985kxalbdmv359c97w"))))
+        (base32 "0g2lniajaxgyc8m2kfmvixg6j9x8r2x364f29bvkygd31mjgm6gv"))))
     (build-system qt-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)