unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#30300] [PATCH] gnu: mcron2: Use Guile 2.2 instead of 2.0.
@ 2018-01-31  5:05 Maxim Cournoyer
  2018-01-31 22:53 ` bug#30300: " Ludovic Courtès
  0 siblings, 1 reply; 2+ messages in thread
From: Maxim Cournoyer @ 2018-01-31  5:05 UTC (permalink / raw)
  To: 30300

[-- Attachment #1: Type: text/plain, Size: 770 bytes --]

Hello,

This updates our mcron2 packages (used by default in our mcron service)
to Guile 2.2, so that we can use new goodies in our job scripts.

Here's an example that didn't work before with Guile 2.0, because its
http-get method lacked HTTPS support:

--8<---------------cut here---------------start------------->8---
(define duckdns-job
  ;; Update personal domain IP every 5 minutes.
  #~(job '(next-minute (range 0 60 5))
	 (lambda ()
	   (use-modules (web client))
	   (http-get
	    (string-append
	     "https://www.duckdns.org/update?domains=apteryx&token="
	     #$sec-dyndns-token "&ip=")))))
--8<---------------cut here---------------end--------------->8---

I've also fixed the manual page which was failing to be generated for mcron2.

Thank you,

Maxim


[-- Attachment #2: 0001-gnu-mcron2-Use-Guile-2.2-instead-of-2.0.patch --]
[-- Type: text/x-patch, Size: 4810 bytes --]

From 2525c59459b7a66fbe6b5f093bdceb97d66c82eb Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Date: Tue, 30 Jan 2018 22:38:10 -0500
Subject: [PATCH] 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.
---
 gnu/packages/guile.scm | 60 +++++++++++++++++++++++++++++++-------------------
 1 file changed, 37 insertions(+), 23 deletions(-)

diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index a778bbf45..3bc18ffdd 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -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
-- 
2.16.0


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* bug#30300: [PATCH] gnu: mcron2: Use Guile 2.2 instead of 2.0.
  2018-01-31  5:05 [bug#30300] [PATCH] gnu: mcron2: Use Guile 2.2 instead of 2.0 Maxim Cournoyer
@ 2018-01-31 22:53 ` Ludovic Courtès
  0 siblings, 0 replies; 2+ messages in thread
From: Ludovic Courtès @ 2018-01-31 22:53 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: 30300-done

Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:

>>From 2525c59459b7a66fbe6b5f093bdceb97d66c82eb Mon Sep 17 00:00:00 2001
> From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
> Date: Tue, 30 Jan 2018 22:38:10 -0500
> Subject: [PATCH] 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.

Awesome, applied!

If you find other packages stuck on 2.0 for no reason, don’t hesitate.
:-)

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2018-01-31 22:54 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-01-31  5:05 [bug#30300] [PATCH] gnu: mcron2: Use Guile 2.2 instead of 2.0 Maxim Cournoyer
2018-01-31 22:53 ` bug#30300: " Ludovic Courtès

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).