gnu: libdrm: Switch to meson-build-system.
[jackhill/guix/guix.git] / gnu / packages / mpd.scm
index eb45974..bb386f5 100644 (file)
@@ -4,7 +4,8 @@
 ;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
 ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
-;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2016, 2018, 2019 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
   #:use-module (guix download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system meson)
   #:use-module (guix build-system python)
   #:use-module (gnu packages avahi)
   #:use-module (gnu packages boost)
-  #:use-module (gnu packages gcc) ; GCC@5 for MPD >= 0.20
+  #:use-module (gnu packages gcc)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages readline)
+  #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages mp3)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages pcre)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages pulseaudio)
-  #:use-module (gnu packages databases)
+  #:use-module (gnu packages sqlite)
   #:use-module (gnu packages video)
   #:use-module (gnu packages xiph))
 
 (define-public libmpdclient
   (package
     (name "libmpdclient")
-    (version "2.11")
+    (version "2.16")
     (source (origin
               (method url-fetch)
               (uri
-               (string-append "http://musicpd.org/download/libmpdclient/"
+               (string-append "https://musicpd.org/download/libmpdclient/"
                               (car (string-split version #\.))
                               "/libmpdclient-" version ".tar.xz"))
               (sha256
                (base32
-                "1xms8q44g6zc7sc212qpcihq6ch3pmph3i1m9hzymmy0jcw6kzhm"))))
-    (build-system gnu-build-system)
-    (native-inputs `(("doxygen" ,doxygen)))
+                "0r24cl3i9nvs6a47mvwaxk1kb5wmnhkhrw1q5cq9010fgjvdlszs"))))
+    (build-system meson-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+
+       ;; For building HTML documentation.
+       ("doxygen" ,doxygen)
+
+       ;; For tests.
+       ("check" ,check)))
+    (arguments
+     `(#:configure-flags
+       (list "-Ddocumentation=true"
+             "-Dtest=true")))
     (synopsis "Music Player Daemon client library")
     (description "A stable, documented, asynchronous API library for
 interfacing MPD in the C, C++ & Objective C languages.")
-    (home-page "http://www.musicpd.org/libs/libmpdclient/")
+    (home-page "https://www.musicpd.org/libs/libmpdclient/")
     (license license:bsd-3)))
 
 (define-public mpd
   (package
     (name "mpd")
-    (version "0.20.9")
+    (version "0.21.5")
     (source (origin
               (method url-fetch)
               (uri
-               (string-append "http://musicpd.org/download/mpd/"
+               (string-append "https://musicpd.org/download/mpd/"
                               (version-major+minor version)
                               "/mpd-" version ".tar.xz"))
               (sha256
                (base32
-                "1dsfwd0i81x8m9idi7idm9612mpf1g5lzcy69h04nd9jks3a4xyd"))))
-    (build-system gnu-build-system)
+                "1y8fbch4xp96i4mz6czivnwvaf7g8pnfix5d0pbybnkv7bmz1a9f"))))
+    (build-system meson-build-system)
     (arguments
-     `(#:phases
+     `(#:configure-flags '("-Ddocumentation=true") ; The default is 'false'...
+       #:phases
        (modify-phases %standard-phases
-         (add-after 'install 'install-service-files
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (systemd (string-append out "/etc/systemd/system"))
-                    (systemd-user (string-append out "/etc/systemd/user")))
-               (install-file "systemd/system/mpd.service" systemd)
-               (install-file "systemd/user/mpd.service" systemd-user)
+         (add-before 'configure 'expand-C++-include-path
+           ;; Make <gcc>/include/c++/ext/string_conversions.h find <stdlib.h>.
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let* ((path "CPLUS_INCLUDE_PATH")
+                    (gcc  (assoc-ref inputs "gcc"))
+                    (c++  (string-append gcc "/include/c++")))
+               (setenv path (string-append c++ ":" (getenv path)))
                #t))))))
     (inputs `(("ao" ,ao)
               ("alsa-lib" ,alsa-lib)
@@ -106,9 +123,10 @@ interfacing MPD in the C, C++ & Objective C languages.")
               ("flac" ,flac)
               ("glib" ,glib)
               ("icu4c" ,icu4c)
+              ;; The LAME decoder comes from FFmpeg, but is added here so that
+              ;; configure picks up the LAME encoder.
               ("lame" ,lame)
               ("libid3tag" ,libid3tag)
-              ("libmad" ,libmad)
               ("libmpdclient" ,libmpdclient)
               ("libsamplerate" ,libsamplerate)
               ("libsndfile" ,libsndfile)
@@ -117,7 +135,11 @@ interfacing MPD in the C, C++ & Objective C languages.")
               ("pulseaudio" ,pulseaudio)
               ("sqlite" ,sqlite)
               ("zlib" ,zlib)))
-    (native-inputs `(("pkg-config" ,pkg-config)))
+    ;; MPD > 0.21 requires > GCC 6
+    (native-inputs `(("gcc" ,gcc-8)
+                     ("gcc-lib" ,gcc-8 "lib")
+                     ("pkg-config" ,pkg-config)
+                     ("python-sphinx" ,python-sphinx)))
     ;; Missing optional inputs:
     ;;   libyajl
     ;;   libcdio_paranoia
@@ -143,59 +165,81 @@ interfacing MPD in the C, C++ & Objective C languages.")
 server-side application for playing music.  Through plugins and libraries it
 can play a variety of sound files while being controlled by its network
 protocol.")
-    (home-page "http://www.musicpd.org/")
+    (home-page "https://www.musicpd.org/")
     (license license:gpl2)))
 
 (define-public mpd-mpc
   (package
     (name "mpd-mpc")
-    (version "0.28")
+    (version "0.31")
     (source (origin
               (method url-fetch)
               (uri
-               (string-append "http://www.musicpd.org/download/mpc/"
+               (string-append "https://www.musicpd.org/download/mpc/"
                               (car (string-split version #\.))
                               "/mpc-" version ".tar.xz"))
               (sha256
                (base32
-                "0iy5mdffkk61255f62si7p8mhyhkib70zlr1i1iimj2xr037scx4"))))
-    (build-system gnu-build-system)
+                "0b9bsn4sl26xc6wdcms51x9yxznkxkppaycn8gnv4rd1m21kwdv2"))))
+    (build-system meson-build-system)
     (inputs `(("libmpdclient" ,libmpdclient)))
-    (native-inputs `(("pkg-config" ,pkg-config)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("python-sphinx" ,python-sphinx)))
     (synopsis "Music Player Daemon client")
     (description "MPC is a minimalist command line interface to MPD, the music
 player daemon.")
-    (home-page "http://www.musicpd.org/clients/mpc/")
+    (home-page "https://www.musicpd.org/clients/mpc/")
     (license license:gpl2)))
 
 (define-public ncmpc
   (package
     (name "ncmpc")
-    (version "0.27")
+    (version "0.33")
     (source (origin
               (method url-fetch)
               (uri
                (string-append "http://musicpd.org/download/ncmpc/"
-                              (car (string-split version #\.))
+                              (version-major version)
                               "/ncmpc-" version ".tar.xz"))
               (sha256
                (base32
-                "1n8m7syhpgx24hfipixv66h2izn229jkxsmh2q5dzkv9r0znm8pr"))))
-    (build-system gnu-build-system)
-    (inputs `(("glib" ,glib)
+                "19fp7xkpai4lq3vmpbppgh3ism7lg2sibv237c0sl5a0hls4mq4l"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:configure-flags
+       ;; Otherwise, they are installed incorrectly, in
+       ;; '$out/share/man/man/man1'.
+       (list (string-append "-Dmandir=" (assoc-ref %outputs "out")
+                            "/share"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'expand-C++-include-path
+           ;; Make <gcc>/include/c++/ext/string_conversions.h find <stdlib.h>.
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let* ((path "CPLUS_INCLUDE_PATH")
+                    (gcc  (assoc-ref inputs "gcc"))
+                    (c++  (string-append gcc "/include/c++")))
+               (setenv path (string-append c++ ":" (getenv path)))
+               #t))))))
+    (inputs `(("gcc" ,gcc-8)            ; for its C++14 support
+              ("boost" ,boost)
+              ("pcre" ,pcre)
               ("libmpdclient" ,libmpdclient)
               ("ncurses" ,ncurses)))
-    (native-inputs `(("pkg-config" ,pkg-config)))
+    (native-inputs `(("gettext" ,gettext-minimal) ; for xgettext
+                     ("pkg-config" ,pkg-config)
+                     ("python-sphinx" ,python-sphinx)))
     (synopsis "Curses Music Player Daemon client")
     (description "ncmpc is a fully featured MPD client, which runs in a
 terminal using ncurses.")
-    (home-page "http://www.musicpd.org/clients/ncmpc/")
+    (home-page "https://www.musicpd.org/clients/ncmpc/")
     (license license:gpl2)))
 
 (define-public ncmpcpp
   (package
     (name "ncmpcpp")
-    (version "0.8")
+    (version "0.8.2")
     (source (origin
               (method url-fetch)
               (uri
@@ -203,7 +247,7 @@ terminal using ncurses.")
                               version ".tar.bz2"))
               (sha256
                (base32
-                "0nj6ky805a55acj0w57sbn3vfmmkbqp97rhbi0q9848n10f2l3rg"))))
+                "0m0mjb049sl62vx13h9waavysa30mk0rphacksnvf94n13la62v5"))))
     (build-system gnu-build-system)
     (inputs `(("libmpdclient" ,libmpdclient)
               ("boost"  ,boost)
@@ -244,9 +288,7 @@ sort playlists, and a local file system browser.")
     (synopsis "MPD client for track scrobbling")
     (description "mpdscribble is a Music Player Daemon client which submits
 information about tracks being played to a scrobbler, such as Libre.FM.")
-    ;; musicpd.org doesn't mention mpdscribble.  It points users to this wiki
-    ;; instead.
-    (home-page "http://mpd.wikia.com/wiki/Client:Mpdscribble")
+    (home-page "https://www.musicpd.org/clients/mpdscribble/")
     (license license:gpl2+)))
 
 (define-public python-mpd2
@@ -264,7 +306,7 @@ information about tracks being played to a scrobbler, such as Libre.FM.")
      '(#:phases
        (modify-phases %standard-phases
          (replace 'check
-           (lambda _ (zero? (system* "python" "mpd_test.py")))))))
+           (lambda _ (invoke "python" "mpd_test.py"))))))
     (native-inputs `(("python-mock" ,python-mock)))
     (home-page "https://github.com/Mic92/python-mpd2")
     (synopsis "Python MPD client library")
@@ -321,5 +363,5 @@ interface for the Music Player Daemon.")
     (description "Sonata is an elegant graphical client for the Music Player
 Daemon (MPD).  It supports playlists, multiple profiles (connecting to different
 MPD servers, search and multimedia key support.")
-    (home-page "http://www.nongnu.org/sonata/")
+    (home-page "https://www.nongnu.org/sonata/")
     (license license:gpl3+)))