unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH] Add sonata and python-mpd2
@ 2016-02-18 21:26 Christopher Baines
  2016-02-18 21:26 ` [PATCH 1/2] gnu: Add python-mpd2 Christopher Baines
                   ` (2 more replies)
  0 siblings, 3 replies; 21+ messages in thread
From: Christopher Baines @ 2016-02-18 21:26 UTC (permalink / raw)
  To: guix-devel

A couple of patches to package sonata (a music player daemon (mpd) client using
GTK3 and python). python-mpd2 was the only missing dependency.

[PATCH 1/2] gnu: Add python-mpd2
[PATCH 2/2] gnu: Add sonata

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

* [PATCH 1/2] gnu: Add python-mpd2
  2016-02-18 21:26 [PATCH] Add sonata and python-mpd2 Christopher Baines
@ 2016-02-18 21:26 ` Christopher Baines
  2016-02-18 22:00   ` Leo Famulari
  2016-02-18 21:26 ` [PATCH 2/2] gnu: Add sonata Christopher Baines
  2016-09-10 11:31 ` [PATCH] " Christopher Baines
  2 siblings, 1 reply; 21+ messages in thread
From: Christopher Baines @ 2016-02-18 21:26 UTC (permalink / raw)
  To: guix-devel

* gnu/packages/python.scm (python-mpd2): New variable
* gnu/packages/python.scm Import lgpl3.
---
 gnu/packages/python.scm | 35 ++++++++++++++++++++++++++++++++---
 1 file changed, 32 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 24af2d8..73dab38 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -36,9 +36,9 @@
 (define-module (gnu packages python)
   #:use-module ((guix licenses)
                 #:select (asl2.0 bsd-4 bsd-3 bsd-2 non-copyleft cc0 x11 x11-style
-                          gpl2 gpl2+ gpl3+ lgpl2.0+ lgpl2.1 lgpl2.1+ lgpl3+ agpl3+
-                          isc mpl2.0 psfl public-domain unlicense x11-style
-                          zpl2.1))
+                          gpl2 gpl2+ gpl3+ lgpl2.0+ lgpl2.1 lgpl2.1+ lgpl3 lgpl3+
+                          agpl3+ isc mpl2.0 psfl public-domain unlicense
+                          x11-style zpl2.1))
   #:use-module ((guix licenses) #:select (expat zlib) #:prefix license:)
   #:use-module (gnu packages)
   #:use-module (gnu packages attr)
@@ -758,6 +758,35 @@ have been used.")
   (package-with-python2 python-mock))
 
 
+(define-public python-mpd2
+  (package
+    (name "python-mpd2")
+    (version "0.5.5")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "python-mpd2" version))
+        (sha256
+          (base32
+            "0laypd7h1j14b4vrmiayqlzdsh2j5hc3zv4l0fqvbrbw9y6763ii"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (alist-replace
+        'check
+        (lambda _ (zero? (system* "python" "mpd_test.py")))
+        %standard-phases)))
+    (inputs
+      `(("python-setuptools" ,python-setuptools)
+        ("python-mock" ,python-mock)
+        ("python-unittest2" ,python-unittest2)))
+    (home-page
+      "https://github.com/Mic92/python-mpd2")
+    (synopsis "Python MPD client library")
+    (description "A Python MPD client library")
+    (license lgpl3)))
+
+
 (define-public python-setuptools
   (package
     (name "python-setuptools")
-- 
2.7.0

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

* [PATCH 2/2] gnu: Add sonata
  2016-02-18 21:26 [PATCH] Add sonata and python-mpd2 Christopher Baines
  2016-02-18 21:26 ` [PATCH 1/2] gnu: Add python-mpd2 Christopher Baines
@ 2016-02-18 21:26 ` Christopher Baines
  2016-02-18 23:57   ` Leo Famulari
  2016-02-20 18:49   ` Thompson, David
  2016-09-10 11:31 ` [PATCH] " Christopher Baines
  2 siblings, 2 replies; 21+ messages in thread
From: Christopher Baines @ 2016-02-18 21:26 UTC (permalink / raw)
  To: guix-devel

* gnu/packages/mpd.scm (sonata): New variable.
---
 gnu/packages/mpd.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index b5a0d94..2696f21 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -27,8 +27,11 @@
   #:use-module (guix download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system python)
   #:use-module (gnu packages avahi)
   #:use-module (gnu packages boost)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages gettext)
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages compression)
@@ -39,6 +42,7 @@
   #:use-module (gnu packages mp3)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages databases)
@@ -239,3 +243,29 @@ information about tracks being played to a scrobbler, such as Libre.FM.")
     ;; instead.
     (home-page "http://mpd.wikia.com/wiki/Client:Mpdscribble")
     (license license:gpl2+)))
+
+(define-public sonata
+  (package
+    (name "sonata")
+    (version "1.7b1")
+    (source (origin
+              (method url-fetch)
+              (uri
+               (string-append "https://github.com/multani/sonata/archive/v"
+                              version ".tar.gz"))
+              (sha256
+               (base32
+                "07gq2nxqwxs0qyxjbay7k5j25zd386bn7wdr2dl1gk53diwnn7s0"))))
+    (build-system python-build-system)
+    (inputs `(("gettext" ,gnu-gettext)))
+    (propagated-inputs
+     `(("python-mpd2" ,python-mpd2)
+       ("gtk+" ,gtk+)
+       ("gobject-introspection" ,gobject-introspection)
+       ("python-pygobject" ,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
+MPD servers, search and multimedia key support.")
+    (home-page "http://www.nongnu.org/sonata/")
+    (license license:gpl3+)))
-- 
2.7.0

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

* Re: [PATCH 1/2] gnu: Add python-mpd2
  2016-02-18 21:26 ` [PATCH 1/2] gnu: Add python-mpd2 Christopher Baines
@ 2016-02-18 22:00   ` Leo Famulari
  2016-02-18 22:08     ` Christopher Baines
  0 siblings, 1 reply; 21+ messages in thread
From: Leo Famulari @ 2016-02-18 22:00 UTC (permalink / raw)
  To: Christopher Baines; +Cc: guix-devel

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

On Thu, Feb 18, 2016 at 09:26:53PM +0000, Christopher Baines wrote:
> * gnu/packages/python.scm (python-mpd2): New variable
> * gnu/packages/python.scm Import lgpl3.

I actually have a patch for this in a WIP tree (attached). Based on the
differences, and the fact that I have already made the changes requested
below, I think my version of the patch should be used. My patch also
adds a python-2 version; when possible, it's preferred to add both
versions.

What do you think?

[...]

> +(define-public python-mpd2
> +  (package
> +    (name "python-mpd2")
> +    (version "0.5.5")
> +    (source
> +      (origin
> +        (method url-fetch)
> +        (uri (pypi-uri "python-mpd2" version))
> +        (sha256
> +          (base32
> +            "0laypd7h1j14b4vrmiayqlzdsh2j5hc3zv4l0fqvbrbw9y6763ii"))))

I'm glad to see we concur on this.

> +    (build-system python-build-system)
> +    (arguments
> +     `(#:phases
> +       (alist-replace
> +        'check
> +        (lambda _ (zero? (system* "python" "mpd_test.py")))
> +        %standard-phases)))
> +    (inputs
> +      `(("python-setuptools" ,python-setuptools)
> +        ("python-mock" ,python-mock)
> +        ("python-unittest2" ,python-unittest2)))

I don't believe that unittest2 is needed. I can build both
python-variants without it.

Setuptools is only needed for the python2-variant.

And, I think mock is only needed at build-time, so it would be a
native-input.

> +    (home-page
> +      "https://github.com/Mic92/python-mpd2")
> +    (synopsis "Python MPD client library")
> +    (description "A Python MPD client library")

Generally descriptions should be more descriptive than the synopsis.

> +    (license lgpl3)))

I believe the license is lgpl3+, based on the "or later version" in
mpd.py.

> +
> +
>  (define-public python-setuptools
>    (package
>      (name "python-setuptools")
> -- 
> 2.7.0
> 
> 

[-- Attachment #2: 0001-gnu-Add-python-mpd2.patch --]
[-- Type: text/x-diff, Size: 1933 bytes --]

From 03d428d2452a9a8b14e95e948939634cddcfd825 Mon Sep 17 00:00:00 2001
From: Leo Famulari <leo@famulari.name>
Date: Mon, 15 Feb 2016 04:33:49 -0500
Subject: [PATCH] gnu: Add python-mpd2.

* gnu/packages/python.scm (python-mpd2, python2-mpd2): New
* variables.
* gnu/packages/patches/python-mpd2-tests.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
---
 gnu/packages/python.scm | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 8a44de9..7acb766 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7821,3 +7821,34 @@ comparing Windows paths ignores casing.
 
 (define-public python2-pathlib
   (package-with-python2 python-pathlib))
+
+(define-public python-mpd2
+  (package
+    (name "python-mpd2")
+    (version "0.5.5")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "python-mpd2" version))
+              (sha256
+               (base32
+                "0laypd7h1j14b4vrmiayqlzdsh2j5hc3zv4l0fqvbrbw9y6763ii"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _ (zero? (system* "python" "mpd_test.py")))))))
+    (native-inputs `(("python-mock" ,python-mock)))
+    (home-page "https://github.com/Mic92/python-mpd2")
+    (synopsis "A Python MPD client library")
+    (description "Python-mpd2 is a Python library which provides a client
+interface for the Music Player Daemon.")
+    (license lgpl3+)
+    (properties `((python2-variant . ,(delay python2-mpd2))))))
+
+(define-public python2-mpd2
+  (let ((mpd2 (package-with-python2
+               (strip-python2-variant python-mpd2))))
+    (package (inherit mpd2)
+      (native-inputs `(("python2-setuptools" ,python2-setuptools)
+                       ,@(package-native-inputs mpd2))))))
-- 
2.6.3


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

* Re: [PATCH 1/2] gnu: Add python-mpd2
  2016-02-18 22:00   ` Leo Famulari
@ 2016-02-18 22:08     ` Christopher Baines
  2016-02-18 22:51       ` Leo Famulari
  0 siblings, 1 reply; 21+ messages in thread
From: Christopher Baines @ 2016-02-18 22:08 UTC (permalink / raw)
  To: Leo Famulari; +Cc: guix-devel

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

On 18/02/16 22:00, Leo Famulari wrote:
> On Thu, Feb 18, 2016 at 09:26:53PM +0000, Christopher Baines wrote:
>> * gnu/packages/python.scm (python-mpd2): New variable
>> * gnu/packages/python.scm Import lgpl3.
> 
> I actually have a patch for this in a WIP tree (attached). Based on the
> differences, and the fact that I have already made the changes requested
> below, I think my version of the patch should be used. My patch also
> adds a python-2 version; when possible, it's preferred to add both
> versions.
> 
> What do you think?

That's fine by me.

>> +    (build-system python-build-system)
>> +    (arguments
>> +     `(#:phases
>> +       (alist-replace
>> +        'check
>> +        (lambda _ (zero? (system* "python" "mpd_test.py")))
>> +        %standard-phases)))
>> +    (inputs
>> +      `(("python-setuptools" ,python-setuptools)
>> +        ("python-mock" ,python-mock)
>> +        ("python-unittest2" ,python-unittest2)))
> 
> I don't believe that unittest2 is needed. I can build both
> python-variants without it.

From looking at the source, I think its only needed for running the
tests with python2.6 [1].

1:
https://github.com/Mic92/python-mpd2/blob/6818984462552dbc7ca85d014f5cf9a8a1e81aec/mpd_test.py#L14

> Setuptools is only needed for the python2-variant.
> 
> And, I think mock is only needed at build-time, so it would be a
> native-input.

I though native inputs had something to do with architectures, which I
guess won't matter here, so why is it not just an input?


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 949 bytes --]

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

* Re: [PATCH 1/2] gnu: Add python-mpd2
  2016-02-18 22:08     ` Christopher Baines
@ 2016-02-18 22:51       ` Leo Famulari
  0 siblings, 0 replies; 21+ messages in thread
From: Leo Famulari @ 2016-02-18 22:51 UTC (permalink / raw)
  To: Christopher Baines; +Cc: guix-devel

On Thu, Feb 18, 2016 at 10:08:12PM +0000, Christopher Baines wrote:
> On 18/02/16 22:00, Leo Famulari wrote:
> > On Thu, Feb 18, 2016 at 09:26:53PM +0000, Christopher Baines wrote:
> >> * gnu/packages/python.scm (python-mpd2): New variable
> >> * gnu/packages/python.scm Import lgpl3.
> > 
> > I actually have a patch for this in a WIP tree (attached). Based on the
> > differences, and the fact that I have already made the changes requested
> > below, I think my version of the patch should be used. My patch also
> > adds a python-2 version; when possible, it's preferred to add both
> > versions.
> > 
> > What do you think?
> 
> That's fine by me.
> 
> >> +    (build-system python-build-system)
> >> +    (arguments
> >> +     `(#:phases
> >> +       (alist-replace
> >> +        'check
> >> +        (lambda _ (zero? (system* "python" "mpd_test.py")))
> >> +        %standard-phases)))
> >> +    (inputs
> >> +      `(("python-setuptools" ,python-setuptools)
> >> +        ("python-mock" ,python-mock)
> >> +        ("python-unittest2" ,python-unittest2)))
> > 
> > I don't believe that unittest2 is needed. I can build both
> > python-variants without it.
> 
> From looking at the source, I think its only needed for running the
> tests with python2.6 [1].
> 
> 1:
> https://github.com/Mic92/python-mpd2/blob/6818984462552dbc7ca85d014f5cf9a8a1e81aec/mpd_test.py#L14
> 
> > Setuptools is only needed for the python2-variant.
> > 
> > And, I think mock is only needed at build-time, so it would be a
> > native-input.
> 
> I though native inputs had something to do with architectures, which I
> guess won't matter here, so why is it not just an input?

The "native" part refers to the architecture of the build machine, which
is important when cross-compiling.

A side benefit is that end users shouldn't have to download
native-inputs when substituting. In some cases, that can save a lot of
bandwidth. So, we make build-time-only dependencies native-inputs. In
practice, I've seen packages end up with references to native-inputs in
their output, but that's not optimal.

Semi-relevant discussion of the problems of propagated-inputs:
http://lists.gnu.org/archive/html/guix-devel/2016-02/msg00810.html

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

* Re: [PATCH 2/2] gnu: Add sonata
  2016-02-18 21:26 ` [PATCH 2/2] gnu: Add sonata Christopher Baines
@ 2016-02-18 23:57   ` Leo Famulari
  2016-02-20 11:18     ` Andreas Enge
  2016-02-20 18:49   ` Thompson, David
  1 sibling, 1 reply; 21+ messages in thread
From: Leo Famulari @ 2016-02-18 23:57 UTC (permalink / raw)
  To: Christopher Baines; +Cc: guix-devel

On Thu, Feb 18, 2016 at 09:26:54PM +0000, Christopher Baines wrote:
> * gnu/packages/mpd.scm (sonata): New variable.

It works! A little too well. I have no idea how it found the remote MPD
server on my LAN.

[...]

> +    (inputs `(("gettext" ,gnu-gettext)))

Can somebody with more experience comment on whether or not this should
be propagated (assuming it's a runtime dependency, otherwise it should
be native)?

> +    (propagated-inputs
> +     `(("python-mpd2" ,python-mpd2)
> +       ("gtk+" ,gtk+)
> +       ("gobject-introspection" ,gobject-introspection)
> +       ("python-pygobject" ,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
> +MPD servers, search and multimedia key support.")
> +    (home-page "http://www.nongnu.org/sonata/")
> +    (license license:gpl3+)))

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

* Re: [PATCH 2/2] gnu: Add sonata
  2016-02-18 23:57   ` Leo Famulari
@ 2016-02-20 11:18     ` Andreas Enge
  2016-02-20 12:37       ` Leo Famulari
  0 siblings, 1 reply; 21+ messages in thread
From: Andreas Enge @ 2016-02-20 11:18 UTC (permalink / raw)
  To: Leo Famulari; +Cc: guix-devel

On Thu, Feb 18, 2016 at 06:57:18PM -0500, Leo Famulari wrote:
> > +    (inputs `(("gettext" ,gnu-gettext)))
> Can somebody with more experience comment on whether or not this should
> be propagated (assuming it's a runtime dependency, otherwise it should
> be native)?

It is most likely a native-input. You could run
  guix gc --reference `./pre-inst-env guix build sonata`
to check whether gettext appears.

Andreas

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

* Re: [PATCH 2/2] gnu: Add sonata
  2016-02-20 11:18     ` Andreas Enge
@ 2016-02-20 12:37       ` Leo Famulari
  0 siblings, 0 replies; 21+ messages in thread
From: Leo Famulari @ 2016-02-20 12:37 UTC (permalink / raw)
  To: Andreas Enge; +Cc: guix-devel

On Sat, Feb 20, 2016 at 12:18:34PM +0100, Andreas Enge wrote:
> On Thu, Feb 18, 2016 at 06:57:18PM -0500, Leo Famulari wrote:
> > > +    (inputs `(("gettext" ,gnu-gettext)))
> > Can somebody with more experience comment on whether or not this should
> > be propagated (assuming it's a runtime dependency, otherwise it should
> > be native)?
> 
> It is most likely a native-input. You could run
>   guix gc --reference `./pre-inst-env guix build sonata`
> to check whether gettext appears.

Right! I haven't internalized this aspect of the system yet. Thanks for
the reminder!

Indeed, gettext is not referred to by sonata.

> 
> Andreas
> 

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

* Re: [PATCH 2/2] gnu: Add sonata
  2016-02-18 21:26 ` [PATCH 2/2] gnu: Add sonata Christopher Baines
  2016-02-18 23:57   ` Leo Famulari
@ 2016-02-20 18:49   ` Thompson, David
  2016-02-29  7:18     ` Ricardo Wurmus
  1 sibling, 1 reply; 21+ messages in thread
From: Thompson, David @ 2016-02-20 18:49 UTC (permalink / raw)
  To: Christopher Baines; +Cc: guix-devel

On Thu, Feb 18, 2016 at 4:26 PM, Christopher Baines <mail@cbaines.net> wrote:
> * gnu/packages/mpd.scm (sonata): New variable.

This is really cool, thanks!  Sonata was my main music player back in
the day and I'm glad to see that it's being maintained again.  I
cleaned it up somewhat, built it, and ran it.  I'm hesitant to push
the patch right now, though, and I hope someone who knows more about
Python can help me clear some things up.

I don't like that gtk+ and gobject-introspection need to be propagated
 Could anyone familiar with creating Python bindings for C libraries
tell me if it would be possible to patch pygobject to include the
absolute path to the gtk+ and gobject-introspection libraries?  This
has been the strategy for avoiding propagation of C libraries within
Guile packages, and I'm hoping it applies here.

Thanks,

- Dave

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

* Re: [PATCH 2/2] gnu: Add sonata
  2016-02-20 18:49   ` Thompson, David
@ 2016-02-29  7:18     ` Ricardo Wurmus
  0 siblings, 0 replies; 21+ messages in thread
From: Ricardo Wurmus @ 2016-02-29  7:18 UTC (permalink / raw)
  To: Thompson, David; +Cc: guix-devel


Thompson, David <dthompson2@worcester.edu> writes:

> On Thu, Feb 18, 2016 at 4:26 PM, Christopher Baines <mail@cbaines.net> wrote:
>> * gnu/packages/mpd.scm (sonata): New variable.
>
> This is really cool, thanks!  Sonata was my main music player back in
> the day and I'm glad to see that it's being maintained again.  I
> cleaned it up somewhat, built it, and ran it.  I'm hesitant to push
> the patch right now, though, and I hope someone who knows more about
> Python can help me clear some things up.
>
> I don't like that gtk+ and gobject-introspection need to be propagated
>  Could anyone familiar with creating Python bindings for C libraries
> tell me if it would be possible to patch pygobject to include the
> absolute path to the gtk+ and gobject-introspection libraries?  This
> has been the strategy for avoiding propagation of C libraries within
> Guile packages, and I'm hoping it applies here.

Yeah, propagating gtk+ is bad.  I’d like to remove it from all packages
that currently do this.  It bloats profiles and causes conflicts.

~~ Ricardo

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

* [PATCH] gnu: Add sonata
  2016-02-18 21:26 [PATCH] Add sonata and python-mpd2 Christopher Baines
  2016-02-18 21:26 ` [PATCH 1/2] gnu: Add python-mpd2 Christopher Baines
  2016-02-18 21:26 ` [PATCH 2/2] gnu: Add sonata Christopher Baines
@ 2016-09-10 11:31 ` Christopher Baines
  2016-09-10 11:31   ` Christopher Baines
  2 siblings, 1 reply; 21+ messages in thread
From: Christopher Baines @ 2016-09-10 11:31 UTC (permalink / raw)
  To: guix-devel

I've finally got around to updating the patch for sonata, sorry for the
long delay.

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

* [PATCH] gnu: Add sonata
  2016-09-10 11:31 ` [PATCH] " Christopher Baines
@ 2016-09-10 11:31   ` Christopher Baines
  2016-09-10 18:08     ` Leo Famulari
  0 siblings, 1 reply; 21+ messages in thread
From: Christopher Baines @ 2016-09-10 11:31 UTC (permalink / raw)
  To: guix-devel

* gnu/packages/mpd.scm (sonata): New variable.
---
 gnu/packages/mpd.scm | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)

diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index 279ec68..cc9d583 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -27,10 +27,14 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix utils)
+  #:use-module ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
   #:use-module (gnu packages avahi)
   #:use-module (gnu packages boost)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gtk)
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages compression)
@@ -263,3 +267,51 @@ interface for the Music Player Daemon.")
     (package (inherit mpd2)
       (native-inputs `(("python2-setuptools" ,python2-setuptools)
                        ,@(package-native-inputs mpd2))))))
+
+(define-public sonata
+  (package
+    (name "sonata")
+    (version "1.7b1")
+    (source (origin
+              (method url-fetch)
+              (uri
+               (string-append "https://github.com/multani/sonata/archive/v"
+                              version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "07gq2nxqwxs0qyxjbay7k5j25zd386bn7wdr2dl1gk53diwnn7s0"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:modules ((guix build gnu-build-system)
+                  (guix build python-build-system)
+                  ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
+                  (guix build utils))
+       #:imported-modules (,@%gnu-build-system-modules
+                           (guix build python-build-system)
+                           (guix build glib-or-gtk-build-system))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'glib-or-gtk-wrap
+           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
+         (add-after 'install 'wrap-sonata
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out               (assoc-ref outputs "out"))
+                   (gi-typelib-path   (getenv "GI_TYPELIB_PATH")))
+               (wrap-program (string-append out "/bin/sonata")
+                 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
+             #t)))))
+    (inputs
+     `(("gettext" ,gnu-gettext)
+       ("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)))
+    (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
+MPD servers, search and multimedia key support.")
+    (home-page "http://www.nongnu.org/sonata/")
+    (license license:gpl3+)))
-- 
2.9.3

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

* Re: [PATCH] gnu: Add sonata
  2016-09-10 11:31   ` Christopher Baines
@ 2016-09-10 18:08     ` Leo Famulari
  2016-09-11 10:00       ` Christopher Baines
  0 siblings, 1 reply; 21+ messages in thread
From: Leo Famulari @ 2016-09-10 18:08 UTC (permalink / raw)
  To: Christopher Baines; +Cc: guix-devel

On Sat, Sep 10, 2016 at 12:31:33PM +0100, Christopher Baines wrote:
> * gnu/packages/mpd.scm (sonata): New variable.

Wow, I'm very happy to see this package fixed up :)

> +    (inputs
> +     `(("gettext" ,gnu-gettext)

All looks good to me except for the gettext issue discussed earlier.

$ guix gc --references $(./pre-inst-env guix build sonata)
substitute: warning: failed to install locale: Invalid argument
/gnu/store/62p7w5021dc0z8phyz4bilfgfjnxhzrq-sonata-1.7b1
/gnu/store/7dcbknnkd21k2wgc0irrn4w5r1kw1mw8-python-pygobject-3.20.0
/gnu/store/7l90h7hm54a92d6fiflwa14m8n5l6myk-at-spi2-core-2.20.1
/gnu/store/ac0zdn8jxn8dzn1pijwh2ab9psjq6fsq-shared-mime-info-1.6
/gnu/store/cmyllry2fvr7g2vjbcahgxn8nkpq228r-gsettings-desktop-schemas-3.20.0
/gnu/store/divvl90xbjma76lmhgfmwcp84lnz6ln6-gtk+-3.20.3
/gnu/store/dn2slclp4kf4mkk9pqamb9sdirac00sj-python-mpd2-0.5.5
/gnu/store/jfr7kjbhi8xirqx2sg4anh4ix61pg66z-adwaita-icon-theme-3.20
/gnu/store/l1s4cw9g58hmcpd2qgbckfl228143qzx-glib-2.48.0
/gnu/store/m473fzc84qsnqnqgb9l4hlardw4ymvbx-gdk-pixbuf+svg-2.34.0
/gnu/store/m4gc2wx4q9if1vrhgclpspdil7rqsn21-python-3.4.3
/gnu/store/rwfyznqxyqxzy242nklybqg5zpw5pl4q-pango-1.40.1
/gnu/store/vq1fk3zi8lkjds25h44y819aa19x78i3-atk-2.20.0
/gnu/store/w39sqjn61hvijpk7jagk1dm5plqq512n-gobject-introspection-1.48.0
/gnu/store/wa1yc835mb7pmmrj45xfgviqr5fbasqq-python-wrapper-3.4.3
/gnu/store/xp330hq98mz8qsqfwpqw0274zwb606c1-harfbuzz-1.2.4
/gnu/store/ykzwykkvr2c80rw4l1qh3mvfdkl7jibi-bash-4.3.42

The built package does not refer to gettext. 

I altered the package to use gettext as a native-input, and then ran
sonata in a '--pure' environment, and it worked. Using strace, I
confirmed that sonata was not finding gettext on its own. I did not use
a container environment, since I couldn't figure out how to make the
graphical display work.

So, should we make gettext a native-input and add the package? :)

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

* [PATCH] gnu: Add sonata
  2016-09-10 18:08     ` Leo Famulari
@ 2016-09-11 10:00       ` Christopher Baines
  2016-09-11 10:00         ` Christopher Baines
  0 siblings, 1 reply; 21+ messages in thread
From: Christopher Baines @ 2016-09-11 10:00 UTC (permalink / raw)
  To: guix-devel

Yep, obviously didn't re-read the previous feedback thoroughly enough. gettext
is indeed only used at build time. I've attached an updated patch (with just
that change).

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

* [PATCH] gnu: Add sonata
  2016-09-11 10:00       ` Christopher Baines
@ 2016-09-11 10:00         ` Christopher Baines
  2016-09-11 15:08           ` Leo Famulari
  2016-09-11 17:01           ` Alex Kost
  0 siblings, 2 replies; 21+ messages in thread
From: Christopher Baines @ 2016-09-11 10:00 UTC (permalink / raw)
  To: guix-devel

* gnu/packages/mpd.scm (sonata): New variable.
---
 gnu/packages/mpd.scm | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index 279ec68..8b1b071 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -27,10 +27,14 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix utils)
+  #:use-module ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
   #:use-module (gnu packages avahi)
   #:use-module (gnu packages boost)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gtk)
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages compression)
@@ -263,3 +267,52 @@ interface for the Music Player Daemon.")
     (package (inherit mpd2)
       (native-inputs `(("python2-setuptools" ,python2-setuptools)
                        ,@(package-native-inputs mpd2))))))
+
+(define-public sonata
+  (package
+    (name "sonata")
+    (version "1.7b1")
+    (source (origin
+              (method url-fetch)
+              (uri
+               (string-append "https://github.com/multani/sonata/archive/v"
+                              version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "07gq2nxqwxs0qyxjbay7k5j25zd386bn7wdr2dl1gk53diwnn7s0"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:modules ((guix build gnu-build-system)
+                  (guix build python-build-system)
+                  ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
+                  (guix build utils))
+       #:imported-modules (,@%gnu-build-system-modules
+                           (guix build python-build-system)
+                           (guix build glib-or-gtk-build-system))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'glib-or-gtk-wrap
+           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
+         (add-after 'install 'wrap-sonata
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out               (assoc-ref outputs "out"))
+                   (gi-typelib-path   (getenv "GI_TYPELIB_PATH")))
+               (wrap-program (string-append out "/bin/sonata")
+                 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
+             #t)))))
+    (native-inputs
+     `(("gettext" ,gnu-gettext)))
+    (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)))
+    (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
+MPD servers, search and multimedia key support.")
+    (home-page "http://www.nongnu.org/sonata/")
+    (license license:gpl3+)))
-- 
2.9.3

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

* Re: [PATCH] gnu: Add sonata
  2016-09-11 10:00         ` Christopher Baines
@ 2016-09-11 15:08           ` Leo Famulari
  2016-09-12 16:04             ` Thompson, David
  2016-09-11 17:01           ` Alex Kost
  1 sibling, 1 reply; 21+ messages in thread
From: Leo Famulari @ 2016-09-11 15:08 UTC (permalink / raw)
  To: Christopher Baines; +Cc: guix-devel

On Sun, Sep 11, 2016 at 11:00:37AM +0100, Christopher Baines wrote:
> * gnu/packages/mpd.scm (sonata): New variable.

Thanks! Pushed as 6c86cef5d36d613be0a62f8f18e276232abf51f0.

This will make it easier for my houseguests to control the stereo :)

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

* Re: [PATCH] gnu: Add sonata
  2016-09-11 10:00         ` Christopher Baines
  2016-09-11 15:08           ` Leo Famulari
@ 2016-09-11 17:01           ` Alex Kost
  2016-09-11 18:11             ` Leo Famulari
  2016-09-11 18:34             ` Christopher Baines
  1 sibling, 2 replies; 21+ messages in thread
From: Alex Kost @ 2016-09-11 17:01 UTC (permalink / raw)
  To: Christopher Baines; +Cc: guix-devel

Christopher Baines (2016-09-11 11:00 +0100) wrote:

> * gnu/packages/mpd.scm (sonata): New variable.
> ---
>  gnu/packages/mpd.scm | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 53 insertions(+)
>
> diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
> index 279ec68..8b1b071 100644
> --- a/gnu/packages/mpd.scm
> +++ b/gnu/packages/mpd.scm
> @@ -27,10 +27,14 @@
>    #:use-module (guix packages)
>    #:use-module (guix download)
>    #:use-module (guix utils)
> +  #:use-module ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)

This line is not needed.  You use it in the #:modules argument in the
package definition, but it should not be put in the top level
'define-module' form.

>    #:use-module (guix build-system gnu)
>    #:use-module (guix build-system python)
>    #:use-module (gnu packages avahi)
>    #:use-module (gnu packages boost)
> +  #:use-module (gnu packages gettext)
> +  #:use-module (gnu packages gnome)
> +  #:use-module (gnu packages gtk)
>    #:use-module (gnu packages icu4c)
>    #:use-module (gnu packages readline)
>    #:use-module (gnu packages compression)
> @@ -263,3 +267,52 @@ interface for the Music Player Daemon.")
>      (package (inherit mpd2)
>        (native-inputs `(("python2-setuptools" ,python2-setuptools)
>                         ,@(package-native-inputs mpd2))))))
> +
> +(define-public sonata
> +  (package
> +    (name "sonata")
> +    (version "1.7b1")
> +    (source (origin
> +              (method url-fetch)
> +              (uri
> +               (string-append "https://github.com/multani/sonata/archive/v"
> +                              version ".tar.gz"))
> +              (file-name (string-append name "-" version ".tar.gz"))
> +              (sha256
> +               (base32
> +                "07gq2nxqwxs0qyxjbay7k5j25zd386bn7wdr2dl1gk53diwnn7s0"))))
> +    (build-system python-build-system)
> +    (arguments
> +     `(#:modules ((guix build gnu-build-system)
> +                  (guix build python-build-system)
> +                  ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
> +                  (guix build utils))
> +       #:imported-modules (,@%gnu-build-system-modules
> +                           (guix build python-build-system)
> +                           (guix build glib-or-gtk-build-system))
> +       #:phases
> +       (modify-phases %standard-phases
> +         (add-after 'install 'glib-or-gtk-wrap
> +           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
> +         (add-after 'install 'wrap-sonata
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (let ((out               (assoc-ref outputs "out"))
> +                   (gi-typelib-path   (getenv "GI_TYPELIB_PATH")))
> +               (wrap-program (string-append out "/bin/sonata")
> +                 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
> +             #t)))))
> +    (native-inputs
> +     `(("gettext" ,gnu-gettext)))
> +    (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)))
> +    (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
> +MPD servers, search and multimedia key support.")
> +    (home-page "http://www.nongnu.org/sonata/")
> +    (license license:gpl3+)))

-- 
Alex

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

* Re: [PATCH] gnu: Add sonata
  2016-09-11 17:01           ` Alex Kost
@ 2016-09-11 18:11             ` Leo Famulari
  2016-09-11 18:34             ` Christopher Baines
  1 sibling, 0 replies; 21+ messages in thread
From: Leo Famulari @ 2016-09-11 18:11 UTC (permalink / raw)
  To: Alex Kost; +Cc: guix-devel

On Sun, Sep 11, 2016 at 08:01:19PM +0300, Alex Kost wrote:
> Christopher Baines (2016-09-11 11:00 +0100) wrote:
> > +  #:use-module ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
> 
> This line is not needed.  You use it in the #:modules argument in the
> package definition, but it should not be put in the top level
> 'define-module' form.

Thanks Alex, I fixed it in a followup commit.

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

* Re: [PATCH] gnu: Add sonata
  2016-09-11 17:01           ` Alex Kost
  2016-09-11 18:11             ` Leo Famulari
@ 2016-09-11 18:34             ` Christopher Baines
  1 sibling, 0 replies; 21+ messages in thread
From: Christopher Baines @ 2016-09-11 18:34 UTC (permalink / raw)
  To: Alex Kost; +Cc: guix-devel

On 11/09/16 18:01, Alex Kost wrote:
> Christopher Baines (2016-09-11 11:00 +0100) wrote:
>
>> * gnu/packages/mpd.scm (sonata): New variable.
>> ---
>>  gnu/packages/mpd.scm | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 53 insertions(+)
>>
>> diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
>> index 279ec68..8b1b071 100644
>> --- a/gnu/packages/mpd.scm
>> +++ b/gnu/packages/mpd.scm
>> @@ -27,10 +27,14 @@
>>    #:use-module (guix packages)
>>    #:use-module (guix download)
>>    #:use-module (guix utils)
>> +  #:use-module ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
>
> This line is not needed.  You use it in the #:modules argument in the
> package definition, but it should not be put in the top level
> 'define-module' form.

Ah, yep, that makes sense. Thanks Alex, and thanks for fixing Leo.

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

* Re: [PATCH] gnu: Add sonata
  2016-09-11 15:08           ` Leo Famulari
@ 2016-09-12 16:04             ` Thompson, David
  0 siblings, 0 replies; 21+ messages in thread
From: Thompson, David @ 2016-09-12 16:04 UTC (permalink / raw)
  To: Leo Famulari; +Cc: guix-devel

On Sun, Sep 11, 2016 at 11:08 AM, Leo Famulari <leo@famulari.name> wrote:
> On Sun, Sep 11, 2016 at 11:00:37AM +0100, Christopher Baines wrote:
>> * gnu/packages/mpd.scm (sonata): New variable.
>
> Thanks! Pushed as 6c86cef5d36d613be0a62f8f18e276232abf51f0.
>
> This will make it easier for my houseguests to control the stereo :)

This is awesome.  Thanks, everyone!  Sonata used to be my music player
of choice many years ago until it became unmaintained, but it looks
like there is a new maintainer!  I'll have to give it a go.

And using Sonata for visitors to control the stereo sounds like a
fantastic idea.

- Dave

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

end of thread, other threads:[~2016-09-12 16:06 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-18 21:26 [PATCH] Add sonata and python-mpd2 Christopher Baines
2016-02-18 21:26 ` [PATCH 1/2] gnu: Add python-mpd2 Christopher Baines
2016-02-18 22:00   ` Leo Famulari
2016-02-18 22:08     ` Christopher Baines
2016-02-18 22:51       ` Leo Famulari
2016-02-18 21:26 ` [PATCH 2/2] gnu: Add sonata Christopher Baines
2016-02-18 23:57   ` Leo Famulari
2016-02-20 11:18     ` Andreas Enge
2016-02-20 12:37       ` Leo Famulari
2016-02-20 18:49   ` Thompson, David
2016-02-29  7:18     ` Ricardo Wurmus
2016-09-10 11:31 ` [PATCH] " Christopher Baines
2016-09-10 11:31   ` Christopher Baines
2016-09-10 18:08     ` Leo Famulari
2016-09-11 10:00       ` Christopher Baines
2016-09-11 10:00         ` Christopher Baines
2016-09-11 15:08           ` Leo Famulari
2016-09-12 16:04             ` Thompson, David
2016-09-11 17:01           ` Alex Kost
2016-09-11 18:11             ` Leo Famulari
2016-09-11 18:34             ` Christopher Baines

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