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 | ||||
| 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" | ||||
|  |  | |||
		Reference in a new issue