~ruther/guix-local

d4660a54401fb2c2a882d9ae8fa57393c3be193f — Maxim Cournoyer 8 years ago 31bd417
gnu: mcron2: Use Guile 2.2 instead of 2.0.

Motivation: Using Guile 2.2 instead of Guile 2.0 gives us the scripting
abilities of Guile 2.2 when writing mcron jobs, such as HTTPS support.

* gnu/packages/guile.scm (gnu): Use the srfi-1 module for the alist-delete
function.
(mcron2)[inputs]: Replace guile-2.0 with guile-2.2.
[parallel-build?]: Disable to fix manual page generation.
[phases]: Add a "use-guile-2.2" phase so the build system uses Guile 2.2.
Replace `system*' with `invoke' in the "bootstrap" phase.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
1 files changed, 37 insertions(+), 23 deletions(-)

M gnu/packages/guile.scm
M gnu/packages/guile.scm => gnu/packages/guile.scm +37 -23
@@ 16,6 16,7 @@
;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
;;; Copyright © 2017 ng0 <ng0@infotropique.org>
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 72,7 73,8 @@
  #:use-module (guix build-system gnu)
  #:use-module (guix build-system trivial)
  #:use-module (guix utils)
  #:use-module (ice-9 match))
  #:use-module (ice-9 match)
  #:use-module ((srfi srfi-1) #:prefix srfi-1:))

;;; Commentary:
;;;


@@ 629,31 631,43 @@ format is also supported.")
         ("pkg-config" ,pkg-config)
         ("texinfo" ,texinfo)
         ("help2man" ,help2man)))
      (inputs
       `(("guile-2.2" ,guile-2.2)
         ,@(srfi-1:alist-delete "guile" (package-inputs mcron))))
      (arguments
       `(#:modules ((ice-9 match) (ice-9 ftw)
                    ,@%gnu-build-system-modules)

         #:phases (modify-phases %standard-phases
                    (add-after 'unpack 'bootstrap
                      (lambda _
                        (zero? (system* "autoreconf" "-vfi"))))
                    (add-after 'install 'wrap-mcron
                      (lambda* (#:key outputs #:allow-other-keys)
                        ;; Wrap the 'mcron' command to refer to the right
                        ;; modules.
                        (let* ((out  (assoc-ref outputs "out"))
                               (bin  (string-append out "/bin"))
                               (site (string-append
                                      out "/share/guile/site")))
                          (match (scandir site)
                            (("." ".." version)
                             (let ((modules (string-append site "/" version)))
                               (wrap-program (string-append bin "/mcron")
                                 `("GUILE_LOAD_PATH" ":" prefix
                                   (,modules))
                                 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
                                   (,modules)))
                               #t))))))))))))
         ;; When building the targets in parallel, help2man tries to generate
         ;; the manpage from ./cron --help before it is built, which fails.
         #:parallel-build? #f
         #:phases
         (modify-phases %standard-phases
           (add-after 'unpack 'use-guile-2.2
             (lambda _
               (substitute* "configure.ac"
                 (("PKG_CHECK_MODULES\\(\\[GUILE\\],.*$")
                  "PKG_CHECK_MODULES([GUILE], [guile-2.2])\n"))
               #t))
           (add-after 'use-guile-2.2 'bootstrap
             (lambda _
               (invoke "autoreconf" "-vfi")))
           (add-after 'install 'wrap-mcron
             (lambda* (#:key outputs #:allow-other-keys)
               ;; Wrap the 'mcron' command to refer to the right
               ;; modules.
               (let* ((out  (assoc-ref outputs "out"))
                      (bin  (string-append out "/bin"))
                      (site (string-append
                             out "/share/guile/site")))
                 (match (scandir site)
                   (("." ".." version)
                    (let ((modules (string-append site "/" version)))
                      (wrap-program (string-append bin "/mcron")
                        `("GUILE_LOAD_PATH" ":" prefix
                          (,modules))
                        `("GUILE_LOAD_COMPILED_PATH" ":" prefix
                          (,modules)))
                      #t))))))))))))

(define-public guile-ics
  (package