gnu: mcron: Update to 1.1 and deprecate "mcron2".
* gnu/packages/guile.scm (mcron): Update to 1.1. [native-inputs]: Add TZDATA-FOR-TESTS. [arguments]: New field. (mcron2): Define using 'deprecated-package'. * gnu/services/mcron.scm: Replace 'mcron2' with 'mcron'. * doc/guix.texi (Scheduled Job Execution): Likewise. * gnu/tests/base.scm (%mcron-os): Remove comment about mcron2.
This commit is contained in:
parent
f88028c432
commit
cfbf6de18c
@ -10479,7 +10479,7 @@ gexps to introduce job definitions that are passed to mcron
|
||||
for more information on mcron job specifications. Below is the
|
||||
reference of the mcron service.
|
||||
|
||||
@deffn {Scheme Procedure} mcron-service @var{jobs} [#:mcron @var{mcron2}]
|
||||
@deffn {Scheme Procedure} mcron-service @var{jobs} [#:mcron @var{mcron}]
|
||||
Return an mcron service running @var{mcron} that schedules @var{jobs}, a
|
||||
list of gexps denoting mcron job specifications.
|
||||
|
||||
@ -10504,7 +10504,7 @@ mcron jobs to run.
|
||||
Data type representing the configuration of mcron.
|
||||
|
||||
@table @asis
|
||||
@item @code{mcron} (default: @var{mcron2})
|
||||
@item @code{mcron} (default: @var{mcron})
|
||||
The mcron package to use.
|
||||
|
||||
@item @code{jobs}
|
||||
|
@ -662,18 +662,51 @@ library.")
|
||||
(define-public mcron
|
||||
(package
|
||||
(name "mcron")
|
||||
(version "1.0.8")
|
||||
(version "1.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/mcron/mcron-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0zparwgf01jgl1x53ik71ghabldq6zz18ha4dscps1i0qrzgap1b"))
|
||||
(patches (search-patches "mcron-install.patch"))))
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/mcron/mcron-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1f547sqqfbp0k02sqk4ivwx8y9mx8l0rrx1c9rrj033av073h6xq"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs `(("pkg-config" ,pkg-config)))
|
||||
(inputs `(("ed" ,ed) ("which" ,which) ("guile" ,guile-2.0)))
|
||||
(arguments
|
||||
'(#:phases (modify-phases %standard-phases
|
||||
(add-before 'check 'set-timezone
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
;; 'tests/schedule.sh' expects to be running in UTC+1.
|
||||
(let ((tzdata (assoc-ref inputs "tzdata")))
|
||||
(setenv "TZDIR"
|
||||
(string-append tzdata
|
||||
"/share/zoneinfo"))
|
||||
(setenv "TZ" "UTC+1")
|
||||
#t)))
|
||||
(add-before 'check 'disable-schedule-test
|
||||
(lambda _
|
||||
;; But! As it turns out, that test additionally relies
|
||||
;; on non-deterministic behavior; see
|
||||
;; <https://lists.gnu.org/archive/html/bug-mcron/2018-03/msg00001.html>.
|
||||
(substitute* "tests/schedule.sh"
|
||||
(("mkdir cron") "exit 77\n"))
|
||||
#t))
|
||||
(add-after 'install 'wrap-programs
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
;; By default mcron doesn't have its own modules in the
|
||||
;; search path, so the 'mcron' command fails to start.
|
||||
(let* ((output (assoc-ref outputs "out"))
|
||||
(modules (string-append output
|
||||
"/share/guile/site/2.2"))
|
||||
(go (string-append output
|
||||
"/lib/guile/2.2/site-ccache")))
|
||||
(wrap-program (string-append output "/bin/mcron")
|
||||
`("GUILE_LOAD_PATH" ":" prefix
|
||||
(,modules))
|
||||
`("GUILE_LOAD_COMPILED_PATH" ":" prefix (,go)))
|
||||
#t))))))
|
||||
(native-inputs `(("pkg-config" ,pkg-config)
|
||||
("tzdata" ,tzdata-for-tests)))
|
||||
(inputs `(("ed" ,ed) ("which" ,which) ("guile" ,guile-2.2)))
|
||||
(home-page "https://www.gnu.org/software/mcron/")
|
||||
(synopsis "Run jobs at scheduled times")
|
||||
(description
|
||||
@ -684,67 +717,8 @@ format is also supported.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public mcron2
|
||||
;; This is mthl's mcron development branch, not yet merged in mcron.
|
||||
(let ((commit "31baff1a5187d8ddc89324cbe42dbeffc309c962"))
|
||||
(package
|
||||
(inherit mcron)
|
||||
(name "mcron2")
|
||||
(version (string-append (package-version mcron) "-0."
|
||||
(string-take commit 7)))
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://notabug.org/mthl/mcron/")
|
||||
(commit commit)))
|
||||
(sha256
|
||||
(base32
|
||||
"1h5wxy997hxi718hpx419c23q09939kbxrjbbq54lv0cgw1bb63z"))
|
||||
(file-name (string-append name "-" version "-checkout"))))
|
||||
(native-inputs
|
||||
`(("autoconf" ,autoconf)
|
||||
("automake" ,automake)
|
||||
("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)
|
||||
;; 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")
|
||||
(("guile/site/2.0")
|
||||
"guile/site/2.2"))
|
||||
#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))))))))))))
|
||||
;; This was mthl's mcron development branch, and it became mcron 1.1.
|
||||
(deprecated-package "mcron2" mcron))
|
||||
|
||||
(define-public guile-ics
|
||||
(package
|
||||
|
@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@ -20,7 +20,7 @@
|
||||
#:use-module (gnu services)
|
||||
#:use-module (gnu services base)
|
||||
#:use-module (gnu services shepherd)
|
||||
#:autoload (gnu packages guile) (mcron2)
|
||||
#:autoload (gnu packages guile) (mcron)
|
||||
#:use-module (guix records)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (srfi srfi-1)
|
||||
@ -53,7 +53,7 @@
|
||||
make-mcron-configuration
|
||||
mcron-configuration?
|
||||
(mcron mcron-configuration-mcron ;package
|
||||
(default mcron2))
|
||||
(default mcron))
|
||||
(jobs mcron-configuration-jobs ;list of <mcron-job>
|
||||
(default '())))
|
||||
|
||||
@ -100,7 +100,7 @@
|
||||
jobs)))))
|
||||
(default-value (mcron-configuration)))) ;empty job list
|
||||
|
||||
(define* (mcron-service jobs #:optional (mcron mcron2))
|
||||
(define* (mcron-service jobs #:optional (mcron mcron))
|
||||
"Return an mcron service running @var{mcron} that schedules @var{jobs}, a
|
||||
list of gexps denoting mcron job specifications.
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@ -477,7 +477,7 @@ in a loop. See <http://bugs.gnu.org/26931>.")
|
||||
|
||||
(define %mcron-os
|
||||
;; System with an mcron service, with one mcron job for "root" and one mcron
|
||||
;; job for an unprivileged user (note: #:user is an 'mcron2' thing.)
|
||||
;; job for an unprivileged user.
|
||||
(let ((job1 #~(job next-second-from
|
||||
(lambda ()
|
||||
(call-with-output-file "witness"
|
||||
|
Loading…
Reference in New Issue
Block a user