From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:470:142:3::10]:43456) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i6kv3-0003XQ-5J for guix-patches@gnu.org; Sat, 07 Sep 2019 20:19:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i6kv1-0004At-B9 for guix-patches@gnu.org; Sat, 07 Sep 2019 20:19:05 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:57656) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1i6kv0-00049e-Py for guix-patches@gnu.org; Sat, 07 Sep 2019 20:19:03 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1i6kv0-0006hQ-FD for guix-patches@gnu.org; Sat, 07 Sep 2019 20:19:02 -0400 Subject: [bug#37329] [PATCH] gnu: Add audacious. Resent-Message-ID: From: Kei Kebreau References: <20190907045755.6578-1-kkebreau@posteo.net> <87ef0swcrf.fsf@nckx> <87imq4xiil.fsf@posteo.net> <87y2yzu9as.fsf@elephly.net> Date: Sat, 07 Sep 2019 20:18:28 -0400 In-Reply-To: <87y2yzu9as.fsf@elephly.net> (Ricardo Wurmus's message of "Sat, 07 Sep 2019 22:43:23 +0200") Message-ID: <87muffiqsr.fsf@posteo.net> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="==-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: Ricardo Wurmus Cc: 37329@debbugs.gnu.org --==-=-= Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Ricardo Wurmus writes: > Kei Kebreau 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=E2=80=99t this m= ake the > package much bigger than it otherwise would be? > > What=E2=80=99s the smaller variant=E2=80=A6? > 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-"=20 >>>> ,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=E2=80=99s 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=20 > the phase of interest. If it can be avoided without making things too > ugly I=E2=80=99d prefer to avoid =E2=80=9Cchdir=E2=80=9D 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. --=-=-= Content-Type: text/plain; charset=utf-8 Content-Disposition: attachment; filename=0001-gnu-Add-audacious.patch Content-Transfer-Encoding: quoted-printable From=207b2b638fc518d9362f1715144d4f50fa5761dcb0 Mon Sep 17 00:00:00 2001 From: Kei Kebreau Date: Sat, 7 Sep 2019 00:48:16 -0400 Subject: [PATCH] gnu: Add audacious. * gnu/packages/music.scm (audacious): New variable. =2D-- 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 =2D-- 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) =2D #:use-module ((srfi srfi-1) #:select (last))) + #:use-module ((srfi srfi-1) #:select (alist-delete last))) =20 (define-public aria-maestosa (package @@ -203,6 +203,151 @@ and play MIDI files with a few clicks in a user-frien= dly interface offering score, keyboard, guitar, drum and controller views.") (license license:gpl3+))) =20 +(define-public audacious + (package + (name "audacious") + (version "3.10.1") + (source (origin + (method url-fetch) + (uri (string-append "https://distfiles.audacious-media-playe= r.org/" + "audacious-" version ".tar.bz2")) + (sha256 + (base32 + "14vbkhld5hwh96j8p8hjq9ybvc2m060a1y8crz14i51wpd0fhrl3")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + (list (string-append "LDFLAGS=3D-Wl,-rpath=3D" %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=3D" + out "/lib/pkgconfig:" + (getenv "PKG_CONFIG_P= ATH")) + (string-append "--prefix=3D" 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.o= rg/" + "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 fol= ders +and individual song files, search for artists and albums in your entire mu= sic +library, or create and edit your own custom playlists. Listen to CD=E2=80= =99s 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 Audaci= ous 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 =2D-=20 2.23.0 --=-=-=-- --==-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEg7ZwOtzKO2lLzi2m5qXuPBlGeg0FAl10SNQACgkQ5qXuPBlG eg1CLw/7BXdBhlpWzBD3Mxr3l6dcsaIBP/rIyXY/B8X62nlQV1JDta77kQzvXPwE odLJEYRoyyzBQtoMVo5VlNBN6EeeEwPcTKosc3wPZt0a0uatKNB8WFQsLTqURERU hN3psBUh2TVucp//PnmF37NACD97WQ1c+1khrQDPaENPywTsIR9ehinQA4Pbrtn8 CJW17F7QSzjsLHV+m6h8eOLkCWG4jFnfc0FV8WrBf3RCKNurk8Xf+sddicK/t3q6 wqKXvP1zBEVrS0QbAku9l5bViMBdoNyim9jFzdqzYXNErBvixVsvig0J20PeIbeQ lsM9gg9RtjWONctKBlkFUu6MTsN/jmpkYlUPoX62CrXOyrklD7rEYFD733YkVKnd lmKXPZ++SHX4yitipwvMf5z3/XzRi8K2BzcxWjDneyr6HfK3w1CfjmoadvHjENAz 02l57N65+F1aA3LaSzNMed0fX3V/kisRooeYTpHNNJh58ChLPTUXrWczVVlw4bWh bfrjkmy8OkeK306TdFgviM+7MjSzoYjZcs0l1um/6CcyCwt6hiTSK8wQ18K4FVam 8oswkpvcE3emI8LPij4aAaYqDNOVRFUeIT9D0XnaYZk6BvphriBVoWeepv3c5OD3 PBR/CXXyLhVDCPuj3BP1W2i2eFzYoA+ZvxiBAdeMQmIGcKwWcJc= =CItw -----END PGP SIGNATURE----- --==-=-=--