From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55183) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e8u4x-00021E-4l for guix-patches@gnu.org; Sun, 29 Oct 2017 16:21:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e8u4t-0002JV-3a for guix-patches@gnu.org; Sun, 29 Oct 2017 16:21:07 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:60516) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1e8u4s-0002J3-S4 for guix-patches@gnu.org; Sun, 29 Oct 2017 16:21:03 -0400 Subject: [bug#25787] [PATCH 02/02] gnu: Add clementine. Resent-Message-ID: References: <20170218133830.24091-1-pierre.langlois@gmx.com> <20170218180249.1522-1-pierre.langlois@gmx.com> <87h93mfbkm.fsf@kirby.i-did-not-set--mail-host-address--so-tickle-me> <871su5d0is.fsf@gnu.org> <87vaphppr7.fsf@gnu.org> <8760b3coak.fsf@elephly.net> From: Pierre Langlois In-reply-to: Date: Sun, 29 Oct 2017 20:20:30 +0000 Message-ID: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: Ricardo Wurmus Cc: 25787@debbugs.gnu.org --=-=-= Content-Type: text/plain; format=flowed OK, I messed those emails and the patches are completely mangled... oups! Here are the patches as attachments. I would normally use git send-email but it wasn't working for me today for some reason. --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-gnu-Add-libmygpo-qt.patch Content-Transfer-Encoding: quoted-printable >From f8c1602f78cb570d013313cdb5fd100716bcf4bb Mon Sep 17 00:00:00 2001 From: Pierre Langlois Date: Sat, 25 Feb 2017 12:20:34 +0000 Subject: [PATCH 01/02] gnu: Add libmygpo-qt. * gnu/packages/music.scm (libmygpo-qt): New variable. * gnu/packages/patches/libmygpo-qt-fix-jsoncreatortest.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. --- gnu/local.mk | 1 + gnu/packages/music.scm | 27 ++++++++++++++ .../patches/libmygpo-qt-fix-jsoncreatortest.patch | 41 ++++++++++++++++++= ++++ 3 files changed, 69 insertions(+) create mode 100644 gnu/packages/patches/libmygpo-qt-fix-jsoncreatortest.pa= tch diff --git a/gnu/local.mk b/gnu/local.mk index 90dc7aec1..3012976a8 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -801,6 +801,7 @@ dist_patch_DATA =3D \ %D%/packages/patches/libmad-armv7-thumb-pt2.patch \ %D%/packages/patches/libmad-frame-length.patch \ %D%/packages/patches/libmad-mips-newgcc.patch \ + %D%/packages/patches/libmygpo-qt-fix-jsoncreatortest.patch \ %D%/packages/patches/libsndfile-armhf-type-checks.patch \ %D%/packages/patches/libsndfile-CVE-2017-8361-8363-8365.patch \ %D%/packages/patches/libsndfile-CVE-2017-8362.patch \ diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index f5df44070..55ae15f1a 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -3367,3 +3367,30 @@ the electronic or dubstep genre.") designed to make a developer's life easy when trying to use the APIs provi= ded by The Echo Nest.") (license license:gpl2+))) + +(define-public libmygpo-qt + (package + (name "libmygpo-qt") + (version "1.0.9") + (source + (origin + (method url-fetch) + (uri (string-append "http://stefan.derkits.at/files/libmygpo-qt/lib= mygpo-qt." + version ".tar.gz")) + (sha256 + (base32 "1wsgh2vjnd52rkvpncj1ycpbp84sj9hh12ija46b42z9mmqf2jm4")) + (patches (search-patches "libmygpo-qt-fix-jsoncreatortest.patch")))) + (build-system cmake-build-system) + (arguments + '(#:configure-flags '("-DBUILD_WITH_QT4=3DOFF"))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("qt" ,qtbase))) + (home-page "http://wiki.gpodder.org/wiki/Libmygpo-qt") + (synopsis "Qt/C++ library wrapping the @url{https://gpodder.net} +Webservice") + (description "@code{libmygpo-qt} is a Qt/C++ library wrapping the +@url{https://gpodder.net} APIs. It allows applications to discover, manage +and track podcasts.") + (license license:lgpl2.1+))) diff --git a/gnu/packages/patches/libmygpo-qt-fix-jsoncreatortest.patch b/g= nu/packages/patches/libmygpo-qt-fix-jsoncreatortest.patch new file mode 100644 index 000000000..c457d592c --- /dev/null +++ b/gnu/packages/patches/libmygpo-qt-fix-jsoncreatortest.patch @@ -0,0 +1,41 @@ +From ebe2323727f8d646590245b0bf06dbc92b5808d6 Mon Sep 17 00:00:00 2001 +From: Golubev Alexander +Date: Tue, 20 Sep 2016 15:33:30 +0400 +Subject: [PATCH] JsonCreatorTest failed due to extra space + +JsonCreatorTest failed with next message: +``` +********* Start testing of mygpo::JsonCreatorTest ********* +Config: Using QTest library 4.8.6, Qt 4.8.6 +PASS : mygpo::JsonCreatorTest::initTestCase() +PASS : mygpo::JsonCreatorTest::testAddRemoveSubsToJSON() +PASS : mygpo::JsonCreatorTest::testSaveSettingsToJSON() +FAIL! : mygpo::JsonCreatorTest::testEpisodeActionListToJSON() Compared va= lues are not the same + Actual (outString2): [{"action":"download","device":"device1","episode"= :"http://episode.url","podcast":"http://podcast.url","timestamp":"1998-01-0= 1T00:01:02"},{"action":"delete","device":"device3","episode":"http://episod= e2.url","podcast":"http://podcast2.url","timestamp":"1920-01-01T12:01:02"},= {"action":"new","device":"foodev","episode":"http://www.podtrac.com","podca= st":"http://leo.am","timestamp":"1998-01-01T00:01:02"},{"action":"play","de= vice":"foodev","episode":"http://www.podtrac.com","podcast":"http://leo.am"= ,"timestamp":"1920-01-01T12:01:02"},{"action":"play","device":"foodev","epi= sode":"http://www.podtrac.com","podcast":"http://leo.am","position":123,"st= arted":10,"timestamp":"1998-01-01T00:01:02","total":321},{"action":"play","= device":"foodev","episode":"http://www.podtrac.com","podcast":"http://leo.a= m","position":10,"timestamp":"1998-01-01T00:01:02"}] + Expected (expected2): [{"action":"download","device":"device1","episode= ":"http://episode.url","podcast":"http: + Loc: [/var/tmp/portage/media-libs/libmygpo-qt-1.0.9-r1/work/libmygpo-qt= -1.0.9/tests/JsonCreatorTest.cpp(138)] +PASS : mygpo::JsonCreatorTest::testRenameDeviceStringToJSON() +PASS : mygpo::JsonCreatorTest::testDeviceSynchronizationListsToJSON() +PASS : mygpo::JsonCreatorTest::cleanupTestCase() +Totals: 6 passed, 1 failed, 0 skipped +********* Finished testing of mygpo::JsonCreatorTest ********* +``` + +This was caused by extra space in the expected string. +--- + tests/JsonCreatorTest.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/JsonCreatorTest.cpp b/tests/JsonCreatorTest.cpp +index b15b006..feb03d5 100644 +--- a/tests/JsonCreatorTest.cpp ++++ b/tests/JsonCreatorTest.cpp +@@ -133,7 +133,7 @@ void JsonCreatorTest::testEpisodeActionListToJSON() +=20 + output =3D JsonCreator::episodeActionListToJSON(episodeActions); + QString outString2 =3D QString::fromLatin1( output ).replace( QLatin1St= ring(" "), QLatin1String("") ); +- QString expected2( QLatin1String( "[{\"action\":\"download\",\"device\"= :\"device1\",\"episode\":\"http://episode.url\",\"podcast\":\"http://podcas= t.url\",\"timestamp\":\"1998-01-01T00:01:02\"},{\"action\":\"delete\",\"dev= ice\":\"device3\",\"episode\":\"http://episode2.url\",\"podcast\":\"http://= podcast2.url\",\"timestamp\":\"1920-01-01T12:01:02\"},{\"action\":\"new\",\= "device\":\"foodev\",\"episode\":\"http://www.podtrac.com\",\"podcast\":\"h= ttp://leo.am\",\"timestamp\":\"1998-01-01T00:01:02\"},{\"action\":\"play\",= \"device\":\"foodev\",\"episode\":\"http://www.podtrac.com\",\"podcast\":\"= http://leo.am\",\"timestamp\":\"1920-01-01T12:01:02\" },{\"action\":\"play\= ",\"device\":\"foodev\",\"episode\":\"http://www.podtrac.com\",\"podcast\":= \"http://leo.am\",\"position\":123,\"started\":10,\"timestamp\":\"1998-01-0= 1T00:01:02\",\"total\":321},{\"action\":\"play\",\"device\":\"foodev\",\"ep= isode\":\"http://www.podtrac.com\",\"podcast\":\"http://leo.am\",\"position= \":10,\"timestamp\":\"1998-01-01T00:01:02\"}]" ) ); ++ QString expected2( QLatin1String( "[{\"action\":\"download\",\"device\"= :\"device1\",\"episode\":\"http://episode.url\",\"podcast\":\"http://podcas= t.url\",\"timestamp\":\"1998-01-01T00:01:02\"},{\"action\":\"delete\",\"dev= ice\":\"device3\",\"episode\":\"http://episode2.url\",\"podcast\":\"http://= podcast2.url\",\"timestamp\":\"1920-01-01T12:01:02\"},{\"action\":\"new\",\= "device\":\"foodev\",\"episode\":\"http://www.podtrac.com\",\"podcast\":\"h= ttp://leo.am\",\"timestamp\":\"1998-01-01T00:01:02\"},{\"action\":\"play\",= \"device\":\"foodev\",\"episode\":\"http://www.podtrac.com\",\"podcast\":\"= http://leo.am\",\"timestamp\":\"1920-01-01T12:01:02\"},{\"action\":\"play\"= ,\"device\":\"foodev\",\"episode\":\"http://www.podtrac.com\",\"podcast\":\= "http://leo.am\",\"position\":123,\"started\":10,\"timestamp\":\"1998-01-01= T00:01:02\",\"total\":321},{\"action\":\"play\",\"device\":\"foodev\",\"epi= sode\":\"http://www.podtrac.com\",\"podcast\":\"http://leo.am\",\"position\= ":10,\"timestamp\":\"1998-01-01T00:01:02\"}]" ) ); +=20 + QCOMPARE(outString2, expected2 ); + } --=20 2.14.3 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0002-gnu-Add-clementine.patch >From ace833f94b278e445a8e91fd5b1c105de3f39896 Mon Sep 17 00:00:00 2001 From: Pierre Langlois Date: Wed, 25 Oct 2017 19:57:11 +0100 Subject: [PATCH 02/02] gnu: Add clementine. * gnu/packages/music.scm (clementine): New variable. * gnu/packages/patches/clementine-use-openssl.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. Co-authored-by: Ricardo Wurmus --- gnu/local.mk | 1 + gnu/packages/music.scm | 114 ++++++++++++++++++++++ gnu/packages/patches/clementine-use-openssl.patch | 67 +++++++++++++ 3 files changed, 182 insertions(+) create mode 100644 gnu/packages/patches/clementine-use-openssl.patch diff --git a/gnu/local.mk b/gnu/local.mk index 3012976a8..5530e3342 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -562,6 +562,7 @@ dist_patch_DATA = \ %D%/packages/patches/chmlib-inttypes.patch \ %D%/packages/patches/clang-libc-search-path.patch \ %D%/packages/patches/clang-3.8-libc-search-path.patch \ + %D%/packages/patches/clementine-use-openssl.patch \ %D%/packages/patches/clisp-remove-failing-test.patch \ %D%/packages/patches/clucene-pkgconfig.patch \ %D%/packages/patches/clx-remove-demo.patch \ diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index 55ae15f1a..453125a8b 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -54,8 +54,11 @@ #:use-module (gnu packages check) #:use-module (gnu packages cmake) #:use-module (gnu packages compression) + #:use-module (gnu packages crypto) #:use-module (gnu packages curl) #:use-module (gnu packages cyrus-sasl) + #:use-module (gnu packages databases) + #:use-module (gnu packages datastructures) #:use-module (gnu packages docbook) #:use-module (gnu packages documentation) #:use-module (gnu packages emacs) @@ -73,12 +76,14 @@ #:use-module (gnu packages glib) #:use-module (gnu packages gnome) #:use-module (gnu packages graphics) + #:use-module (gnu packages gstreamer) #:use-module (gnu packages gtk) #:use-module (gnu packages guile) #:use-module (gnu packages image) #:use-module (gnu packages imagemagick) #:use-module (gnu packages java) #:use-module (gnu packages libffi) + #:use-module (gnu packages libusb) #:use-module (gnu packages linux) ; for alsa-utils #:use-module (gnu packages lirc) #:use-module (gnu packages llvm) @@ -91,6 +96,7 @@ #:use-module (gnu packages pdf) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages protobuf) #:use-module (gnu packages pulseaudio) ;libsndfile #:use-module (gnu packages python) #:use-module (gnu packages qt) @@ -176,6 +182,114 @@ and play MIDI files with a few clicks in a user-friendly interface offering score, keyboard, guitar, drum and controller views.") (license license:gpl3+))) +;; We don't use the latest release because it depends on Qt4. Instead we +;; download the sources from the tip of the "qt5" branch. +(define-public clementine + (let ((commit "0a59257dc334b8df60a4d7d90b04f1766747efcf") + (revision "1")) + (package + (name "clementine") + (version (string-append "1.3.1-" revision "." (string-take commit 7))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/clementine-player/Clementine.git") + (commit commit))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0cdcj7di7j9jgzc1ihjna1a5df64f9hnmx7b9kh8rlg76hc0l0hi")) + (modules '((guix build utils))) + (snippet + '(for-each + (lambda (dir) + (delete-file-recursively + (string-append "3rdparty/" dir))) + (list + ;; TODO: The following dependencies are still bundled: + ;; - "qxt": Appears to be unmaintained upstream. + ;; - "qsqlite" + ;; - "qtsingleapplication" + ;; - "qocoa" + ;; - "qtiocompressor" + ;; - "gmock": The tests crash when using our googletest + ;; package instead of the bunbled gmock. + "SPMediaKeyTap" + "fancytabwidget" + "google-breakpad" + "libmygpo-qt" + "libmygpo-qt5" + "libprojectm" + "qtwin" + "sha2" ;; Replaced by openssl. + "taglib" + "tinysvcmdns"))) + (patches (search-patches "clementine-use-openssl.patch")))) + (build-system cmake-build-system) + (arguments + '(#:test-target "clementine_test" + #:configure-flags + (let ((crypto (assoc-ref %build-inputs "crypto++"))) + (list "-DENABLE_VISUALISATIONS=OFF" ; requires unpackaged "projectm" + "-DCRYPTOPP_FOUND=TRUE" + (string-append "-DCRYPTOPP_INCLUDE_DIRS=" crypto "/include") + (string-append "-DCRYPTOPP_LIBRARY_DIRS=" crypto "/lib") + (string-append "-DCRYPTOPP_LIBRARIES=" crypto "/lib/libcryptopp.a") + "-DUSE_SYSTEM_SHA2=TRUE")) + #:phases + (modify-phases %standard-phases + (add-after 'install 'wrap-program + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH"))) + (wrap-program (string-append out "/bin/clementine") + `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))) + #t)))))) + (native-inputs + `(("gettext" ,gettext-minimal) + ("pkg-config" ,pkg-config) + ("qtlinguist" ,qttools))) + (inputs + `(("boost" ,boost) + ("chromaprint" ,chromaprint) + ("crypto++" ,crypto++) + ("fftw" ,fftw) + ("glib" ,glib) + ("glu" ,glu) + ("gstreamer" ,gstreamer) + ("gst-plugins-base" ,gst-plugins-base) + ("libcdio" ,libcdio) + ("libmygpo-qt" ,libmygpo-qt) + ("libechonest" ,libechonest) + ;; TODO: Package libgpod. + ("libmtp" ,libmtp) + ("libxml2" ,libxml2) + ("openssl" ,openssl) + ("protobuf" ,protobuf) + ("pulseaudio" ,pulseaudio) + ("qtbase" ,qtbase) + ("qtx11extras" ,qtx11extras) + ("qtwebkit" ,qtwebkit) + ("sqlite" ,sqlite-with-fts3) + ("sparsehash" ,sparsehash) + ("taglib" ,taglib))) + (home-page "http://clementine-player.org") + (synopsis "Music player and library organizer") + (description "Clementine is a multiplatform music player. It is inspired +by Amarok 1.4, focusing on a fast and easy-to-use interface for searching and +playing your music.") + (license (list + ;; clementine and qtiocompressor are under GPLv3. + license:gpl3+ + ;; gmock is under BSD-3. + license:bsd-3 + ;; qxt is under CPL1.0. + license:cpl1.0 + ;; qsqlite and qtsingleapplication are under LGPL2.1+. + license:lgpl2.1+ + ;; qocoa is under MIT and CC by-sa for the icons. + license:cc-by-sa3.0))))) + (define-public cmus (package (name "cmus") diff --git a/gnu/packages/patches/clementine-use-openssl.patch b/gnu/packages/patches/clementine-use-openssl.patch new file mode 100644 index 000000000..1fbf3d2b8 --- /dev/null +++ b/gnu/packages/patches/clementine-use-openssl.patch @@ -0,0 +1,67 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 4022c383b..3202b8b69 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -83,6 +83,7 @@ pkg_check_modules(LIBPULSE libpulse) + pkg_check_modules(LIBXML libxml-2.0) + pkg_check_modules(SPOTIFY libspotify>=12.1.45) + pkg_check_modules(TAGLIB REQUIRED taglib>=1.6) ++pkg_check_modules(OPENSSL REQUIRED openssl) + + if (WIN32) + find_package(ZLIB REQUIRED) +@@ -381,20 +382,6 @@ if(GMOCK_INCLUDE_DIRS) + endif(GTEST_INCLUDE_DIRS) + endif(GMOCK_INCLUDE_DIRS) + +-# Use the system's sha2 if it's available. +-find_path(SHA2_INCLUDE_DIRS sha2.h) +-find_library(SHA2_LIBRARIES sha2) +-if(SHA2_LIBRARIES AND SHA2_INCLUDE_DIRS) +- message(STATUS "Using system sha2 library") +- set(USE_SYSTEM_SHA2 ON) +-else() +- message(STATUS "Using builtin sha2 library") +- set(USE_SYSTEM_SHA2 OFF) +- add_subdirectory(3rdparty/sha2) +- set(SHA2_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/sha2) +- set(SHA2_LIBRARIES sha2) +-endif() +- + # Use the system libmygpo-qt5 if a recent enough version was found + if(LIBMYGPO_QT5_FOUND) + set(MYGPOQT5_LIBRARIES ${LIBMYGPO_QT5_LIBRARIES}) +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 6e24c9726..104d044d9 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -29,7 +29,6 @@ include_directories(${LIBPROJECTM_INCLUDE_DIRS}) + include_directories(${QTSINGLEAPPLICATION_INCLUDE_DIRS}) + include_directories(${QTIOCOMPRESSOR_INCLUDE_DIRS}) + include_directories(${QXT_INCLUDE_DIRS}) +-include_directories(${SHA2_INCLUDE_DIRS}) + include_directories(${CHROMAPRINT_INCLUDE_DIRS}) + include_directories(${MYGPOQT5_INCLUDE_DIRS}) + +@@ -1223,7 +1222,7 @@ target_link_libraries(clementine_lib + libclementine-common + libclementine-tagreader + libclementine-remote +- ${SHA2_LIBRARIES} ++ ${OPENSSL_LIBRARIES} + ${TAGLIB_LIBRARIES} + ${MYGPOQT5_LIBRARIES} + ${CHROMAPRINT_LIBRARIES} +diff --git a/src/core/utilities.cpp b/src/core/utilities.cpp +index ce76f22da..80bf623fb 100644 +--- a/src/core/utilities.cpp ++++ b/src/core/utilities.cpp +@@ -52,7 +52,7 @@ + #include "config.h" + #include "timeconstants.h" + +-#include "sha2.h" ++#include + + #if defined(Q_OS_UNIX) + #include -- 2.14.3 --=-=-=--