gnu: Remove WebKitGTK@2.20.
[jackhill/guix/guix.git] / gnu / packages / mpd.scm
CommitLineData
892d8a81 1;;; GNU Guix --- Functional package management for GNU
927ff2c3 2;;; Copyright © 2014, 2015 David Thompson <dthompson2@worcester.edu>
b0193286 3;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
009c5b5c 4;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
29a7c98a 5;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
e42dc624 6;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
f52bd828 7;;; Copyright © 2016, 2018, 2019 Leo Famulari <leo@famulari.name>
7da9e792 8;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
892d8a81
DT
9;;;
10;;; This file is part of GNU Guix.
11;;;
12;;; GNU Guix is free software; you can redistribute it and/or modify it
13;;; under the terms of the GNU General Public License as published by
14;;; the Free Software Foundation; either version 3 of the License, or (at
15;;; your option) any later version.
16;;;
17;;; GNU Guix is distributed in the hope that it will be useful, but
18;;; WITHOUT ANY WARRANTY; without even the implied warranty of
19;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20;;; GNU General Public License for more details.
21;;;
22;;; You should have received a copy of the GNU General Public License
23;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
24
25(define-module (gnu packages mpd)
26 #:use-module (gnu packages)
7dc68701 27 #:use-module ((guix licenses) #:prefix license:)
892d8a81
DT
28 #:use-module (guix packages)
29 #:use-module (guix download)
29a7c98a 30 #:use-module (guix utils)
892d8a81 31 #:use-module (guix build-system gnu)
7da9e792 32 #:use-module (guix build-system meson)
efe0b143 33 #:use-module (guix build-system python)
7dc68701 34 #:use-module (gnu packages avahi)
e42dc624 35 #:use-module (gnu packages boost)
7c0ed27a 36 #:use-module (gnu packages gcc)
6c86cef5
CB
37 #:use-module (gnu packages gettext)
38 #:use-module (gnu packages gnome)
39 #:use-module (gnu packages gtk)
58acabc3 40 #:use-module (gnu packages icu4c)
e42dc624 41 #:use-module (gnu packages readline)
ac257f12 42 #:use-module (gnu packages check)
7dc68701
DT
43 #:use-module (gnu packages compression)
44 #:use-module (gnu packages curl)
99828fa7 45 #:use-module (gnu packages documentation)
7dc68701
DT
46 #:use-module (gnu packages glib)
47 #:use-module (gnu packages linux)
48 #:use-module (gnu packages mp3)
4d01bd3c 49 #:use-module (gnu packages ncurses)
cd220e60 50 #:use-module (gnu packages pcre)
7dc68701 51 #:use-module (gnu packages pkg-config)
efe0b143 52 #:use-module (gnu packages python)
44d10b1f 53 #:use-module (gnu packages python-xyz)
7dc68701 54 #:use-module (gnu packages pulseaudio)
cd0322a3 55 #:use-module (gnu packages sqlite)
7dc68701 56 #:use-module (gnu packages video)
654b27e5 57 #:use-module (gnu packages xiph))
892d8a81 58
654b27e5 59(define-public libmpdclient
892d8a81
DT
60 (package
61 (name "libmpdclient")
69c69c2d 62 (version "2.16")
892d8a81
DT
63 (source (origin
64 (method url-fetch)
65 (uri
c59ea46f 66 (string-append "https://musicpd.org/download/libmpdclient/"
892d8a81 67 (car (string-split version #\.))
a53a925f 68 "/libmpdclient-" version ".tar.xz"))
892d8a81
DT
69 (sha256
70 (base32
69c69c2d 71 "0r24cl3i9nvs6a47mvwaxk1kb5wmnhkhrw1q5cq9010fgjvdlszs"))))
7da9e792
TGR
72 (build-system meson-build-system)
73 (native-inputs
74 `(("pkg-config" ,pkg-config)
75
76 ;; For building HTML documentation.
77 ("doxygen" ,doxygen)
78
79 ;; For tests.
80 ("check" ,check)))
81 (arguments
82 `(#:configure-flags
83 (list "-Ddocumentation=true"
84 "-Dtest=true")))
892d8a81
DT
85 (synopsis "Music Player Daemon client library")
86 (description "A stable, documented, asynchronous API library for
87interfacing MPD in the C, C++ & Objective C languages.")
e9aa6b5e 88 (home-page "https://www.musicpd.org/libs/libmpdclient/")
7dc68701
DT
89 (license license:bsd-3)))
90
654b27e5 91(define-public mpd
7dc68701
DT
92 (package
93 (name "mpd")
f52bd828 94 (version "0.21.4")
7dc68701
DT
95 (source (origin
96 (method url-fetch)
97 (uri
943100f6 98 (string-append "https://musicpd.org/download/mpd/"
29a7c98a 99 (version-major+minor version)
58acabc3 100 "/mpd-" version ".tar.xz"))
7dc68701
DT
101 (sha256
102 (base32
f52bd828
LF
103 "1ix52vfa8k8my4xyr8b0phg8605b2xchyzyva908m08vpzm14w94"))))
104 (build-system meson-build-system)
87b52095 105 (arguments
f52bd828
LF
106 `(#:configure-flags '("-Ddocumentation=true") ; The default is 'false'...
107 #:phases
87b52095 108 (modify-phases %standard-phases
f52bd828
LF
109 (add-before 'configure 'expand-C++-include-path
110 ;; Make <gcc>/include/c++/ext/string_conversions.h find <stdlib.h>.
111 (lambda* (#:key inputs #:allow-other-keys)
112 (let* ((path "CPLUS_INCLUDE_PATH")
113 (gcc (assoc-ref inputs "gcc"))
114 (c++ (string-append gcc "/include/c++")))
115 (setenv path (string-append c++ ":" (getenv path)))
87b52095 116 #t))))))
7dc68701
DT
117 (inputs `(("ao" ,ao)
118 ("alsa-lib" ,alsa-lib)
119 ("avahi" ,avahi)
58acabc3 120 ("boost" ,boost)
7dc68701
DT
121 ("curl" ,curl)
122 ("ffmpeg" ,ffmpeg)
123 ("flac" ,flac)
124 ("glib" ,glib)
58acabc3 125 ("icu4c" ,icu4c)
241caa62
LF
126 ;; The LAME decoder comes from FFmpeg, but is added here so that
127 ;; configure picks up the LAME encoder.
7dc68701
DT
128 ("lame" ,lame)
129 ("libid3tag" ,libid3tag)
7dc68701
DT
130 ("libmpdclient" ,libmpdclient)
131 ("libsamplerate" ,libsamplerate)
132 ("libsndfile" ,libsndfile)
133 ("libvorbis" ,libvorbis)
134 ("opus" ,opus)
7dc68701
DT
135 ("pulseaudio" ,pulseaudio)
136 ("sqlite" ,sqlite)
137 ("zlib" ,zlib)))
f52bd828
LF
138 ;; MPD > 0.21 requires > GCC 6
139 (native-inputs `(("gcc" ,gcc-8)
140 ("gcc-lib" ,gcc-8 "lib")
141 ("pkg-config" ,pkg-config)
142 ("python-sphinx" ,python-sphinx)))
7dc68701
DT
143 ;; Missing optional inputs:
144 ;; libyajl
145 ;; libcdio_paranoia
146 ;; libmms
147 ;; libadplug
148 ;; libaudiofile
149 ;; faad2
150 ;; fluidsynth
151 ;; libgme
152 ;; libshout
153 ;; libmpg123
154 ;; libmodplug
155 ;; libmpcdec
156 ;; libsidplay2
157 ;; libwavpack
158 ;; libwildmidi
159 ;; libtwolame
160 ;; libroar
161 ;; libjack
162 ;; OpenAL
163 (synopsis "Music Player Daemon")
164 (description "Music Player Daemon (MPD) is a flexible, powerful,
165server-side application for playing music. Through plugins and libraries it
166can play a variety of sound files while being controlled by its network
167protocol.")
e9aa6b5e 168 (home-page "https://www.musicpd.org/")
7dc68701 169 (license license:gpl2)))
4d01bd3c 170
654b27e5 171(define-public mpd-mpc
773b2792
PW
172 (package
173 (name "mpd-mpc")
33279c2a 174 (version "0.31")
773b2792
PW
175 (source (origin
176 (method url-fetch)
177 (uri
62d14d24 178 (string-append "https://www.musicpd.org/download/mpc/"
773b2792
PW
179 (car (string-split version #\.))
180 "/mpc-" version ".tar.xz"))
181 (sha256
182 (base32
33279c2a 183 "0b9bsn4sl26xc6wdcms51x9yxznkxkppaycn8gnv4rd1m21kwdv2"))))
62d14d24 184 (build-system meson-build-system)
773b2792 185 (inputs `(("libmpdclient" ,libmpdclient)))
33279c2a
LF
186 (native-inputs
187 `(("pkg-config" ,pkg-config)
188 ("python-sphinx" ,python-sphinx)))
773b2792
PW
189 (synopsis "Music Player Daemon client")
190 (description "MPC is a minimalist command line interface to MPD, the music
191player daemon.")
e9aa6b5e 192 (home-page "https://www.musicpd.org/clients/mpc/")
773b2792
PW
193 (license license:gpl2)))
194
654b27e5 195(define-public ncmpc
4d01bd3c
DT
196 (package
197 (name "ncmpc")
947babea 198 (version "0.33")
4d01bd3c
DT
199 (source (origin
200 (method url-fetch)
201 (uri
202 (string-append "http://musicpd.org/download/ncmpc/"
947babea 203 (version-major version)
3efee6a4 204 "/ncmpc-" version ".tar.xz"))
4d01bd3c
DT
205 (sha256
206 (base32
947babea 207 "19fp7xkpai4lq3vmpbppgh3ism7lg2sibv237c0sl5a0hls4mq4l"))))
fbde7b08
TGR
208 (build-system meson-build-system)
209 (arguments
210 `(#:configure-flags
cd220e60
LF
211 ;; Otherwise, they are installed incorrectly, in
212 ;; '$out/share/man/man/man1'.
213 (list (string-append "-Dmandir=" (assoc-ref %outputs "out")
214 "/share"))
7c0ed27a
TGR
215 #:phases
216 (modify-phases %standard-phases
217 (add-before 'configure 'expand-C++-include-path
218 ;; Make <gcc>/include/c++/ext/string_conversions.h find <stdlib.h>.
219 (lambda* (#:key inputs #:allow-other-keys)
220 (let* ((path "CPLUS_INCLUDE_PATH")
221 (gcc (assoc-ref inputs "gcc"))
222 (c++ (string-append gcc "/include/c++")))
223 (setenv path (string-append c++ ":" (getenv path)))
224 #t))))))
b42b5afd 225 (inputs `(("gcc" ,gcc-8) ; for its C++14 support
cd220e60
LF
226 ("boost" ,boost)
227 ("pcre" ,pcre)
4d01bd3c
DT
228 ("libmpdclient" ,libmpdclient)
229 ("ncurses" ,ncurses)))
fbde7b08 230 (native-inputs `(("gettext" ,gettext-minimal) ; for xgettext
cd220e60
LF
231 ("pkg-config" ,pkg-config)
232 ("python-sphinx" ,python-sphinx)))
9e771e3b 233 (synopsis "Curses Music Player Daemon client")
4d01bd3c
DT
234 (description "ncmpc is a fully featured MPD client, which runs in a
235terminal using ncurses.")
e9aa6b5e 236 (home-page "https://www.musicpd.org/clients/ncmpc/")
4d01bd3c 237 (license license:gpl2)))
009c5b5c 238
654b27e5 239(define-public ncmpcpp
009c5b5c
CS
240 (package
241 (name "ncmpcpp")
93cbcc26 242 (version "0.8.2")
009c5b5c
CS
243 (source (origin
244 (method url-fetch)
245 (uri
a708fea4 246 (string-append "https://ncmpcpp.rybczak.net/stable/ncmpcpp-"
009c5b5c
CS
247 version ".tar.bz2"))
248 (sha256
249 (base32
93cbcc26 250 "0m0mjb049sl62vx13h9waavysa30mk0rphacksnvf94n13la62v5"))))
009c5b5c
CS
251 (build-system gnu-build-system)
252 (inputs `(("libmpdclient" ,libmpdclient)
4cb9b726 253 ("boost" ,boost)
e42dc624 254 ("readline" ,readline)
a22722c1 255 ("ncurses" ,ncurses)
a4c7c57c 256 ("taglib" ,taglib)
a708fea4
LF
257 ("icu4c" ,icu4c)
258 ("curl" ,curl)))
e42dc624 259 (native-inputs
c7794307 260 `(("pkg-config" ,pkg-config)))
e42dc624
PW
261 (arguments
262 '(#:configure-flags
c7794307 263 '("BOOST_LIB_SUFFIX=" "--with-taglib")))
009c5b5c
CS
264 (synopsis "Featureful ncurses based MPD client inspired by ncmpc")
265 (description "Ncmpcpp is an mpd client with a UI very similar to ncmpc,
266but it provides new useful features such as support for regular expressions
267for library searches, extended song format, items filtering, the ability to
8f65585b 268sort playlists, and a local file system browser.")
a708fea4 269 (home-page "https://ncmpcpp.rybczak.net/")
009c5b5c 270 (license license:gpl2+)))
927ff2c3
DT
271
272(define-public mpdscribble
273 (package
274 (name "mpdscribble")
275 (version "0.22")
276 (source (origin
277 (method url-fetch)
278 (uri (string-append "http://www.musicpd.org/download/mpdscribble/"
279 version "/mpdscribble-" version ".tar.gz"))
280 (sha256
281 (base32
282 "0f0ybx380x2z2g1qvdndpvcrhkrgsfqckhz3ryydq2w3pl12v27z"))))
283 (build-system gnu-build-system)
284 (inputs `(("libmpdclient" ,libmpdclient)
285 ("curl" ,curl)
286 ("glib" ,glib)))
287 (native-inputs `(("pkg-config" ,pkg-config)))
288 (synopsis "MPD client for track scrobbling")
289 (description "mpdscribble is a Music Player Daemon client which submits
290information about tracks being played to a scrobbler, such as Libre.FM.")
fc2847b1 291 (home-page "https://www.musicpd.org/clients/mpdscribble/")
927ff2c3 292 (license license:gpl2+)))
efe0b143
LF
293
294(define-public python-mpd2
295 (package
296 (name "python-mpd2")
297 (version "0.5.5")
298 (source (origin
299 (method url-fetch)
300 (uri (pypi-uri "python-mpd2" version))
301 (sha256
302 (base32
303 "0laypd7h1j14b4vrmiayqlzdsh2j5hc3zv4l0fqvbrbw9y6763ii"))))
304 (build-system python-build-system)
305 (arguments
306 '(#:phases
307 (modify-phases %standard-phases
308 (replace 'check
e8e3c357 309 (lambda _ (invoke "python" "mpd_test.py"))))))
efe0b143
LF
310 (native-inputs `(("python-mock" ,python-mock)))
311 (home-page "https://github.com/Mic92/python-mpd2")
312 (synopsis "Python MPD client library")
313 (description "Python-mpd2 is a Python library which provides a client
314interface for the Music Player Daemon.")
5c31f4aa 315 (license license:lgpl3+)))
efe0b143
LF
316
317(define-public python2-mpd2
5c31f4aa 318 (package-with-python2 python-mpd2))
6c86cef5
CB
319
320(define-public sonata
321 (package
322 (name "sonata")
323 (version "1.7b1")
324 (source (origin
325 (method url-fetch)
326 (uri
327 (string-append "https://github.com/multani/sonata/archive/v"
328 version ".tar.gz"))
329 (file-name (string-append name "-" version ".tar.gz"))
330 (sha256
331 (base32
332 "07gq2nxqwxs0qyxjbay7k5j25zd386bn7wdr2dl1gk53diwnn7s0"))))
333 (build-system python-build-system)
334 (arguments
335 `(#:modules ((guix build gnu-build-system)
336 (guix build python-build-system)
337 ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
338 (guix build utils))
339 #:imported-modules (,@%gnu-build-system-modules
340 (guix build python-build-system)
341 (guix build glib-or-gtk-build-system))
342 #:phases
343 (modify-phases %standard-phases
344 (add-after 'install 'glib-or-gtk-wrap
345 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
346 (add-after 'install 'wrap-sonata
347 (lambda* (#:key outputs #:allow-other-keys)
348 (let ((out (assoc-ref outputs "out"))
349 (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
350 (wrap-program (string-append out "/bin/sonata")
351 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
352 #t)))))
353 (native-inputs
7c90d0f4 354 `(("gettext" ,gettext-minimal)))
6c86cef5
CB
355 (inputs
356 `(("python-mpd2" ,python-mpd2)
357 ("gtk+" ,gtk+)
358 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
359 ("gobject-introspection" ,gobject-introspection)
360 ("adwaita-icon-theme" ,adwaita-icon-theme)
361 ("python-pygobject" ,python-pygobject)))
362 (synopsis "Elegant client for the Music Player Daemon")
363 (description "Sonata is an elegant graphical client for the Music Player
364Daemon (MPD). It supports playlists, multiple profiles (connecting to different
365MPD servers, search and multimedia key support.")
340978d7 366 (home-page "https://www.nongnu.org/sonata/")
6c86cef5 367 (license license:gpl3+)))