[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#30351] [PATCH] gnu: mcron2: Correct and enhance the wrap phase.
From: |
ng0 |
Subject: |
[bug#30351] [PATCH] gnu: mcron2: Correct and enhance the wrap phase. |
Date: |
Sun, 04 Feb 2018 22:33:23 +0000 |
On Sun, 04 Feb 2018, Maxim Cournoyer <address@hidden> wrote:
> Hello!
>
> As a follow up to my previous patch to mcron2, this completes the wrap
> phases and fix a small issue where the mcron modules were installed to
> share/guile/site/2.0 instead of 2.2.
Looks promising, this could fix the issue I still have.
I reconfigured the system and it looks good to me. At least the
no errors are being displayed.
> For those using dyndns services, a job like the following should now
> work without having to propagate Guile or GnuTLS in your user/system
> profile[0]:
>
> --8<---------------cut here---------------start------------->8---
> ;;; Secrets defined as variables prefixed by "sec-".
> (include "/abs/path/to/your/secrets.scm")
>
> (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=")))))
>
> (operating-system
> ...
> (services
> (cons*
> (mcron-service (list duckdns-job))
> ...
> --8<---------------cut here---------------end--------------->8---
>
> I had tested my previous patch as a user (where Guile and GnuTLS were
> installed), so it was working, but after testing from the "real" herd
> service (which runs as root), it was failing, not finding the (web
> client) and GnuTLS modules.
>
> The attached patch fixes that.
>
> From 385343b1370d87e6104ebe2ef473bf2d1e31f2f2 Mon Sep 17 00:00:00 2001
> From: Maxim Cournoyer <address@hidden>
> Date: Sun, 4 Feb 2018 14:05:40 -0500
> Subject: [PATCH] gnu: mcron2: Correct and enhance the wrap phase.
>
> * gnu/packages/guile.scm (mcron2)[inputs]: Rename "guile-2.2" to just "guile".
> [phases]: Install mcron2 modules to guile/site/2.2 instead of guile/site/2.0.
> Add Guile 2.2 and GnuTLS modules to the wrap phase.
> ---
> gnu/packages/guile.scm | 43 ++++++++++++++++++++++++++-----------------
> 1 file changed, 26 insertions(+), 17 deletions(-)
>
> diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
> index 3bc18ffdd..37e6703fa 100644
> --- a/gnu/packages/guile.scm
> +++ b/gnu/packages/guile.scm
> @@ -64,6 +64,7 @@
> #:use-module (gnu packages sdl)
> #:use-module (gnu packages maths)
> #:use-module (gnu packages image)
> + #:use-module (gnu packages tls)
> #:use-module (gnu packages version-control)
> #:use-module (gnu packages xdisorg)
> #:use-module (gnu packages xorg)
> @@ -632,7 +633,8 @@ format is also supported.")
> ("texinfo" ,texinfo)
> ("help2man" ,help2man)))
> (inputs
> - `(("guile-2.2" ,guile-2.2)
> + `(("guile" ,guile-2.2)
> + ("gnutls" ,gnutls) ;for the wrap-mcron phase
> ,@(srfi-1:alist-delete "guile" (package-inputs mcron))))
> (arguments
> `(#:modules ((ice-9 match) (ice-9 ftw)
> @@ -645,6 +647,7 @@ format is also supported.")
> (add-after 'unpack 'use-guile-2.2
> (lambda _
> (substitute* "configure.ac"
> + (("guile/site/2.0") "guile/site/2.2")
> (("PKG_CHECK_MODULES\\(\\[GUILE\\],.*$")
> "PKG_CHECK_MODULES([GUILE], [guile-2.2])\n"))
> #t))
> @@ -652,22 +655,28 @@ format is also supported.")
> (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))))))))))))
> + (lambda* (#:key inputs outputs #:allow-other-keys)
> + ;; Wrap the 'mcron' command to refer to the right modules. We
> + ;; also include Guile 2.2 modules and GnuTLS, so that Guile
> + ;; libraries can be used in mcron jobs without having to
> + ;; propagate those in a user profile.
> + (let* ((site-dir "/share/guile/site/2.2")
> + (ccache-dir "/lib/guile/2.2/ccache")
> + (mcron (assoc-ref outputs "out"))
> + (mcron-bin (string-append mcron "/bin/mcron"))
> + (mcron-modules (string-append mcron site-dir))
> + (guile (assoc-ref inputs "guile"))
> + (guile-modules (string-append guile site-dir))
> + (guile-ccache (string-append guile ccache-dir))
> + (gnutls (assoc-ref inputs "gnutls"))
> + (gnutls-modules (string-append gnutls site-dir))
> + (gnutls-ccache (string-append gnutls ccache-dir)))
> + (wrap-program mcron-bin
> + `("GUILE_LOAD_PATH" ":" prefix
> + (,mcron-modules ,guile-modules ,gnutls-modules))
> + `("GUILE_LOAD_COMPILED_PATH" ":" prefix
> + (,mcron-modules ,guile-ccache ,gnutls-ccache)))
> + #t)))))))))
>
> (define-public guile-ics
> (package
--
ng0 :: https://ea.n0.is
A88C8ADD129828D7EAC02E52E22F9BBFEE348588 :: https://ea.n0.is/keys/