[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug#37329] [PATCH] gnu: Add audacious.

From: Tobias Geerinckx-Rice
Subject: [bug#37329] [PATCH] gnu: Add audacious.
Date: Sat, 07 Sep 2019 13:45:40 +0200


Kei Kebreau 写道:
* gnu/packages/music.scm (audacious): New variable.
gnu/packages/music.scm | 102 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 102 insertions(+)

diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index a43bccf4f8..33c53dec35 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -203,6 +203,108 @@ and play MIDI files with a few clicks in a user-friendly interface offering
 score, keyboard, guitar, drum and controller views.")
     (license license:gpl3+)))
+(define-public audacious
+  (package
+    (name "audacious")
+    (version "3.10.1")
+    (source (origin
+              (method url-fetch)
+ (uri (string-append ""; + "audacious-" version ".tar.bz2"))
+              (sha256
+               (base32
+ "14vbkhld5hwh96j8p8hjq9ybvc2m060a1y8crz14i51wpd0fhrl3"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list "--disable-gtk" "--enable-qt"
+             ;; Add the output lib directory to the RUNPATH.
+ (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib"))

This comment just repeats the code, so it's not needed.

+       #:tests? #f ; no check target

Could you run C-M-q (or etc/indent-code.el) on the whole definition? That will allow later editors to do the same without changing unrelated lines.

+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'unpack-plugins
+           (lambda* (#:key inputs #:allow-other-keys)
+ (let ((plugins (assoc-ref inputs "audacious-plugins")))
+               (invoke "tar" "xvf" plugins)
+ (chdir (string-append "audacious-plugins-" ,version))

It's not wrong, and I know this saves (with-directory-excursion)s down the road, but brr. :-)

+               #t)))
+         (add-after 'unpack-plugins 'configure-plugins
+ (lambda* (#:key configure-flags outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* "configure"
+                 (("/bin/sh") (which "sh")))
+               (apply invoke "./configure"
+                      (append configure-flags
+ ;; audacious-plugins requires audacious to build. + (list (string-append "PKG_CONFIG_PATH=" + out "/lib/pkgconfig:" + (getenv "PKG_CONFIG_PATH")) + (string-append "--prefix=" out)))))))
+         (add-after 'configure-plugins 'build-plugins
+           (lambda _
+ (invoke "make" "-j" (number->string (parallel-job-count)))))
+         (add-after 'build-plugins 'install-plugins
+           (lambda _
+             (invoke "make" "install"))))))
+    (native-inputs
+     `(("audacious-plugins"
+        ,(origin
+           (method url-fetch)
+ (uri (string-append "https://distfiles.audacious-media-playerorg/";

+ "audacious-plugins-" version ".tar.bz2"))
+           (sha256
+            (base32
+ "0hi61825ayrwc4snwr76f2669k06fii3n8ll1szjk5zr65v1ghzf"))))

I don't mind bundling these like this (Audacious's a leaf package and — subjectively — media things are allowed/expected to be a bit bloaty), but it may prove controversial :-)

Would it not be worth supporting a plug-in search path? Are there, for example, well-supported Audacious plug-ins that aren't part of this collection?

$ guix size audacious-with-plugins # although I'd prefer 2 packages
 total: 1649.2 MiB

 $ guix size audacious # no plugins or plugin inputs
 total: 1333.9 MiB

Have you considered a separate ‘audacious-plugins’ package that could use that mechanism? Why [not]?

+       ("gettext" ,gettext-minimal)
+       ("glib:bin" ,glib "bin") ; for gdbus-codegen
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("dbus" ,dbus)
+       ("glib" ,glib)
+       ("qtbase" ,qtbase)
+       ;; Plugin dependencies
+       ("alsa-lib" ,alsa-lib)
+       ("curl" ,curl)
+       ("ffmpeg" ,ffmpeg)
+       ("flac" ,flac)
+       ("fluidsynth" ,fluidsynth)
+       ("gdk-pixbuf" ,gdk-pixbuf)
+       ("libbs2b" ,libbs2b)
+       ("libcddb" ,libcddb)
+       ("libcdio-paranoia" ,libcdio-paranoia)
+       ("libcue" ,libcue)
+       ("libmodplug" ,libmodplug)
+       ("libnotify" ,libnotify)
+       ("libogg" ,libogg)
+       ("libsamplerate" ,libsamplerate)
+       ("libsndfile" ,libsndfile)
+       ("libvorbis" ,libvorbis)
+       ("libxml2" ,libxml2)
+       ("lirc" ,lirc)
+       ("jack" ,jack-1)
+       ("mpg123" ,mpg123)
+       ("neon" ,neon)
+       ("pulseaudio" ,pulseaudio)
+       ("qtmultimedia" ,qtmultimedia)
+       ("soxr" ,soxr)
+       ("wavpack" ,wavpack)))
+    (home-page "";)
+    (synopsis "Audio player based on XMMS")

Hmm. To me, ‘Foo copied a lot of files from bar once’ is never a useful answer to ‘What is foo?’.

All ‘XMMS’ means to me is ‘that ugly audio player I installed and then immediately removed in the nineties’. Now, that may be all I need to know about Audacious, I don't know :o)

I hope it's not. Is there something in particular that distinguishes Audacious from most other players that we could mention instead?

+    (description
+ "Audacious is an audio player descended from XMMS. Drag and drop folders +and individual song files, search for artists and albums in your entire music +library, or create and edit your own custom playlists. Listen to CD’s or stream +music from the Internet. Tweak the sound with the graphical equalizer or +experiment with LADSPA effects. Enjoy the modern GTK-themed interface or change +things up with Winamp Classic skins. Use the plugins included with Audacious to +fetch lyrics for your music, to set an alarm in the morning, and more.") + ;; According to COPYING, Audacious and its plugins are licensed under the + ;; BSD 2-clause license and libguess is licensed under the BSD 3-clause
+    ;; license.
+    (license (list license:bsd-2
+                   license:bsd-3))))


“Please note that many of the plugins distributed with Audacious are under
 different licenses.”

And indeed, I see quite a bit of GPL and some ISC code in there.



Attachment: signature.asc
Description: PGP signature

reply via email to

[Prev in Thread] Current Thread [Next in Thread]