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:
Ludovic Courtès 2018-03-19 23:16:48 +01:00
parent f88028c432
commit cfbf6de18c
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
4 changed files with 53 additions and 79 deletions

View file

@ -10479,7 +10479,7 @@ gexps to introduce job definitions that are passed to mcron
for more information on mcron job specifications. Below is the for more information on mcron job specifications. Below is the
reference of the mcron service. 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 Return an mcron service running @var{mcron} that schedules @var{jobs}, a
list of gexps denoting mcron job specifications. list of gexps denoting mcron job specifications.
@ -10504,7 +10504,7 @@ mcron jobs to run.
Data type representing the configuration of mcron. Data type representing the configuration of mcron.
@table @asis @table @asis
@item @code{mcron} (default: @var{mcron2}) @item @code{mcron} (default: @var{mcron})
The mcron package to use. The mcron package to use.
@item @code{jobs} @item @code{jobs}

View file

@ -662,18 +662,51 @@ (define-public guile-ncurses/gpm
(define-public mcron (define-public mcron
(package (package
(name "mcron") (name "mcron")
(version "1.0.8") (version "1.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnu/mcron/mcron-" (uri (string-append "mirror://gnu/mcron/mcron-"
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0zparwgf01jgl1x53ik71ghabldq6zz18ha4dscps1i0qrzgap1b")) "1f547sqqfbp0k02sqk4ivwx8y9mx8l0rrx1c9rrj033av073h6xq"))))
(patches (search-patches "mcron-install.patch"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs `(("pkg-config" ,pkg-config))) (arguments
(inputs `(("ed" ,ed) ("which" ,which) ("guile" ,guile-2.0))) '(#: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/") (home-page "https://www.gnu.org/software/mcron/")
(synopsis "Run jobs at scheduled times") (synopsis "Run jobs at scheduled times")
(description (description
@ -684,67 +717,8 @@ (define-public mcron
(license license:gpl3+))) (license license:gpl3+)))
(define-public mcron2 (define-public mcron2
;; This is mthl's mcron development branch, not yet merged in mcron. ;; This was mthl's mcron development branch, and it became mcron 1.1.
(let ((commit "31baff1a5187d8ddc89324cbe42dbeffc309c962")) (deprecated-package "mcron2" mcron))
(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))))))))))))
(define-public guile-ics (define-public guile-ics
(package (package

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; 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. ;;; This file is part of GNU Guix.
;;; ;;;
@ -20,7 +20,7 @@ (define-module (gnu services mcron)
#:use-module (gnu services) #:use-module (gnu services)
#:use-module (gnu services base) #:use-module (gnu services base)
#:use-module (gnu services shepherd) #:use-module (gnu services shepherd)
#:autoload (gnu packages guile) (mcron2) #:autoload (gnu packages guile) (mcron)
#:use-module (guix records) #:use-module (guix records)
#:use-module (guix gexp) #:use-module (guix gexp)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
@ -53,7 +53,7 @@ (define-record-type* <mcron-configuration> mcron-configuration
make-mcron-configuration make-mcron-configuration
mcron-configuration? mcron-configuration?
(mcron mcron-configuration-mcron ;package (mcron mcron-configuration-mcron ;package
(default mcron2)) (default mcron))
(jobs mcron-configuration-jobs ;list of <mcron-job> (jobs mcron-configuration-jobs ;list of <mcron-job>
(default '()))) (default '())))
@ -100,7 +100,7 @@ (define mcron-service-type
jobs))))) jobs)))))
(default-value (mcron-configuration)))) ;empty job list (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 "Return an mcron service running @var{mcron} that schedules @var{jobs}, a
list of gexps denoting mcron job specifications. list of gexps denoting mcron job specifications.

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; 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. ;;; This file is part of GNU Guix.
;;; ;;;
@ -477,7 +477,7 @@ (define %test-halt
(define %mcron-os (define %mcron-os
;; System with an mcron service, with one mcron job for "root" and one mcron ;; 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 (let ((job1 #~(job next-second-from
(lambda () (lambda ()
(call-with-output-file "witness" (call-with-output-file "witness"