gnu: Add guile-gnome

Message ID 1464375363-31718-1-git-send-email-patrick.hetu@auf.org
State New
Headers

Commit Message

Patrick Hetu May 27, 2016, 6:56 p.m. UTC
  * gnu/packages/gtk.scm (guile-gnome): New variables.
---
 gnu/packages/gtk.scm | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 107 insertions(+)
  

Comments

Ludovic Courtès May 28, 2016, 4:06 p.m. UTC | #1
Hi!

Patrick Hetu <patrick.hetu@auf.org> skribis:

> * gnu/packages/gtk.scm (guile-gnome): New variables.

This is a long-overdue addition.

Pushed as 9b381643f009025d97dfc0b82d2c00800c204380 with a few minor
changes:

> +(define-public guile-g-wrap

This one is already available in (gnu packages guile).  :-)

> +              (uri
> +               (string-append "http://ftp.gnu.org/pub/gnu/" name

I changed that to mirror://gnu.

> +      `(#:tests? #f

This should be fixed or explained.

> +        #:phases (alist-cons-before

Changed to ‘modify-phases’.

> +                      (substitute* (find-files "." "^Makefile.am$")

Modified Makefile.in instead so that we don’t need the dependency on
Autoconf, Automake, and Libtool.

> +    (description "Guile wrapper collection for the following GNOME core libraries:

Changed to what ‘guix lint’ recommends.

Thanks!

Ludo’.
  
Patrick Hetu June 7, 2016, 5:57 p.m. UTC | #2
Ludovic Courtès @ 2016-05-28 12:06 EDT:

> Pushed as 9b381643f009025d97dfc0b82d2c00800c204380 with a few minor
> changes:
>
>> +(define-public guile-g-wrap
>
> This one is already available in (gnu packages guile).  :-)

Oops, I was looking for guile-g-wrap instead of g-wrap...

Still, the current g-wrap package needs a new patch to fix his Makefile.in
because the native-search-paths hooks won't find it for Guile 2.0.
Also, should I rename it to guile-g-wrap at the same time?

> [...]
>> +                      (substitute* (find-files "." "^Makefile.am$")
>
> Modified Makefile.in instead so that we don’t need the dependency on
> Autoconf, Automake, and Libtool.
>

--

Patrick
  
David Pirotte June 7, 2016, 9:47 p.m. UTC | #3
Hello,

Le Tue, 07 Jun 2016 13:57:19 -0400,
Patrick Hetu <patrick.hetu@auf.org> a écrit :

> Ludovic Courtès @ 2016-05-28 12:06 EDT:
> 
> > Pushed as 9b381643f009025d97dfc0b82d2c00800c204380 with a few minor
> > changes:
> >  
> >> +(define-public guile-g-wrap  
> >
> > This one is already available in (gnu packages guile).  :-)  
> 
> Oops, I was looking for guile-g-wrap instead of g-wrap...
> 
> Still, the current g-wrap package needs a new patch to fix his Makefile.in
> because the native-search-paths hooks won't find it for Guile 2.0.

Note that I don't develop neither [yet] use guix [shame on me], but I  don't
understand why you should change anything wrt Makefile(s):

	from http://www.nongnu.org/g-wrap/download.html, Notes 3.

	"... G-Wrap's modules will be installed in $prefix/share/guile/site. If it
	differs from Guile's global site directory, then this path must be added to
	Guile's load paths before to use G-Wrap and compile Guile-Gnome or
	Guile-Clutter. ..."

Note that G-wrap compiles and runs fine with both Guile-2.0 and 2.2.  So if Guix
installs G-wrap using the same prefix as the one used for guile, which I recommend,
then nothing needs to be changed since guile's default %load-path already include
(%global-site-dir), and unless $prefix would differ for guix guile-2.0 and
guile-2.2, [hopefully there are the same?], then users can always fire guile
and: ,use (g-wrap), independently from which guile version they are using.

My 2c, but as I [administratively] maintain g-wrap, feedback welcome.

> Also, should I rename it to guile-g-wrap at the same time?

IMO, it's better to keep the original name, which in this case is G-wrap

	http://www.nongnu.org/g-wrap/

Cheers,
David
  
Ludovic Courtès June 8, 2016, 1:19 p.m. UTC | #4
Patrick Hetu <patrick.hetu@auf.org> skribis:

> Ludovic Courtès @ 2016-05-28 12:06 EDT:
>
>> Pushed as 9b381643f009025d97dfc0b82d2c00800c204380 with a few minor
>> changes:
>>
>>> +(define-public guile-g-wrap
>>
>> This one is already available in (gnu packages guile).  :-)
>
> Oops, I was looking for guile-g-wrap instead of g-wrap...
>
> Still, the current g-wrap package needs a new patch to fix his Makefile.in
> because the native-search-paths hooks won't find it for Guile 2.0.

But it works well to build guile-gnome AFAICS.  When is it a problem?

But yeah, patching it to match the native-search-paths is a good idea.

> Also, should I rename it to guile-g-wrap at the same time?

I don’t think so, because it’s both a program and a library, not just a
library (I see that this rule mine and is not spelled out in “Packaging
Guidelines”; it probably should, if there’s consensus.)

Thanks!

Ludo’.
  

Patch

diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 1fe52a4..9111781 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -11,6 +11,7 @@ 
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Fabian Harfert <fhmgufs@web.de>
 ;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2016 Patrick Hetu <patrick.hetu@auf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -51,6 +52,7 @@ 
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages libffi)
   #:use-module (gnu packages pdf)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -822,6 +824,111 @@  includes a tools to generate PDF presentations out of Org mode and Texinfo
 documents.")
     (license license:lgpl3+)))
 
+(define-public guile-g-wrap
+  (package
+    (name "guile-g-wrap")
+    (version "1.9.15")
+    (source (origin
+             (method url-fetch)
+             (uri
+              (string-append "http://savannah.nongnu.org/download/g-wrap/g-wrap-"
+                             version ".tar.gz"))
+             (sha256
+              (base32
+               "0ak0bha37dfpj9kmyw1r8fj8nva639aw5xr66wr5gd3l1rqf5xhg"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("libffi" ,libffi)
+       ("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("glib" ,glib)))
+    (inputs `(("guile" ,guile-2.0)))
+    (propagated-inputs
+     `(("guile-cairo" ,guile-cairo)
+       ("guile-lib" ,guile-lib)))
+    (arguments
+     `(#:configure-flags
+       (let ((out (assoc-ref %outputs "out")))
+             (list (string-append "--prefix=" out)))
+       #:phases (alist-cons-before
+               'configure 'pre-configure
+               (lambda* (#:key outputs #:allow-other-keys)
+                 (let ((out (assoc-ref outputs "out")))
+                   (substitute* (find-files "." "^Makefile.in$")
+                     (("guilemoduledir =.*guile/site" all)
+                     (string-append all "/2.0")))
+                   (substitute* "configure"
+                     (("/bin/sh") (which "bash")))))
+                 %standard-phases)))
+    (outputs '("out" "debug"))
+    (synopsis "Guile library for generating function wrappers for inter-language calls")
+    (description "G-Wrap is a tool (and guile library) for generating function
+wrappers for inter-language calls.
+It currently only supports generating Guile wrappers for C functions.
+Other languages may be supported in the future, possibly on both sides.")
+    (home-page "http://www.nongnu.org/g-wrap/")
+    (license license:lgpl2.1+)))
+
+(define-public guile-gnome
+   (package
+    (name "guile-gnome")
+    (version "2.16.4")
+    (source (origin
+              (method url-fetch)
+              (uri
+               (string-append "http://ftp.gnu.org/pub/gnu/" name
+                              "/guile-gnome-platform/guile-gnome-platform-"
+                              version ".tar.gz"))
+             (sha256
+              (base32
+               "1hqnqbb2lmr3hgbcv9kds1himn3av6h0lkk0zll8agcrsn7d9axd"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("atk" ,atk)
+;       ("corba" ,corba) ; not packaged yet
+       ("gconf" ,gconf)
+       ("gobject-introspection" ,gobject-introspection)
+;       ("gthread" ,gthread) ; not packaged yet
+       ("gnome-vfs" ,gnome-vfs)
+       ("gdk-pixbuf" ,gdk-pixbuf)
+       ("gtk+" ,gtk+-2)
+       ("libglade" ,libglade)
+       ("libgnome" ,libgnome)
+       ("libgnomecanvas" ,libgnomecanvas)
+       ("libgnomeui" ,libgnomeui)
+       ("pango" ,pango)
+       ("libffi" ,libffi)
+       ("glib" ,glib)))
+    (inputs `(("guile" ,guile-2.0)))
+    (propagated-inputs
+     `(("guile-cairo" ,guile-cairo)
+       ("guile-g-wrap" ,guile-g-wrap)
+       ("guile-lib" ,guile-lib)))
+    (arguments
+      `(#:tests? #f
+        #:phases (alist-cons-before
+                  'configure 'pre-configure
+                  (lambda* (#:key outputs #:allow-other-keys)
+                    (let ((out (assoc-ref outputs "out")))
+                      (substitute* (find-files "." "^Makefile.am$")
+                        (("guilesite:=.*guile/site" all)
+                         (string-append all "/2.0")))))
+                  %standard-phases)))
+    (outputs '("out" "debug"))
+    (synopsis "Guile interface for GTK+ programming for GNOME")
+    (description "Guile wrapper collection for the following GNOME core libraries:
+
+Gobject, Glib, Atk, Pango, Pangocairo, Gdk, Gdk-Pixbuf, Gtk, Libglade,
+Gnome-Vfs, Libgnome, Libgnomecanvas, Libgnomeui, Corba")
+    (home-page "http://www.gnu.org/software/guile-gnome/")
+    (license license:gpl2+)))
+
 ;;;
 ;;; C++ bindings.
 ;;;