gnu: r-biocviews: Update to 1.64.1.
[jackhill/guix/guix.git] / gnu / packages / mpd.scm
index de5a7d3..05737f3 100644 (file)
@@ -30,6 +30,7 @@
 (define-module (gnu packages mpd)
   #:use-module (gnu packages)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix gexp)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages avahi)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages build-tools) ;meson-next
   #:use-module (gnu packages boost)
   #:use-module (gnu packages cdrom)
   #:use-module (gnu packages cmake) ;for MPD
+  #:use-module (gnu packages freedesktop) ;elogind
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
@@ -76,7 +79,7 @@
 (define-public libmpdclient
   (package
     (name "libmpdclient")
-    (version "2.19")
+    (version "2.20")
     (source (origin
               (method url-fetch)
               (uri
                               "/libmpdclient-" version ".tar.xz"))
               (sha256
                (base32
-                "12d1fzlkcnjw4ayk2wp11vhglfcvr5k02arzdbkhiavq496av2hm"))))
+                "0z979qcjc0dqmpn3q9j174a29akx3zmavz6q6hg31hrrx5l3yy8q"))))
     (build-system meson-build-system)
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-
-       ;; For building HTML documentation.
-       ("doxygen" ,doxygen)
-
-       ;; For tests.
-       ("check" ,check)))
+     (list pkg-config
+           ;; For building HTML documentation.
+           doxygen
+           ;; For tests.
+           check))
     (arguments
      `(#:configure-flags
        (list "-Ddocumentation=true"
@@ -108,7 +109,7 @@ interfacing MPD in the C, C++ & Objective C languages.")
 (define-public mpd
   (package
     (name "mpd")
-    (version "0.23.4")
+    (version "0.23.8")
     (source (origin
               (method url-fetch)
               (uri
@@ -117,35 +118,49 @@ interfacing MPD in the C, C++ & Objective C languages.")
                               "/mpd-" version ".tar.xz"))
               (sha256
                (base32
-                "0m67wibxc6n6438h2va59n51wwwbwhbdj9635cnpc3wqvlq9sd9g"))))
+                "1kvq9shd6b7y02r386s1chjmvs44wij5bfzn6qgq46dmyfdmdfw6"))))
     (build-system meson-build-system)
     (arguments
-     `(#:configure-flags '("-Ddocumentation=enabled")))
-    (inputs `(("ao" ,ao)
-              ("alsa-lib" ,alsa-lib)
-              ("avahi" ,avahi)
-              ("boost" ,boost)
-              ("curl" ,curl)
-              ("ffmpeg" ,ffmpeg)
-              ("flac" ,flac)
-              ("fmt" ,fmt)
-              ("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)
-              ("libmpdclient" ,libmpdclient)
-              ("libsamplerate" ,libsamplerate)
-              ("libsndfile" ,libsndfile)
-              ("libvorbis" ,libvorbis)
-              ("opus" ,opus)
-              ("pulseaudio" ,pulseaudio)
-              ("sqlite" ,sqlite)
-              ("zlib" ,zlib)))
-    (native-inputs `(("cmake" ,cmake)
-                     ("pkg-config" ,pkg-config)
-                     ("python-sphinx" ,python-sphinx)))
+     (list
+      #:configure-flags #~(list "-Ddocumentation=enabled"
+                                "-Dsystemd=enabled")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'enable-elogind
+            (lambda _
+              (substitute* "src/lib/systemd/meson.build"
+                (("libsystemd") "libelogind"))
+              ;; XXX: systemd dependency overwritten internally, leads to bad
+              ;;      errors
+              (substitute* "src/lib/systemd/meson.build"
+                (("systemd_dep = declare_dependency" all)
+                 (string-append "_" all)))
+              (substitute* "meson.build"
+                (("systemd_dep,") "systemd_dep, _systemd_dep,")))))))
+    (inputs (list ao
+                  alsa-lib
+                  avahi
+                  boost
+                  curl
+                  elogind
+                  ffmpeg
+                  flac
+                  fmt
+                  glib
+                  icu4c
+                  ;; The LAME decoder comes from FFmpeg, but is added here so that
+                  ;; configure picks up the LAME encoder.
+                  lame
+                  libid3tag
+                  libmpdclient
+                  libsamplerate
+                  libsndfile
+                  libvorbis
+                  opus
+                  pulseaudio
+                  sqlite
+                  zlib))
+    (native-inputs (list cmake pkg-config python-sphinx))
     ;; Missing optional inputs:
     ;;   libyajl
     ;;   libcdio_paranoia
@@ -178,7 +193,7 @@ protocol.")
 (define-public mpd-mpc
   (package
     (name "mpd-mpc")
-    (version "0.33")
+    (version "0.34")
     (source (origin
               (method url-fetch)
               (uri
@@ -187,12 +202,22 @@ protocol.")
                               "/mpc-" version ".tar.xz"))
               (sha256
                (base32
-                "15hjpzqs83v1zx49x8nkpwy9hpl1jxd55z1w50vm82gm32zcqh2g"))))
+                "086sdx88zvgbv4j9kw4qlrsw1n621d6j6403pcid045wahv3y7k9"))))
     (build-system meson-build-system)
-    (inputs `(("libmpdclient" ,libmpdclient)))
+    (arguments
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'remove-bogus-rsync-requirement
+                 ;; Meson thinks a maintainer ‘upload to musicpd.org’ task
+                 ;; merits a hard dependency on rsync.  Convince it otherwise.
+                 ;; Don't use ‘true’ so that the build will fail if it is ever
+                 ;; actually invoked.
+                 (lambda _
+                   (substitute* "doc/meson.build"
+                     (("rsync") "ls")))))))
+    (inputs (list libmpdclient))
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("python-sphinx" ,python-sphinx)))
+     (list pkg-config python-sphinx))
     (synopsis "Music Player Daemon client")
     (description "MPC is a minimalist command line interface to MPD, the music
 player daemon.")
@@ -202,7 +227,7 @@ player daemon.")
 (define-public ncmpc
   (package
     (name "ncmpc")
-    (version "0.45")
+    (version "0.47")
     (source (origin
               (method url-fetch)
               (uri
@@ -211,21 +236,13 @@ player daemon.")
                               "/ncmpc-" version ".tar.xz"))
               (sha256
                (base32
-                "11gpy6kd7xr8x7f7gwdwfryxyc58cd135ds28gnz40p08xj49zqp"))))
+                "1714saz8m6y2chby0c1qh3vgqc3srlr1jq98vhzmjykcpjqj7nk1"))))
     (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"))))
-    (inputs `(("boost" ,boost)
-              ("pcre" ,pcre)
-              ("libmpdclient" ,libmpdclient)
-              ("ncurses" ,ncurses)))
-    (native-inputs `(("gettext" ,gettext-minimal) ; for xgettext
-                     ("pkg-config" ,pkg-config)
-                     ("python-sphinx" ,python-sphinx)))
+    (inputs (list boost pcre libmpdclient ncurses))
+    (native-inputs
+     (list gettext-minimal              ; for xgettext
+           pkg-config
+           python-sphinx))
     (synopsis "Curses Music Player Daemon client")
     (description "ncmpc is a fully featured MPD client, which runs in a
 terminal using ncurses.")
@@ -245,15 +262,15 @@ terminal using ncurses.")
                (base32
                 "06rs734n120jp51hr0fkkhxrm7zscbhpdwls0m5b5cccghazdazs"))))
     (build-system gnu-build-system)
-    (inputs `(("libmpdclient" ,libmpdclient)
-              ("boost"  ,boost)
-              ("readline" ,readline)
-              ("ncurses" ,ncurses)
-              ("taglib" ,taglib)
-              ("icu4c" ,icu4c)
-              ("curl" ,curl)))
+    (inputs (list libmpdclient
+                  boost
+                  readline
+                  ncurses
+                  taglib
+                  icu4c
+                  curl))
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     (list pkg-config))
     (arguments
      '(#:configure-flags
        '("BOOST_LIB_SUFFIX=" "--with-taglib" "--enable-clock")))
@@ -268,20 +285,17 @@ sort playlists, and a local file system browser.")
 (define-public mpdscribble
   (package
     (name "mpdscribble")
-    (version "0.23")
+    (version "0.24")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://www.musicpd.org/download/mpdscribble/"
                                   version "/mpdscribble-" version ".tar.xz"))
               (sha256
                (base32
-                "0s66zqscb44p88cl3kcv5jkjcqsskcnrv7xgrjhzrchf2kcpwf53"))))
+                "1rx8n8pvx3a6n6z51pgy00p4rs93iqy95d3ha9q7xf5k92kwpd7n"))))
     (build-system meson-build-system)
-    (inputs `(("boost" ,boost)
-              ("curl" ,curl)
-              ("libgcrypt" ,libgcrypt)
-              ("libmpdclient" ,libmpdclient)))
-    (native-inputs `(("pkg-config" ,pkg-config)))
+    (inputs (list boost curl libgcrypt libmpdclient))
+    (native-inputs (list pkg-config))
     (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.")
@@ -305,8 +319,7 @@ information about tracks being played to a scrobbler, such as Libre.FM.")
          (replace 'check
            (lambda _ (invoke "python" "-m" "pytest" "mpd/tests.py"))))))
     (native-inputs
-     `(("python-mock" ,python-mock)
-       ("python-pytest" ,python-pytest)))
+     (list python-mock python-pytest))
     (home-page "https://github.com/Mic92/python-mpd2")
     (synopsis "Python MPD client library")
     (description "Python-mpd2 is a Python library which provides a client
@@ -349,12 +362,12 @@ interface for the Music Player Daemon.")
     (native-inputs
      `(("gettext" ,gettext-minimal)))
     (inputs
-     `(("python-mpd2" ,python-mpd2)
-       ("gtk+" ,gtk+)
-       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
-       ("gobject-introspection" ,gobject-introspection)
-       ("adwaita-icon-theme" ,adwaita-icon-theme)
-       ("python-pygobject" ,python-pygobject)))
+     (list python-mpd2
+           gtk+
+           gsettings-desktop-schemas
+           gobject-introspection
+           adwaita-icon-theme
+           python-pygobject))
     (synopsis "Elegant client 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
@@ -375,8 +388,8 @@ MPD servers, search and multimedia key support.")
               (sha256
                (base32
                 "11aa95cg0yca2m2d00sar6wr14g3lc7cfm9bin1h7lk7asdm8azp"))))
-    (native-inputs `(("pkg-config" ,pkg-config)))
-    (inputs `(("libmpdclient" ,libmpdclient)))
+    (native-inputs (list pkg-config))
+    (inputs (list libmpdclient))
     (build-system meson-build-system)
     (home-page "https://github.com/joshkunz/ashuffle")
     (synopsis "Automatic library-wide shuffle for mpd")
@@ -412,10 +425,7 @@ other MPD frontends.")
                  `("GUIX_PYTHONPATH" ":" prefix (,python-path)))
                #t))))))
     (inputs
-     `(("python-mpd2" ,python-mpd2)
-       ("python-dbus" ,python-dbus)
-       ("python-pygobject" ,python-pygobject)
-       ("python" ,python)))             ; Sets GUIX_PYTHONPATH.
+     (list python-mpd2 python-dbus python-pygobject python))             ; Sets GUIX_PYTHONPATH.
     ;; For bootstrapping.
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -445,19 +455,19 @@ support")
     (arguments
      `(#:tests? #f)) ; No test suite
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     (list pkg-config))
     (inputs
-     `(("eudev" ,eudev)
-       ("ffmpeg" ,ffmpeg)
-       ("libcdio-paranoia" ,libcdio-paranoia)
-       ("libebur128" ,libebur128)
-       ("libmtp" ,libmtp)
-       ("mpg123" ,mpg123)
-       ("qtbase" ,qtbase-5)
-       ("qtmultimedia" ,qtmultimedia)
-       ("qtsvg" ,qtsvg)
-       ("taglib" ,taglib)
-       ("zlib" ,zlib)))
+     (list eudev
+           ffmpeg
+           libcdio-paranoia
+           libebur128
+           libmtp
+           mpg123
+           qtbase-5
+           qtmultimedia-5
+           qtsvg-5
+           taglib
+           zlib))
     (synopsis "Graphical MPD Client")
     (description "Cantata is a graphical client for the Music Player Daemon
 (MPD), using the Qt5 toolkit.  Its user interface is highly customizable,
@@ -488,11 +498,7 @@ artists along with albumart.")
        ("gobject-introspection" ,gobject-introspection)
        ("pkg-config" ,pkg-config)))
     (inputs
-     `(("avahi" ,avahi)
-       ("dconf" ,dconf)
-       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
-       ("gtk+" ,gtk+)
-       ("python-pygobject" ,python-pygobject)))
+     (list avahi dconf gsettings-desktop-schemas gtk+ python-pygobject))
     (arguments
      `(#:imported-modules ((guix build glib-or-gtk-build-system)
                            ,@%python-build-system-modules)
@@ -518,3 +524,37 @@ for your favorite MPD client but an addition to get a better
 album-experience.")
     (home-page "https://gitlab.com/coderkun/mcg")
     (license license:gpl3+)))
+
+(define-public mpdevil
+  (package
+    (name "mpdevil")
+    (version "1.7.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/SoongNoonien/mpdevil")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32 "1va8fqlz8qb68gvacnzmp4asnipi11316n1cv2wb41sml9d7v00j"))))
+    (build-system meson-build-system)
+    (arguments
+     (list
+      #:glib-or-gtk? #t
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
+            (lambda _
+              (let ((prog (string-append #$output "/bin/mpdevil")))
+                (wrap-program prog
+                  `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH")))
+                  `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))))))))
+    (inputs (list bash-minimal gtk+ python python-mpd2 python-pygobject))
+    (native-inputs (list `(,glib "bin")))
+    (home-page "https://github.com/SoongNoonien/mpdevil")
+    (synopsis "Music browser for the MPD")
+    (description "mpdevil is a music browser for the Music Player Daemon (MPD),
+which is focused on playing local music without the need of managing playlists.
+Instead of maintaining a client side database of your music library,
+mpdevil loads all tags and covers on demand.")
+    (license license:gpl3+)))