gnu: Switch guile-cairo and dependents to Guile 2.2 again.

Fixes <https://bugs.gnu.org/27551>.
Reported by Leo Famulari <leo@famulari.name>.

This reinstates the following commits:

  e3ddb1e83 * gnu: guile-cairo: Switch to Guile 2.2.
  ae5c6ef39 * gnu: guile-gnome: Update to 2.16.5.
  0fd8013fc * gnu: guile-rsvg: Update to commit 05c6a2fd.
  66b9183c4 * gnu: guile-lib: Switch to Guile 2.2.

and adds the following changes:

* gnu/bootloader/grub.scm (svg->png): Add 'package->derivation' call for
GUILE-2.2.  Pass #:guile-for-build to 'gexp->derivation'.
* gnu/build/svg.scm (svg->png): Add 'em' and 'ex' to the 'let-values'
form to account for all the values returned by
'rsvg-handle-get-dimensions', which Guile 2.2 does not truncate.
master
Ludovic Courtès 2017-07-02 22:45:33 +02:00
parent 61f81618a8
commit 1b0f266e40
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
7 changed files with 82 additions and 66 deletions

View File

@ -34,6 +34,7 @@
#:autoload (gnu packages bootloaders) (grub)
#:autoload (gnu packages compression) (gzip)
#:autoload (gnu packages gtk) (guile-cairo guile-rsvg)
#:autoload (gnu packages guile) (guile-2.2)
#:use-module (ice-9 match)
#:use-module (ice-9 regex)
#:use-module (srfi srfi-1)
@ -118,21 +119,25 @@ otherwise."
(define* (svg->png svg #:key width height)
"Build a PNG of HEIGHT x WIDTH from SVG."
(gexp->derivation "grub-image.png"
(with-imported-modules '((gnu build svg))
#~(begin
;; We need these two libraries.
(add-to-load-path (string-append #+guile-rsvg
"/share/guile/site/"
(effective-version)))
(add-to-load-path (string-append #+guile-cairo
"/share/guile/site/"
(effective-version)))
;; Note: Guile-RSVG & co. are now built for Guile 2.2, so we use 2.2 here.
;; TODO: Remove #:guile-for-build when 2.2 has become the default.
(mlet %store-monad ((guile (package->derivation guile-2.2 #:graft? #f)))
(gexp->derivation "grub-image.png"
(with-imported-modules '((gnu build svg))
#~(begin
;; We need these two libraries.
(add-to-load-path (string-append #+guile-rsvg
"/share/guile/site/"
(effective-version)))
(add-to-load-path (string-append #+guile-cairo
"/share/guile/site/"
(effective-version)))
(use-modules (gnu build svg))
(svg->png #+svg #$output
#:width #$width
#:height #$height)))))
(use-modules (gnu build svg))
(svg->png #+svg #$output
#:width #$width
#:height #$height)))
#:guile-for-build guile)))
(define* (grub-background-image config #:key (width 1024) (height 768))
"Return the GRUB background image defined in CONFIG with a ratio of

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
;;;
;;; This file is part of GNU Guix.
@ -50,7 +50,7 @@ dimensions of IN-SVG."
(define svg
(rsvg-handle-new-from-file in-svg))
(let-values (((origin-width origin-height)
(let-values (((origin-width origin-height em ex)
(rsvg-handle-get-dimensions svg)))
(let* ((surf (cairo-image-surface-create 'argb32
origin-width origin-height))

View File

@ -795,7 +795,7 @@ application suites.")
(inputs
`(("guile-lib" ,guile-lib)
("expat" ,expat)
("guile" ,guile-2.0)))
("guile" ,guile-2.2)))
(propagated-inputs
;; The .pc file refers to 'cairo'.
`(("cairo" ,cairo)))
@ -813,43 +813,49 @@ 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 (search-patches "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
;; Use a recent snapshot that supports Guile 2.2 and beyond.
(let ((commit "05c6a2fd67e4fea1a7c3ff776729dc931bae6678")
(revision "0"))
(package
(name "guile-rsvg")
(version (string-append "2.18.1-" revision "."
(string-take commit 7)))
(source (origin
(method url-fetch)
(uri (string-append "https://gitlab.com/wingo/guile-rsvg/"
"repository/archive.tar.gz?ref="
commit))
(sha256
(base32
"0vdzjx8l5nc4y2xjqs0g1rqn1zrwfsm30brh5gz00r1x41a2pvv2"))
(patches (search-patches "guile-rsvg-pkgconfig.patch"))
(modules '((guix build utils)))
(snippet
'(substitute* (find-files "." "Makefile\\.am")
(("/share/guile/site")
"/share/guile/site/@GUILE_EFFECTIVE_VERSION@")))
(file-name (string-append name "-" version ".tar.gz"))))
(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.2)
("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+)))
(home-page "http://wingolog.org/projects/guile-rsvg/")
(license license:lgpl2.1+))))
(define-public guile-present
(package
@ -883,7 +889,7 @@ images onto Cairo surfaces.")
out "/share/guile/site/2.0 ")))))
%standard-phases)))
(native-inputs `(("pkg-config" ,pkg-config)))
(inputs `(("guile" ,guile-2.0)))
(inputs `(("guile" ,guile-2.2)))
(propagated-inputs
;; These are used by the (present …) modules.
`(("guile-lib" ,guile-lib)
@ -902,7 +908,7 @@ documents.")
(define-public guile-gnome
(package
(name "guile-gnome")
(version "2.16.4")
(version "2.16.5")
(source (origin
(method url-fetch)
(uri
@ -911,7 +917,7 @@ documents.")
version ".tar.gz"))
(sha256
(base32
"1hqnqbb2lmr3hgbcv9kds1himn3av6h0lkk0zll8agcrsn7d9axd"))))
"1gnf3j96nip5kl99a268i0dy1hj7s1cfs66sps3zwysnkd7qr399"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
@ -930,7 +936,7 @@ documents.")
("pango" ,pango)
("libffi" ,libffi)
("glib" ,glib)))
(inputs `(("guile" ,guile-2.0)))
(inputs `(("guile" ,guile-2.2)))
(propagated-inputs
`(("guile-cairo" ,guile-cairo)
("g-wrap" ,g-wrap)
@ -943,7 +949,7 @@ documents.")
(let ((out (assoc-ref outputs "out")))
(substitute* (find-files "." "^Makefile.in$")
(("guilesite :=.*guile/site" all)
(string-append all "/2.0")))
(string-append all "/@GUILE_EFFECTIVE_VERSION@")))
#t))))))
(outputs '("out" "debug"))
(synopsis "Guile interface for GTK+ programming for GNOME")
@ -951,7 +957,9 @@ documents.")
"Includes guile-clutter, guile-gnome-gstreamer,
guile-gnome-platform (GNOME developer libraries), and guile-gtksourceview.")
(home-page "https://www.gnu.org/software/guile-gnome/")
(license license:gpl2+)))
(license license:gpl2+)
(properties '((upstream-name . "guile-gnome-platform")
(ftp-directory . "/gnu/guile-gnome/guile-gnome-platform")))))
;;;
;;; C++ bindings.

View File

@ -624,7 +624,7 @@ format is also supported.")
("gettext" ,gettext-minimal)
("pkg-config" ,pkg-config)))
(inputs `(("guile" ,guile-2.0) ("which" ,which)))
(propagated-inputs `(("guile-lib" ,guile-lib)))
(propagated-inputs `(("guile-lib" ,guile2.0-lib)))
(home-page "https://github.com/artyom-poptsov/guile-ics")
(synopsis "Guile parser library for the iCalendar format")
(description
@ -661,7 +661,7 @@ The library is shipped with documentation in Info format and usage examples.")
$(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n"))
#t)))))
(native-inputs `(("pkg-config" ,pkg-config)))
(inputs `(("guile" ,guile-2.0)))
(inputs `(("guile" ,guile-2.2)))
(home-page "http://www.nongnu.org/guile-lib/")
(synopsis "Collection of useful Guile Scheme modules")
(description
@ -675,8 +675,11 @@ for Guile\".")
;; details.
(license license:gpl3+)))
(define-public guile2.0-lib
(package-for-guile-2.0 guile-lib))
(define-public guile2.2-lib
(package-for-guile-2.2 guile-lib))
(deprecated-package "guile2.2-lib" guile-lib))
(define-public guile-json
(package

View File

@ -9,7 +9,7 @@ and LDFLAGS for Guile would not be captured.
+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, guile-$GUILE_EFFECTIVE_VERSION)
+
PKG_CHECK_MODULES(GUILE_CAIRO, guile-cairo >= 1.4.0)
AC_SUBST(GUILE_CAIRO_LIBS)

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2016, 2017 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;;
@ -100,7 +100,7 @@ scientific data.")
"godir = $(moddir)\n"))))))
(build-system gnu-build-system)
(native-inputs `(("pkg-config" ,pkg-config)))
(inputs `(("guile" ,guile-2.0)))
(inputs `(("guile" ,guile-2.2)))
(propagated-inputs `(("guile-cairo" ,guile-cairo)))
(home-page "http://wingolog.org/software/guile-charting/")
(synopsis "Create charts and graphs in Guile")

View File

@ -74,7 +74,7 @@
;; The 'skribilo' command needs them, and for people using Skribilo as a
;; library, these inputs are needed as well.
(propagated-inputs `(("guile-reader" ,guile2.0-reader)
("guile-lib" ,guile-lib)))
("guile-lib" ,guile2.0-lib)))
(home-page "http://www.nongnu.org/skribilo/")
(synopsis "Document production tool written in Guile Scheme")