diff --git a/gnu/bootloader/grub.scm b/gnu/bootloader/grub.scm index f1cc3324db..880491c983 100644 --- a/gnu/bootloader/grub.scm +++ b/gnu/bootloader/grub.scm @@ -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 diff --git a/gnu/build/svg.scm b/gnu/build/svg.scm index f7e92a1a19..b5474ec4a0 100644 --- a/gnu/build/svg.scm +++ b/gnu/build/svg.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016 Ludovic Courtès +;;; Copyright © 2016, 2017 Ludovic Courtès ;;; Copyright © 2015 Andy Wingo ;;; ;;; 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)) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index 1d9ee15246..d5b472049d 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -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. diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index 7f6d15515c..6bff343429 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -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 diff --git a/gnu/packages/patches/guile-rsvg-pkgconfig.patch b/gnu/packages/patches/guile-rsvg-pkgconfig.patch index 2272b4e1cd..51483a3472 100644 --- a/gnu/packages/patches/guile-rsvg-pkgconfig.patch +++ b/gnu/packages/patches/guile-rsvg-pkgconfig.patch @@ -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) diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm index f94d56992e..482ae1b862 100644 --- a/gnu/packages/plotutils.scm +++ b/gnu/packages/plotutils.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès ;;; Copyright © 2015 Eric Bavier ;;; Copyright © 2016, 2017 Nicolas Goaziou ;;; @@ -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") diff --git a/gnu/packages/skribilo.scm b/gnu/packages/skribilo.scm index 78b4806c8c..458d91e569 100644 --- a/gnu/packages/skribilo.scm +++ b/gnu/packages/skribilo.scm @@ -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")