unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / Atom feed
* [bug#37329] [PATCH] gnu: Add audacious.
@ 2019-09-07  4:57 Kei Kebreau
  2019-09-07 11:45 ` Tobias Geerinckx-Rice via Guix-patches via
  2020-11-18 17:14 ` Nicolas Goaziou
  0 siblings, 2 replies; 8+ messages in thread
From: Kei Kebreau @ 2019-09-07  4:57 UTC (permalink / raw)
  To: 37329; +Cc: 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 "https://distfiles.audacious-media-player.org/"
+                                  "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"))
+       #: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)
+               (chdir (string-append "audacious-plugins-" ,version))
+               #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-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)
+       ("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 "https://audacious-media-player.org")
+    (synopsis "Audio player based on XMMS")
+    (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))))
+
 ;; 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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [bug#37329] [PATCH] gnu: Add audacious.
  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
  2020-11-18 17:14 ` Nicolas Goaziou
  1 sibling, 2 replies; 8+ messages in thread
From: Tobias Geerinckx-Rice via Guix-patches via @ 2019-09-07 11:45 UTC (permalink / raw)
  To: 37329; +Cc: kkebreau

[-- Attachment #1: Type: text/plain, Size: 7063 bytes --]

Kei,

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 
> "https://distfiles.audacious-media-player.org/"
> +                                  "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/"
                                                                     ^^^^^^^^^
Typo!

> +                               "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 "https://audacious-media-player.org")
> +    (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))))

From COPYING:

  “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.

Thanks!

T G-R

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 227 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [bug#37329] [PATCH] gnu: Add audacious.
  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
  1 sibling, 0 replies; 8+ messages in thread
From: Tobias Geerinckx-Rice via Guix-patches via @ 2019-09-07 12:04 UTC (permalink / raw)
  To: 37329, kkebreau

[-- Attachment #1: Type: text/plain, Size: 480 bytes --]

Kei,

Tobias Geerinckx-Rice via Guix-patches via 写道:
>> +    (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.

I forgot to ask: why Qt over GTK?  That would probably make an 
interesting comment.

Kind regards,

T G-R

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 227 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [bug#37329] [PATCH] gnu: Add audacious.
  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
  1 sibling, 1 reply; 8+ messages in thread
From: Kei Kebreau @ 2019-09-07 14:56 UTC (permalink / raw)
  To: Tobias Geerinckx-Rice; +Cc: 37329

[-- Attachment #1: Type: text/plain, Size: 8087 bytes --]

Tobias Geerinckx-Rice <me@tobias.gr> writes:

> Kei,
>
> 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
>> "https://distfiles.audacious-media-player.org/"
>> +                                  "audacious-" version ".tar.bz2"))
>> +              (sha256
>> +               (base32
>> + "14vbkhld5hwh96j8p8hjq9ybvc2m060a1y8crz14i51wpd0fhrl3"))))
>> +    (build-system gnu-build-system)
>> +    (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.

>> +             ;; 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.
>

Done for both!

>> +       #: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?

>> +               #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/"
>                                                                     ^^^^^^^^^
> Typo!
>

Nice catch, thanks!

>> +                               "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]?
>

Audacious fails to run without output plugins (e.g. Pulseaudio, JACK,
etc.), immediately asking the user whether audacious-plugins is
installed.  A separate audacious-plugins package would require audacious
as a dependency, and since such basic plugins are needed to run
audacious, I'm not sure how to split the packages in a way that would
avoid a dependency loop.

>> +       ("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 "https://audacious-media-player.org")
>> +    (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?
>

How about: "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))))
>
> From COPYING:
>
>  “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.
>

I'll root around for those extra licenses!

> Thanks!
>
> T G-R

Thanks for reviewing!

Kei

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [bug#37329] [PATCH] gnu: Add audacious.
  2019-09-07 14:56   ` Kei Kebreau
@ 2019-09-07 20:43     ` Ricardo Wurmus
  2019-09-08  0:18       ` Kei Kebreau
  0 siblings, 1 reply; 8+ messages in thread
From: Ricardo Wurmus @ 2019-09-07 20:43 UTC (permalink / raw)
  To: Kei Kebreau; +Cc: 37329


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…?

>>> +       #: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.

-- 
Ricardo

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [bug#37329] [PATCH] gnu: Add audacious.
  2019-09-07 20:43     ` Ricardo Wurmus
@ 2019-09-08  0:18       ` Kei Kebreau
  0 siblings, 0 replies; 8+ messages in thread
From: Kei Kebreau @ 2019-09-08  0:18 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: 37329


[-- 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 --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [bug#37329] [PATCH] gnu: Add audacious.
  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
@ 2020-11-18 17:14 ` Nicolas Goaziou
  2020-11-26 17:35   ` bug#37329: " Nicolas Goaziou
  1 sibling, 1 reply; 8+ messages in thread
From: Nicolas Goaziou @ 2020-11-18 17:14 UTC (permalink / raw)
  To: 37329

[-- Attachment #1: Type: text/plain, Size: 323 bytes --]

Hello,

I updated Kei's patch for Audacious 4.0.5. I dropped GTK-2, as it is in
maintenance mode only, and Qt is upstream default toolkit.

This is a beast, guix size reports 1459 MiB, but I assume its users do
not expect anything lightweight, since it is comes with plenty of
plugins.

WDYT?

Regards,
-- 
Nicolas Goaziou

[-- Attachment #2: Add audacious --]
[-- Type: text/x-diff, Size: 5744 bytes --]

From 96b9869fe7380299048ecd019ed9bc106c0c03ff Mon Sep 17 00:00:00 2001
From: Kei Kebrau <kkebrau@posteo.net>
Date: Wed, 18 Nov 2020 18:05:38 +0100
Subject: [PATCH] gnu: Add audacious.

* gnu/packages/music.scm (audacious): New variable.
---
 gnu/packages/music.scm | 117 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 117 insertions(+)

diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 0728144b60..c69182fbee 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -158,6 +158,123 @@
   #:use-module (gnu packages lua)
   #:use-module ((srfi srfi-1) #:select (last)))
 
+(define-public audacious
+  (package
+    (name "audacious")
+    (version "4.0.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://distfiles.audacious-media-player.org/"
+                           "audacious-" version ".tar.bz2"))
+       (sha256
+        (base32 "028zjgz0p7ys15lk2a30m5zcv9xrx3ga50wjsh4m4zxilgkakbji"))))
+    (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 "0ny5w1agr9jaz5w3wyyxf1ygmzmd1sivaf97lcm4z4w6529520lz"))))
+       ("gettext" ,gettext-minimal)
+       ("glib:bin" ,glib "bin")         ; for gdbus-codegen
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("dbus" ,dbus)
+       ("qtbase" ,qtbase)
+       ("qtmultimedia" ,qtmultimedia)
+       ;; Plugin dependencies
+       ("alsa-lib" ,alsa-lib)
+       ("curl" ,curl)
+       ("faad2" ,faad2)
+       ("ffmpeg" ,ffmpeg)
+       ("flac" ,flac)
+       ("fluidsynth" ,fluidsynth)
+       ("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:gpl3
+                   license:expat
+                   license:isc
+                   license:lgpl2.0))))
+
 (define-public aria-maestosa
   (package
     (name "aria-maestosa")
-- 
2.29.2


^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#37329: [PATCH] gnu: Add audacious.
  2020-11-18 17:14 ` Nicolas Goaziou
@ 2020-11-26 17:35   ` Nicolas Goaziou
  0 siblings, 0 replies; 8+ messages in thread
From: Nicolas Goaziou @ 2020-11-26 17:35 UTC (permalink / raw)
  To: 37329-done

Nicolas Goaziou <mail@nicolasgoaziou.fr> writes:

> I updated Kei's patch for Audacious 4.0.5. I dropped GTK-2, as it is in
> maintenance mode only, and Qt is upstream default toolkit.
>
> This is a beast, guix size reports 1459 MiB, but I assume its users do
> not expect anything lightweight, since it is comes with plenty of
> plugins.
>
> WDYT?

Applied. Closing.




^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2020-11-26 17:36 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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
2020-11-18 17:14 ` Nicolas Goaziou
2020-11-26 17:35   ` bug#37329: " Nicolas Goaziou

unofficial mirror of guix-patches@gnu.org 

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://yhetil.org/guix-patches/1 guix-patches/git/1.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 guix-patches guix-patches/ https://yhetil.org/guix-patches \
		guix-patches@gnu.org
	public-inbox-index guix-patches

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://news.yhetil.org/yhetil.gnu.guix.patches


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git