[PATCH] Add Cantata

  • Done
  • quality assurance status badge
Details
2 participants
  • Leo Famulari
  • Simon Streit
Owner
unassigned
Submitted by
Simon Streit
Severity
normal

Debbugs page

Simon Streit wrote 4 years ago
(address . guix-patches@gnu.org)
ygu1rh9fmim.fsf@netpanic.org
modified: mpd.scm
---
gnu/packages/mpd.scm | 57 ++++++++++++++++++++++++++++++++++++++------
1 file changed, 50 insertions(+), 7 deletions(-)

Toggle diff (95 lines)
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index 77666de7b2..87bdb61298 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -9,6 +9,7 @@
;;; Copyright © 2019 Evan Straw <evan.straw99@gmail.com>
;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2020 Lars-Dominik Braun <lars@6xq.net>
+;;; Copyright © 2020 Simon Streit <simon@netpanic.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -35,29 +36,36 @@
#:use-module (guix build-system gnu)
#:use-module (guix build-system meson)
#:use-module (guix build-system python)
+ #:use-module (gnu packages audio)
#:use-module (gnu packages autotools)
#:use-module (gnu packages avahi)
#:use-module (gnu packages base)
#:use-module (gnu packages boost)
- #:use-module (gnu packages gettext)
- #:use-module (gnu packages gnome)
- #:use-module (gnu packages gnupg)
- #:use-module (gnu packages gtk)
- #:use-module (gnu packages icu4c)
- #:use-module (gnu packages readline)
+ #: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)
#:use-module (gnu packages documentation)
+ #:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages gettext)
#:use-module (gnu packages glib)
+ #:use-module (gnu packages gnome)
+ #:use-module (gnu packages gnupg)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages icu4c)
+ #:use-module (gnu packages libusb)
#:use-module (gnu packages linux)
#:use-module (gnu packages mp3)
+ #:use-module (gnu packages music)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages pcre)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages pulseaudio)
#:use-module (gnu packages python)
#:use-module (gnu packages python-xyz)
- #:use-module (gnu packages pulseaudio)
+ #:use-module (gnu packages qt)
+ #:use-module (gnu packages readline)
#:use-module (gnu packages sphinx)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages video)
@@ -416,3 +424,38 @@ other MPD frontends.")
support")
(home-page "https://github.com/eonpatapon/mpDris2")
(license license:gpl3+)))
+
+(define-public cantata
+ (package
+ (name "cantata")
+ (version "2.4.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/CDrummond/"
+ name "/releases/download/v" version "/"
+ name "-" version ".tar.bz2"))
+ (sha256 (base32 "10pcrpmb4n1mkgr21xd580nrbmh57q7s72cbs1zay847hc65vliy"))))
+ (build-system cmake-build-system)
+ (native-inputs `(("cmake" ,cmake)
+ ("ffmpeg" ,ffmpeg)
+ ("libebur128" ,libebur128)
+ ("qttools" ,qttools)))
+ (inputs `(("libmtp" ,libmtp)
+ ("qtbase" ,qtbase)
+ ("libmusicbrainz" ,libmusicbrainz)
+ ("mpg123" ,mpg123)
+ ("qtmultimedia" ,qtmultimedia)
+ ("qtsvg" ,qtsvg)
+ ("taglib" ,taglib)
+ ("libcdio-paranoia" ,libcdio-paranoia)
+ ("udisks" ,udisks)
+ ("eudev", eudev)))
+ (arguments `(#:tests? #f))
+ (synopsis "Qt5 Graphical MPD Client")
+ (description "Cantata is a graphical client using the Qt5 toolkit
+for the Music Player Daemon (MPD). Its user interface is highly
+costumisable, supports multiple collections, ratings, and dynamic
+playlists. A local cache of the music album will be created to
+provide a hierarchy of albums and artists alongside with albumart. ")
+ (home-page "https://github.com/cdrummond/cantata")
+ (license gpl3+)))
--
2.29.1
Leo Famulari wrote 4 years ago
(name . Simon Streit)(address . lists@netpanic.org)(address . 44436-done@debbugs.gnu.org)
20201104195516.GA15076@jasmine.lan
On Wed, Nov 04, 2020 at 11:24:01AM +0100, Simon Streit wrote:
Toggle quote (2 lines)
> +(define-public cantata

Thanks! I use MPD every day so I'm always glad to have another client
available. Pushed as 79e9168aa6ebe3eee83e852ba96f46dda8ec0490 with the
changes described below...

First, I tried building it, but that failed for two reasons:

Toggle quote (2 lines)
> + (build-system cmake-build-system)

The build system was not available — I needed to add '#:use-module (guix
build-system cmake)' to mpd.scm's module imports.

Toggle quote (2 lines)
> + (license gpl3+)))

The license needs to be "prefixed" like the other licenses in this file.
That is: '(license license:gpl3+)'. If you look in mpd.scm's module
imports, you'll see that we import the license module with a "prefix":

#:use-module ((guix licenses) #:prefix license:)

This is to work around the fact there are both packages and licenses
named 'zlib' and 'expat', and the namespaces would otherwise collide
when importing the license module and either of those packages.

After that, I looked more closely at the inputs and native-inputs. In
general, native-inputs are things that are used *only* while building
the package. There were some unused inputs, and some were
miscategorized. I fixed that by 1) reading the output of CMake's
'configure' phase, 2) intuition and 3) checking which inputs the built
Cantata refers to:

------
$ guix gc --references $(./pre-inst-env guix build cantata)
/gnu/store/01b4w3m6mp55y531kyi1g8shh722kwqm-gcc-7.5.0-lib
/gnu/store/3bp88g40ay0zca3azdk7wf4nyrwrdjjx-qtsvg-5.14.2
/gnu/store/9z2412yyy95bcq7brfhdjlh8im2lxkpc-ffmpeg-4.3.1
/gnu/store/af00wnjldgbbyzb17bjkkw2mn0b1gr4d-qtbase-5.14.2
/gnu/store/b12szz8wy7wxvfv2jfj5ygqkgqar03ih-taglib-1.12-beta-1
/gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31
/gnu/store/gklxpq6zmalxspwvj9md140skfpayrah-libmtp-1.1.18
/gnu/store/irsg92y6hnz1agsqvl6mwqxz32lkmi8v-cantata-2.4.2
/gnu/store/n1azzzjsq99n05r5xl0hcljvpvw5arxn-qtmultimedia-5.14.2
/gnu/store/ngv0dqjz88cn5553ys8w19ydwc55lvky-mpg123-1.26.3
/gnu/store/pwcp239kjf7lnj5i4lkdzcfcxwcfyk72-bash-minimal-5.0.16
/gnu/store/rykm237xkmq7rl1p0nwass01p090p88x-zlib-1.2.11
/gnu/store/v52179lrpvl6cdqr7li45zd8zafc6156-libebur128-1.2.4
/gnu/store/z1ngxz9rc1vqpbwvvlm8l37fa0q6ga5x-eudev-3.2.9
------

Anything not listed there is either used only while building, not
used at all, or the relevant software is copied into Cantata.

Note that libcdio-paranoia is not listed — it is registered by the CMake
configure phase, so either something is broken in the build scripts or
it has been copied into Cantata. I left it in, just in case it works...
somebody with an optical drive will find out.

Also, libmusicbrainz is not listed. If libcdio-paranoia is not included,
CMake doesn't complain about the missing libmusicbrainz. No matter what,
CMake fails to find libmusicbrainz, so I removed it from Cantata's
inputs.

It's not unusual for older CMake projects that are no longer being
actively developed to have this kind of inconsistency with their build
scripts. Follow-up patches that address this are quite welcome! Are you
able to test those features?

Finally, I made some stylistic or grammatical changes to the synopsis,
description, and source URI, added a comment about why we skip the
tests, and pushed. Thanks again!
Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 44436@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 44436
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch
You may also tag this issue. See list of standard tags. For example, to set the confirmed and easy tags
mumi command -t +confirmed -t +easy
Or, remove the moreinfo tag and set the help tag
mumi command -t -moreinfo -t +help