mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 21:38:07 -05:00
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
4 changed files with 53 additions and 79 deletions
|
@ -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}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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.
|
||||||
|
|
||||||
|
|
|
@ -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"
|
||||||
|
|
Loading…
Reference in a new issue