From 1a51fe2768e7be1fd5eace4ef1b6d6f0b51e2e50 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@gnu.org>
Date: Mon, 31 Aug 2015 22:46:32 +0200
Subject: [PATCH] gnu: Add Guile-RSVG.

* gnu/packages/gtk.scm (guile-rsvg): New variable.
* gnu/packages/patches/guile-rsvg-pkgconfig.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
---
 gnu-system.am                                 |  1 +
 gnu/packages/gtk.scm                          | 40 +++++++++++++++++++
 .../patches/guile-rsvg-pkgconfig.patch        | 16 ++++++++
 3 files changed, 57 insertions(+)
 create mode 100644 gnu/packages/patches/guile-rsvg-pkgconfig.patch

diff --git a/gnu-system.am b/gnu-system.am
index ab4308139df..3e6ee158f04 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -487,6 +487,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/guile-default-utf8.patch			\
   gnu/packages/patches/guile-linux-syscalls.patch		\
   gnu/packages/patches/guile-relocatable.patch			\
+  gnu/packages/patches/guile-rsvg-pkgconfig.patch		\
   gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \
   gnu/packages/patches/hop-bigloo-4.0b.patch			\
   gnu/packages/patches/hop-linker-flags.patch			\
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index e826609bcac..d500fc0e382 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -33,6 +33,8 @@ (define-module (gnu packages gtk)
   #:use-module (guix build-system waf)
   #:use-module (gnu packages)
   #:use-module (gnu packages algebra)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages texinfo)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages docbook)
@@ -632,6 +634,44 @@ (define-public guile-cairo
 exceptions, macros, and a dynamic programming environment.")
     (license license:lgpl3+)))
 
+(define-public guile-rsvg
+  (package
+    (name "guile-rsvg")
+    (version "2.18.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://wingolog.org/pub/guile-rsvg/"
+                                  name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "136f236iw3yrrz6pkkp1ma9c5mrs5icqha6pnawinqpk892r3jh7"))
+              (patches (list (search-patch "guile-rsvg-pkgconfig.patch")))
+              (modules '((guix build utils)))
+              (snippet
+               '(substitute* (find-files "." "Makefile\\.am")
+                  (("/share/guile/site")
+                   "/share/guile/site/2.0")))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-before 'configure 'bootstrap
+                              (lambda _
+                                (zero? (system* "autoreconf" "-vfi")))))))
+    (native-inputs `(("pkg-config" ,pkg-config)
+                     ("autoconf" ,autoconf)
+                     ("automake" ,automake)
+                     ("libtool" ,libtool)
+                     ("texinfo" ,texinfo)))
+    (inputs `(("guile" ,guile-2.0)
+              ("librsvg" ,librsvg)
+              ("guile-lib" ,guile-lib)))          ;for (unit-test)
+    (propagated-inputs `(("guile-cairo" ,guile-cairo)))
+    (synopsis "Render SVG images using Cairo from Guile")
+    (description
+     "Guile-RSVG wraps the RSVG library for Guile, allowing you to render SVG
+images onto Cairo surfaces.")
+    (home-page "http://wingolog.org/projects/guile-rsvg/")
+    (license license:lgpl2.1+)))
 
 ;;;
 ;;; C++ bindings.
diff --git a/gnu/packages/patches/guile-rsvg-pkgconfig.patch b/gnu/packages/patches/guile-rsvg-pkgconfig.patch
new file mode 100644
index 00000000000..2272b4e1cd0
--- /dev/null
+++ b/gnu/packages/patches/guile-rsvg-pkgconfig.patch
@@ -0,0 +1,16 @@
+This patch fixes a bug in guile-rsvg's build system, whereby the CFLAGS
+and LDFLAGS for Guile would not be captured.
+
+--- guile-rsvg-2.18.1/configure.ac	2015-08-31 22:30:30.578909480 +0200
++++ guile-rsvg-2.18.1/configure.ac	2015-08-31 22:32:15.071516084 +0200
+@@ -39,6 +39,10 @@ AC_SUBST(WARN_CFLAGS)
+ 
+ GUILE_PKG([2.2 2.0 1.8])
+ 
++dnl The above macro fails to set the 'GUILE_CFLAGS' and 'GUILE_LIBS'
++dnl substitution variables, hence this line.
++PKG_CHECK_MODULES(GUILE, guile-2.0)
++
+ PKG_CHECK_MODULES(GUILE_CAIRO, guile-cairo >= 1.4.0)
+ AC_SUBST(GUILE_CAIRO_LIBS)
+ AC_SUBST(GUILE_CAIRO_CFLAGS)
-- 
GitLab