~ruther/guix-local

1b0f266e40aead09be95a984bd9c6cec3dff397e — Ludovic Courtès 8 years ago 61f8161
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.
M gnu/bootloader/grub.scm => gnu/bootloader/grub.scm +20 -15
@@ 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)))

                          (use-modules (gnu build svg))
                          (svg->png #+svg #$output
                                    #:width #$width
                                    #:height #$height)))))
  ;; 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)))
                      #: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

M gnu/build/svg.scm => gnu/build/svg.scm +2 -2
@@ 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))

M gnu/packages/gtk.scm => gnu/packages/gtk.scm +51 -43
@@ 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.

M gnu/packages/guile.scm => gnu/packages/guile.scm +6 -3
@@ 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

M gnu/packages/patches/guile-rsvg-pkgconfig.patch => gnu/packages/patches/guile-rsvg-pkgconfig.patch +1 -1
@@ 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)

M gnu/packages/plotutils.scm => gnu/packages/plotutils.scm +2 -2
@@ 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")

M gnu/packages/skribilo.scm => gnu/packages/skribilo.scm +1 -1
@@ 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")