From: Kei Kebreau <kkebreau@posteo.net>
To: Ricardo Wurmus <rekado@elephly.net>
Cc: 37329@debbugs.gnu.org
Subject: [bug#37329] [PATCH] gnu: Add audacious.
Date: Sat, 07 Sep 2019 20:18:28 -0400 [thread overview]
Message-ID: <87muffiqsr.fsf@posteo.net> (raw)
In-Reply-To: <87y2yzu9as.fsf@elephly.net> (Ricardo Wurmus's message of "Sat, 07 Sep 2019 22:43:23 +0200")
[-- Attachment #1.1: Type: text/plain, Size: 2064 bytes --]
Ricardo Wurmus <rekado@elephly.net> writes:
> Kei Kebreau <kkebreau@posteo.net> writes:
>
>>>> + (arguments
>>>> + `(#:configure-flags
>>>> + (list "--disable-gtk" "--enable-qt"
>>
>> In reply to your later email: I used Qt instead of the default GTK+ 2
>> because of a personal preference, but apparently it's possible to enable
>> both to let users choose what they prefer.
>
> Would this retain references to *both* toolkits? Wouldn’t this make the
> package much bigger than it otherwise would be?
>
> What’s the smaller variant…?
>
Enabling both toolkits would retain references to both, but it isn't
much larger than enabling only Qt. That said, a GTK+ 2
exclusive build is smaller than a Qt exclusive one by a large margin:
Excluding plugins:
* Both toolkits: 1495.1 MiB
* Qt only: 1344.2 MiB
* GTK+ 2 only: 538.0 MiB
Including plugins:
* Both toolkits: 1736.2 MiB
* Qt only: 1734.9 MiB
* GTK+ 2 only: 1126.6 MiB
>>>> + #: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. :-)
>>>
>>
>> Is it the lack of clarity in later phases that's undesirable?
>
> It’s a littly icky to have phases modify global state (other than the
> files they operate on), because it is no longer enough to look at just
> the phase of interest. If it can be avoided without making things too
> ugly I’d prefer to avoid “chdir” here.
Understood. Adding a few "with-directory-excursion" calls isn't a bad
addition here. I've attached a new patch with all three toolkit options
(Qt only, GTK+ 2 only, both) included for testing purposes.
[-- Attachment #1.2: 0001-gnu-Add-audacious.patch --]
[-- Type: text/plain, Size: 7185 bytes --]
From 7b2b638fc518d9362f1715144d4f50fa5761dcb0 Mon Sep 17 00:00:00 2001
From: Kei Kebreau <kkebreau@posteo.net>
Date: Sat, 7 Sep 2019 00:48:16 -0400
Subject: [PATCH] gnu: Add audacious.
* gnu/packages/music.scm (audacious): New variable.
---
gnu/packages/music.scm | 147 ++++++++++++++++++++++++++++++++++++++++-
1 file changed, 146 insertions(+), 1 deletion(-)
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index a43bccf4f8..0037566519 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -141,7 +141,7 @@
#:use-module (gnu packages xiph)
#:use-module (gnu packages golang)
#:use-module (gnu packages lua)
- #:use-module ((srfi srfi-1) #:select (last)))
+ #:use-module ((srfi srfi-1) #:select (alist-delete last)))
(define-public aria-maestosa
(package
@@ -203,6 +203,151 @@ 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 "https://distfiles.audacious-media-player.org/"
+ "audacious-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "14vbkhld5hwh96j8p8hjq9ybvc2m060a1y8crz14i51wpd0fhrl3"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:configure-flags
+ (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib"))
+ #:tests? #f ; no check target
+ #: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)
+ #t)))
+ (add-after 'unpack-plugins 'configure-plugins
+ (lambda* (#:key configure-flags outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (with-directory-excursion
+ (string-append "audacious-plugins-" ,version)
+ (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 _
+ (with-directory-excursion
+ (string-append "audacious-plugins-" ,version)
+ (invoke "make" "-j" (number->string (parallel-job-count))))))
+ (add-after 'build-plugins 'install-plugins
+ (lambda _
+ (with-directory-excursion
+ (string-append "audacious-plugins-" ,version)
+ (invoke "make" "install")))))))
+ (native-inputs
+ `(("audacious-plugins"
+ ,(origin
+ (method url-fetch)
+ (uri (string-append "https://distfiles.audacious-media-player.org/"
+ "audacious-plugins-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "0hi61825ayrwc4snwr76f2669k06fii3n8ll1szjk5zr65v1ghzf"))))
+ ("gettext" ,gettext-minimal)
+ ("glib:bin" ,glib "bin") ; for gdbus-codegen
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ `(("dbus" ,dbus)
+ ("glib" ,glib)
+ ("gtk+" ,gtk+-2)
+ ;; Plugin dependencies
+ ("alsa-lib" ,alsa-lib)
+ ("curl" ,curl)
+ ("faad2" ,faad2)
+ ("ffmpeg" ,ffmpeg)
+ ("flac" ,flac)
+ ("fluidsynth" ,fluidsynth)
+ ("gdk-pixbuf" ,gdk-pixbuf)
+ ("lame" ,lame)
+ ("libbs2b" ,libbs2b)
+ ("libcddb" ,libcddb)
+ ("libcdio-paranoia" ,libcdio-paranoia)
+ ("libcue" ,libcue)
+ ("libmodplug" ,libmodplug)
+ ("libnotify" ,libnotify)
+ ("libogg" ,libogg)
+ ("libsamplerate" ,libsamplerate)
+ ("libsndfile" ,libsndfile)
+ ("libvorbis" ,libvorbis)
+ ("libxcomposite" ,libxcomposite)
+ ("libxml2" ,libxml2)
+ ("libxrender" ,libxrender)
+ ("lirc" ,lirc)
+ ("jack" ,jack-1)
+ ("mesa" ,mesa)
+ ("mpg123" ,mpg123)
+ ("neon" ,neon)
+ ("pulseaudio" ,pulseaudio)
+ ("sdl2" ,sdl2)
+ ("soxr" ,soxr)
+ ("wavpack" ,wavpack)))
+ (home-page "https://audacious-media-player.org")
+ (synopsis "Modular and skinnable audio player")
+ (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
+ ;; Plugin licenses that aren't BSD 2- or 3-clause.
+ license:lgpl2.1+
+ license:gpl2
+ license:gpl2+
+ license:gpl3
+ license:gpl3+
+ license:expat
+ license:isc
+ license:lgpl2.0))))
+
+(define-public audacious-qt
+ (package
+ (inherit audacious)
+ (name "audacious-qt")
+ (arguments
+ (substitute-keyword-arguments (package-arguments audacious)
+ ((#:configure-flags flags)
+ `(cons* "--disable-gtk" "--enable-qt" ,flags))))
+ (inputs
+ `(("qtbase" ,qtbase)
+ ("qtmultimedia" ,qtmultimedia)
+ ,@(alist-delete "gtk+" (package-inputs audacious))))))
+
+(define-public audacious-both
+ (package
+ (inherit audacious)
+ (name "audacious-both")
+ (arguments
+ (substitute-keyword-arguments (package-arguments audacious)
+ ((#:configure-flags flags)
+ `(cons* "--enable-qt" ,flags))))
+ (inputs
+ `(("qtbase" ,qtbase)
+ ("qtmultimedia" ,qtmultimedia)
+ ,@(package-inputs audacious)))))
+
;; We don't use the latest release because it depends on Qt4. Instead we
;; download the sources from the tip of the "qt5" branch.
(define-public clementine
--
2.23.0
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
next prev parent reply other threads:[~2019-09-08 0:19 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-07 4:57 [bug#37329] [PATCH] gnu: Add audacious Kei Kebreau
2019-09-07 11:45 ` Tobias Geerinckx-Rice via Guix-patches via
2019-09-07 12:04 ` Tobias Geerinckx-Rice via Guix-patches via
2019-09-07 14:56 ` Kei Kebreau
2019-09-07 20:43 ` Ricardo Wurmus
2019-09-08 0:18 ` Kei Kebreau [this message]
2020-11-18 17:14 ` Nicolas Goaziou
2020-11-26 17:35 ` bug#37329: " Nicolas Goaziou
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87muffiqsr.fsf@posteo.net \
--to=kkebreau@posteo.net \
--cc=37329@debbugs.gnu.org \
--cc=rekado@elephly.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).