GNU bug report logs - #58855
[PATCH 0/5] Update mcron to latest commit

Previous Next

Package: guix-patches;

Reported by: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>

Date: Sat, 29 Oct 2022 04:08:01 UTC

Severity: normal

Tags: patch

Done: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 58855 in the body.
You can then email your comments to 58855 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#58855; Package guix-patches. (Sat, 29 Oct 2022 04:08:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Maxim Cournoyer <maxim.cournoyer <at> gmail.com>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Sat, 29 Oct 2022 04:08:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: guix-patches <at> gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH 0/5] Update mcron to latest commit
Date: Fri, 28 Oct 2022 23:47:16 -0400
Hi,

This update mcrons to its latest commit, which includes these changes:

--8<---------------cut here---------------start------------->8---
5fd0ccd * origin/master tests: Check (mcron vixie-specification)
d1a3e83 * vixie-time: Remove calls to 'pk' debugging facility
19ba0a8 * Lose hope of running against guile 2.2 or earlier.
e2ecb80 * Give mcron --log option to turn logging on.
a7a456c * base: Annotate output with job information.
9e99490 * Revert "Minor cosmetic simplification of case logic after previous patch."
d5c021e * documentation: extensive editing of info manual after a note from Paul Vixie.
99a26e5 * Minor cosmetic simplification of case logic after previous patch.
8b27157 * base: Handle nonexistent user home directories.
271b1f2 * Clarify an error message
172f70e * documentation: Bug fix in a simple example.
--8<---------------cut here---------------end--------------->8---

The one "base: Annotate output with job information." one gives us better logging capability,
such as when a job is started and when it finishes, and its completion status:

--8<---------------cut here---------------start------------->8---
2022-10-28 22:55:00 5185 duckdns-update: completed in 0.349s
2022-10-28 23:00:00 6547 duckdns-update: running...
2022-10-28 23:00:00 6548 btrbk: running...
2022-10-28 23:00:00 6547 duckdns-update: completed in 0.350s
2022-10-28 23:05:01 7764 duckdns-update: running...
2022-10-28 23:05:01 7764 duckdns-update: completed in 0.417s
2022-10-28 23:10:00 8315 duckdns-update: running...
2022-10-28 23:10:00 8315 duckdns-update: completed in 0.454s
--8<---------------cut here---------------end--------------->8---

We now see the pid, job name and some message about the current status
(running/completed/failed).

I hope you like it!

Maxim Cournoyer (5):
  services: configuration: Re-order generated record fields.
  services: mcron: Add log? and log-format fields to mcron-configuration.
  gnu: mcron: Use gexps and strip trailing #t.
  gnu: Remove guile2.2-mcron.
  gnu: mcron: Update to 1.2.1-0.5fd0ccd.

 doc/guix.texi                  | 45 +++++++++++++----
 gnu/home/services/mcron.scm    | 47 +++++++++++++----
 gnu/packages/guile-xyz.scm     | 92 +++++++++++++++++-----------------
 gnu/services/configuration.scm | 10 ++--
 gnu/services/mcron.scm         | 47 +++++++++++++----
 gnu/services/monitoring.scm    |  4 +-
 6 files changed, 162 insertions(+), 83 deletions(-)

-- 
2.37.3





Information forwarded to guix-patches <at> gnu.org:
bug#58855; Package guix-patches. (Sat, 29 Oct 2022 04:18:02 GMT) Full text and rfc822 format available.

Message #8 received at 58855 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 58855 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH 1/5] services: configuration: Re-order generated record fields.
Date: Sat, 29 Oct 2022 00:16:45 -0400
This is so that the first field of the generated record matches the first one
declared, which makes 'define-configuration' record API compatible with
define-record-type* ones.

* gnu/services/configuration.scm (define-configuration-helper): Move the
%location field below the ones declared by the user.
* gnu/services/monitoring.scm (zabbix-front-end-config): Adjust match pattern
accordingly.
---
 gnu/services/configuration.scm | 10 +++++-----
 gnu/services/monitoring.scm    |  4 ++--
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/gnu/services/configuration.scm b/gnu/services/configuration.scm
index 636c49ccba..dacfc52ba9 100644
--- a/gnu/services/configuration.scm
+++ b/gnu/services/configuration.scm
@@ -242,17 +242,17 @@ (define-record-type* #,(id #'stem #'< #'stem #'>)
                stem
                #,(id #'stem #'make- #'stem)
                #,(id #'stem #'stem #'?)
-               (%location #,(id #'stem #'stem #'-location)
-                          (default (and=> (current-source-location)
-                                          source-properties->location))
-                          (innate))
                #,@(map (lambda (name getter def)
                          #`(#,name #,getter (default #,def)
                                    (sanitize
                                     #,(id #'stem #'validate- #'stem #'- name))))
                        #'(field ...)
                        #'(field-getter ...)
-                       #'(field-default ...)))
+                       #'(field-default ...))
+               (%location #,(id #'stem #'stem #'-location)
+                          (default (and=> (current-source-location)
+                                          source-properties->location))
+                          (innate)))
 
              (define #,(id #'stem #'stem #'-fields)
                (list (configuration-field
diff --git a/gnu/services/monitoring.scm b/gnu/services/monitoring.scm
index 9c8704092c..b19c6c9f18 100644
--- a/gnu/services/monitoring.scm
+++ b/gnu/services/monitoring.scm
@@ -622,8 +622,8 @@ (define-configuration zabbix-front-end-configuration
 
 (define (zabbix-front-end-config config)
   (match-record config <zabbix-front-end-configuration>
-    (%location db-host db-port db-name db-user db-password db-secret-file
-               zabbix-host zabbix-port)
+    (db-host db-port db-name db-user db-password db-secret-file
+             zabbix-host zabbix-port %location)
     (mixed-text-file "zabbix.conf.php"
                      "\
 <?php
-- 
2.37.3





Information forwarded to guix-patches <at> gnu.org:
bug#58855; Package guix-patches. (Sat, 29 Oct 2022 04:18:02 GMT) Full text and rfc822 format available.

Message #11 received at 58855 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 58855 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH 2/5] services: mcron: Add log? and log-format fields to
 mcron-configuration.
Date: Sat, 29 Oct 2022 00:16:46 -0400
* gnu/services/mcron.scm (list-of-gexps?): New predicate.
(mcron-configuration): Rewrite using define-configuration.
[log?, log-format]: New fields.
(mcron-shepherd-services): Invoke mcron with the --log and --log-format
arguments when log? is #t,
(generate-doc): New procedure.
* doc/guix.texi (Scheduled Job Execution): Update doc.
(Mcron Home Service): Likewise.
* gnu/home/services/mcron.scm: Keep in sync with the above changes to
gnu/services/mcron.scm.
---
 doc/guix.texi               | 45 ++++++++++++++++++++++++++++-------
 gnu/home/services/mcron.scm | 47 ++++++++++++++++++++++++++++---------
 gnu/services/mcron.scm      | 47 ++++++++++++++++++++++++++++---------
 3 files changed, 108 insertions(+), 31 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 80fb3bc47f..aadd16dd53 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -18994,20 +18994,33 @@ words, it is possible to define services that provide additional mcron
 jobs to run.
 @end defvr
 
+@c Generated via (generate-documentation) at the bottom of (gnu services
+@c mcron).
+@c %start of fragment
 @deftp {Data Type} mcron-configuration
-Data type representing the configuration of mcron.
+Available @code{mcron-configuration} fields are:
 
 @table @asis
-@item @code{mcron} (default: @var{mcron})
+@item @code{mcron} (default: @code{mcron}) (type: file-like)
 The mcron package to use.
 
-@item @code{jobs}
+@item @code{jobs} (default: @code{()}) (type: list-of-gexps)
 This is a list of gexps (@pxref{G-Expressions}), where each gexp
 corresponds to an mcron job specification (@pxref{Syntax, mcron job
-specifications,, mcron, GNU <at> tie{}mcron}).
+specifications,, mcron,GNU <at> tie{}mcron}).
+
+@item @code{log?} (default: @code{#t}) (type: boolean)
+Log messages to standard output.
+
+@item @code{log-format} (default: @code{"~1@@*~a ~a: ~a~%"}) (type: string)
+@code{(ice-9 format)} format string for log messages.  The default value
+produces messages like "@samp{@var{pid} @var{name}: @var{message}"}
+(@pxref{Invoking mcron, Invoking,, mcron,GNU <at> tie{}mcron}).  Each message
+is also prefixed by a timestamp by GNU Shepherd.
+
 @end table
 @end deftp
-
+@c %end of fragment
 
 @node Log Rotation
 @subsection Log Rotation
@@ -41015,18 +41028,32 @@ jobs to run.
 @end defvr
 
 @deftp {Data Type} home-mcron-configuration
-Data type representing the configuration of mcron.
+Available @code{home-mcron-configuration} fields are:
 
+@c Auto-generated with (gnu home services mcron)'s
+@c generate-documentation procedure.
+@c %start of fragment
 @table @asis
-@item @code{mcron} (default: @var{mcron})
+@item @code{mcron} (default: @code{mcron}) (type: file-like)
 The mcron package to use.
 
-@item @code{jobs}
+@item @code{jobs} (default: @code{()}) (type: list-of-gexps)
 This is a list of gexps (@pxref{G-Expressions}), where each gexp
 corresponds to an mcron job specification (@pxref{Syntax, mcron job
-specifications,, mcron, GNU <at> tie{}mcron}).
+specifications,, mcron,GNU <at> tie{}mcron}).
+
+@item @code{log?} (default: @code{#t}) (type: boolean)
+Log messages to standard output.
+
+@item @code{log-format} (default: @code{"~1@@*~a ~a: ~a~%"}) (type: string)
+@code{(ice-9 format)} format string for log messages.  The default value
+produces messages like "@samp{@var{pid} @var{name}: @var{message}"}
+(@pxref{Invoking mcron, Invoking,, mcron,GNU <at> tie{}mcron}).  Each message
+is also prefixed by a timestamp by GNU Shepherd.
+
 @end table
 @end deftp
+@c %end of fragment
 
 @node Power Management Home Services
 @subsection Power Management Home Services
diff --git a/gnu/home/services/mcron.scm b/gnu/home/services/mcron.scm
index 0b3dbb810b..1d294a997c 100644
--- a/gnu/home/services/mcron.scm
+++ b/gnu/home/services/mcron.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2021 Andrew Tropin <andrew <at> trop.in>
 ;;; Copyright © 2021 Xinglu Chen <public <at> yoctocell.xyz>
+;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,6 +21,7 @@
 (define-module (gnu home services mcron)
   #:use-module (gnu packages guile-xyz)
   #:use-module (gnu home services)
+  #:use-module (gnu services configuration)
   #:use-module (gnu services shepherd)
   #:use-module (gnu home services shepherd)
   #:use-module (guix records)
@@ -53,13 +55,23 @@ (define-module (gnu home services mcron)
 ;;
 ;;; Code:
 
-(define-record-type* <home-mcron-configuration> home-mcron-configuration
-  make-home-mcron-configuration
-  home-mcron-configuration?
-  (package home-mcron-configuration-package ; package
-           (default mcron))
-  (jobs home-mcron-configuration-jobs   ; list of jobs
-        (default '())))
+(define list-of-gexps?
+  (list-of gexp?))
+
+(define-configuration/no-serialization home-mcron-configuration
+  (mcron (file-like mcron) "The mcron package to use.")
+  (jobs
+   (list-of-gexps '())
+   "This is a list of gexps (@pxref{G-Expressions}), where each gexp
+corresponds to an mcron job specification (@pxref{Syntax, mcron job
+specifications,, mcron, GNU <at> tie{}mcron}).")
+  (log? (boolean #t) "Log messages to standard output.")
+  (log-format
+   (string "~1@*~a ~a: ~a~%")
+   "@code{(ice-9 format)} format string for log messages.  The default value
+produces messages like \"@samp{@var{pid} @var{name}:
+@var{message}\"} (@pxref{Invoking mcron, Invoking,, mcron, GNU <at> tie{}mcron}).
+Each message is also prefixed by a timestamp by GNU Shepherd."))
 
 (define job-files (@@ (gnu services mcron) job-files))
 (define shepherd-schedule-action
@@ -69,19 +81,23 @@ (define home-mcron-shepherd-services
   (match-lambda
     (($ <home-mcron-configuration> mcron '()) ; no jobs to run
      '())
-    (($ <home-mcron-configuration> mcron jobs)
+    (($ <home-mcron-configuration> mcron jobs  log? log-format)
      (let ((files (job-files mcron jobs)))
        (list (shepherd-service
               (documentation "User cron jobs.")
               (provision '(mcron))
               (modules `((srfi srfi-1)
                          (srfi srfi-26)
-                         (ice-9 popen)            ; for the 'schedule' action
+                         (ice-9 popen)  ; for the 'schedule' action
                          (ice-9 rdelim)
                          (ice-9 match)
                          ,@%default-modules))
               (start #~(make-forkexec-constructor
-                        (list #$(file-append mcron "/bin/mcron") #$@files)
+                        (list (string-append #$mcron "/bin/mcron")
+                              #$@(if log?
+                                     #~("--log" "--log-format" #$log-format)
+                                     #~())
+                              #$@files)
                         #:log-file (string-append
                                     (or (getenv "XDG_LOG_HOME")
                                         (format #f "~a/.local/var/log"
@@ -91,7 +107,7 @@ (define home-mcron-shepherd-services
               (actions
                (list (shepherd-schedule-action mcron files)))))))))
 
-(define home-mcron-profile (compose list home-mcron-configuration-package))
+(define home-mcron-profile (compose list home-mcron-configuration-mcron))
 
 (define (home-mcron-extend config jobs)
   (home-mcron-configuration
@@ -113,3 +129,12 @@ (define home-mcron-service-type
                 (default-value (home-mcron-configuration))
                 (description
                  "Install and configure the GNU mcron cron job manager.")))
+
+
+;;;
+;;; Generate documentation.
+;;;
+(define (generate-doc)
+  (configuration->documentation 'home-mcron-configuration))
+
+;;; mcron.scm ends here
diff --git a/gnu/services/mcron.scm b/gnu/services/mcron.scm
index 23760ebda4..52332d6123 100644
--- a/gnu/services/mcron.scm
+++ b/gnu/services/mcron.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo <at> gnu.org>
+;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -18,6 +19,7 @@
 
 (define-module (gnu services mcron)
   #:use-module (gnu services)
+  #:use-module (gnu services configuration)
   #:use-module (gnu services shepherd)
   #:use-module (gnu packages guile-xyz)
   #:use-module (guix deprecation)
@@ -30,6 +32,8 @@ (define-module (gnu services mcron)
             mcron-configuration?
             mcron-configuration-mcron
             mcron-configuration-jobs
+            mcron-configuration-log?
+            mcron-configuration-log-format
 
             mcron-service-type))
 
@@ -48,13 +52,23 @@ (define-module (gnu services mcron)
 ;;;
 ;;; Code:
 
-(define-record-type* <mcron-configuration> mcron-configuration
-  make-mcron-configuration
-  mcron-configuration?
-  (mcron             mcron-configuration-mcron    ;file-like
-                     (default mcron))
-  (jobs              mcron-configuration-jobs     ;list of <mcron-job>
-                     (default '())))
+(define list-of-gexps?
+  (list-of gexp?))
+
+(define-configuration/no-serialization mcron-configuration
+  (mcron (file-like mcron) "The mcron package to use.")
+  (jobs
+   (list-of-gexps '())
+   "This is a list of gexps (@pxref{G-Expressions}), where each gexp
+corresponds to an mcron job specification (@pxref{Syntax, mcron job
+specifications,, mcron, GNU <at> tie{}mcron}).")
+  (log? (boolean #t) "Log messages to standard output.")
+  (log-format
+   (string "~1@*~a ~a: ~a~%")
+   "@code{(ice-9 format)} format string for log messages.  The default value
+produces messages like \"@samp{@var{pid} @var{name}:
+@var{message}\"} (@pxref{Invoking mcron, Invoking,, mcron, GNU <at> tie{}mcron}).
+Each message is also prefixed by a timestamp by GNU Shepherd."))
 
 (define (job-files mcron jobs)
   "Return a list of file-like object for JOBS, a list of gexps."
@@ -124,21 +138,25 @@ (define (shepherd-schedule-action mcron files)
 
 (define mcron-shepherd-services
   (match-lambda
-    (($ <mcron-configuration> mcron ())           ;nothing to do!
+    (($ <mcron-configuration> mcron ()) ;nothing to do!
      '())
-    (($ <mcron-configuration> mcron jobs)
+    (($ <mcron-configuration> mcron jobs log? log-format)
      (let ((files (job-files mcron jobs)))
        (list (shepherd-service
               (provision '(mcron))
               (requirement '(user-processes))
               (modules `((srfi srfi-1)
                          (srfi srfi-26)
-                         (ice-9 popen)            ;for the 'schedule' action
+                         (ice-9 popen)  ;for the 'schedule' action
                          (ice-9 rdelim)
                          (ice-9 match)
                          ,@%default-modules))
               (start #~(make-forkexec-constructor
-                        (list (string-append #$mcron "/bin/mcron") #$@files)
+                        (list (string-append #$mcron "/bin/mcron")
+                              #$@(if log?
+                                     #~("--log" "--log-format" #$log-format)
+                                     #~())
+                              #$@files)
 
                         ;; Disable auto-compilation of the job files and set a
                         ;; sane value for 'PATH'.
@@ -172,4 +190,11 @@ (define mcron-service-type
                                          jobs)))))
                 (default-value (mcron-configuration)))) ;empty job list
 
+
+;;;
+;;; Generate documentation.
+;;;
+(define (generate-doc)
+  (configuration->documentation 'mcron-configuration))
+
 ;;; mcron.scm ends here
-- 
2.37.3





Information forwarded to guix-patches <at> gnu.org:
bug#58855; Package guix-patches. (Sat, 29 Oct 2022 04:18:03 GMT) Full text and rfc822 format available.

Message #14 received at 58855 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 58855 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH 3/5] gnu: mcron: Use gexps and strip trailing #t.
Date: Sat, 29 Oct 2022 00:16:47 -0400
* gnu/packages/guile-xyz.scm (mcron)
[phases]: Use gexps and strip trailing #t.
---
 gnu/packages/guile-xyz.scm | 41 +++++++++++++++++++-------------------
 1 file changed, 20 insertions(+), 21 deletions(-)

diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index 209ba694d7..1b41eb24af 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -2667,27 +2667,26 @@ (define-public mcron
                 "0bkn235g2ia4f7ispr9d55c7bc18282r3qd8ldhh5q2kiin75zi0"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (modify-phases %standard-phases
-                  (add-before 'check 'adjust-tests
-                    (lambda _
-                      (substitute* "tests/job-specifier.scm"
-                        ;; (getpw) fails with "entry not found" in the build
-                        ;; environment, so pass an argument.
-                        (("\\(getpw\\)")
-                         "(getpwnam (getuid))")
-                        ;; The build environment lacks an entry for root in
-                        ;; /etc/passwd.
-                        (("\\(getpw 0\\)")
-                         "(getpwnam \"nobody\")")
-
-                        ;; FIXME: Skip the 4 faulty tests (see above).
-                        (("\\(test-equal \"next-year\"" all)
-                         (string-append "(test-skip 4)\n" all)))
-                      #t)))))
-    (native-inputs `(("pkg-config" ,pkg-config)
-                     ("tzdata" ,tzdata-for-tests)
-                     ("guile-native"              ;for 'guild compile'
-                      ,@(assoc-ref (package-inputs this-package) "guile"))))
+     (list
+      #:phases #~(modify-phases %standard-phases
+                   (add-before 'check 'adjust-tests
+                     (lambda _
+                       (substitute* "tests/job-specifier.scm"
+                         ;; (getpw) fails with "entry not found" in the build
+                         ;; environment, so pass an argument.
+                         (("\\(getpw\\)")
+                          "(getpwnam (getuid))")
+                         ;; The build environment lacks an entry for root in
+                         ;; /etc/passwd.
+                         (("\\(getpw 0\\)")
+                          "(getpwnam \"nobody\")")
+                         ;; FIXME: Skip the 4 faulty tests (see above).
+                         (("\\(test-equal \"next-year\"" all)
+                          (string-append "(test-skip 4)\n" all))))))))
+    (native-inputs (list guile-3.0      ;for 'guild compile'
+                         pkg-config
+                         tzdata-for-tests))
+
     (inputs (list guile-3.0))
     (home-page "https://www.gnu.org/software/mcron/")
     (synopsis "Run jobs at scheduled times")
-- 
2.37.3





Information forwarded to guix-patches <at> gnu.org:
bug#58855; Package guix-patches. (Sat, 29 Oct 2022 04:18:03 GMT) Full text and rfc822 format available.

Message #17 received at 58855 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 58855 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH 4/5] gnu: Remove guile2.2-mcron.
Date: Sat, 29 Oct 2022 00:16:48 -0400
* gnu/packages/guile-xyz.scm (guile2.2-mcron): Delete variable.
---
 gnu/packages/guile-xyz.scm | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index 1b41eb24af..41f93df155 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -2697,12 +2697,6 @@ (define-public mcron
 format is also supported.")
     (license license:gpl3+)))
 
-(define-public guile2.2-mcron
-  (package
-    (inherit mcron)
-    (name "guile2.2-mcron")
-    (inputs (list guile-2.2))))
-
 (define-public guile-picture-language
   (let ((commit "a1322bf11945465241ca5b742a70893f24156d12")
         (revision "5"))
-- 
2.37.3





Information forwarded to guix-patches <at> gnu.org:
bug#58855; Package guix-patches. (Sat, 29 Oct 2022 04:18:04 GMT) Full text and rfc822 format available.

Message #20 received at 58855 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 58855 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH 5/5] gnu: mcron: Update to 1.2.1-0.5fd0ccd.
Date: Sat, 29 Oct 2022 00:16:49 -0400
* gnu/packages/guile-xyz.scm (mcron): Update to 1.2.1-0.5fd0ccd.
[native-inputs]: Add autoconf, automake, help2man, and texinfo.
---
 gnu/packages/guile-xyz.scm | 85 +++++++++++++++++++++-----------------
 1 file changed, 47 insertions(+), 38 deletions(-)

diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index 41f93df155..fd2a26d3a5 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -2655,47 +2655,56 @@ (define-public guile2.0-commonmark
     (inputs (list guile-2.0))))
 
 (define-public mcron
-  (package
-    (name "mcron")
-    (version "1.2.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnu/mcron/mcron-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "0bkn235g2ia4f7ispr9d55c7bc18282r3qd8ldhh5q2kiin75zi0"))))
-    (build-system gnu-build-system)
-    (arguments
-     (list
-      #:phases #~(modify-phases %standard-phases
-                   (add-before 'check 'adjust-tests
-                     (lambda _
-                       (substitute* "tests/job-specifier.scm"
-                         ;; (getpw) fails with "entry not found" in the build
-                         ;; environment, so pass an argument.
-                         (("\\(getpw\\)")
-                          "(getpwnam (getuid))")
-                         ;; The build environment lacks an entry for root in
-                         ;; /etc/passwd.
-                         (("\\(getpw 0\\)")
-                          "(getpwnam \"nobody\")")
-                         ;; FIXME: Skip the 4 faulty tests (see above).
-                         (("\\(test-equal \"next-year\"" all)
-                          (string-append "(test-skip 4)\n" all))))))))
-    (native-inputs (list guile-3.0      ;for 'guild compile'
-                         pkg-config
-                         tzdata-for-tests))
-
-    (inputs (list guile-3.0))
-    (home-page "https://www.gnu.org/software/mcron/")
-    (synopsis "Run jobs at scheduled times")
-    (description
-     "GNU Mcron is a complete replacement for Vixie cron.  It is used to run
+  ;; Use the latest commits, as interesting changes haven't been released yet,
+  ;; such as improved logging.
+  (let ((revision "0")
+        (commit "5fd0ccde5a4cff70299999f988e6b5166584814d"))
+    (package
+      (name "mcron")
+      (version (git-version "1.2.1" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://git.savannah.gnu.org/git/mcron.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0jl2w67a5hkphzssdzq3q4jcwv2b174b11d3w5i3khxq2vhzd6kk"))))
+      (build-system gnu-build-system)
+      (arguments
+       (list
+        #:phases #~(modify-phases %standard-phases
+                     (add-before 'check 'adjust-tests
+                       (lambda _
+                         (substitute* "tests/job-specifier.scm"
+                           ;; (getpw) fails with "entry not found" in the build
+                           ;; environment, so pass an argument.
+                           (("\\(getpw\\)")
+                            "(getpwnam (getuid))")
+                           ;; The build environment lacks an entry for root in
+                           ;; /etc/passwd.
+                           (("\\(getpw 0\\)")
+                            "(getpwnam \"nobody\")")
+                           ;; FIXME: Skip the 4 faulty tests (see above).
+                           (("\\(test-equal \"next-year\"" all)
+                            (string-append "(test-skip 4)\n" all))))))))
+      (native-inputs (list autoconf
+                           automake
+                           guile-3.0    ;for 'guild compile'
+                           help2man
+                           pkg-config
+                           tzdata-for-tests
+                           texinfo))
+      (inputs (list guile-3.0))
+      (home-page "https://www.gnu.org/software/mcron/")
+      (synopsis "Run jobs at scheduled times")
+      (description
+       "GNU Mcron is a complete replacement for Vixie cron.  It is used to run
 tasks on a schedule, such as every hour or every Monday.  Mcron is written in
 Guile, so its configuration can be written in Scheme; the original cron
 format is also supported.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public guile-picture-language
   (let ((commit "a1322bf11945465241ca5b742a70893f24156d12")
-- 
2.37.3





bug closed, send any further explanations to 58855 <at> debbugs.gnu.org and Maxim Cournoyer <maxim.cournoyer <at> gmail.com> Request was from Maxim Cournoyer <maxim.cournoyer <at> gmail.com> to control <at> debbugs.gnu.org. (Wed, 16 Nov 2022 00:51:02 GMT) Full text and rfc822 format available.

Information forwarded to guix-patches <at> gnu.org:
bug#58855; Package guix-patches. (Thu, 17 Nov 2022 22:38:02 GMT) Full text and rfc822 format available.

Message #25 received at 58855 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Cc: guix-devel <at> gnu.org, 58855 <at> debbugs.gnu.org
Subject: Layout of ‘define-configuration’ records
Date: Thu, 17 Nov 2022 23:37:49 +0100
Hi,

Maxim Cournoyer <maxim.cournoyer <at> gmail.com> skribis:

> This is so that the first field of the generated record matches the first one
> declared, which makes 'define-configuration' record API compatible with
> define-record-type* ones.
>
> * gnu/services/configuration.scm (define-configuration-helper): Move the
> %location field below the ones declared by the user.
> * gnu/services/monitoring.scm (zabbix-front-end-config): Adjust match pattern
> accordingly.

[...]

> +++ b/gnu/services/configuration.scm
> @@ -242,17 +242,17 @@ (define-record-type* #,(id #'stem #'< #'stem #'>)
>                 stem
>                 #,(id #'stem #'make- #'stem)
>                 #,(id #'stem #'stem #'?)
> -               (%location #,(id #'stem #'stem #'-location)
> -                          (default (and=> (current-source-location)
> -                                          source-properties->location))
> -                          (innate))
>                 #,@(map (lambda (name getter def)
>                           #`(#,name #,getter (default #,def)
>                                     (sanitize
>                                      #,(id #'stem #'validate- #'stem #'- name))))
>                         #'(field ...)
>                         #'(field-getter ...)
> -                       #'(field-default ...)))
> +                       #'(field-default ...))
> +               (%location #,(id #'stem #'stem #'-location)
> +                          (default (and=> (current-source-location)
> +                                          source-properties->location))
> +                          (innate)))

Moving the field last is problematic as we’ve seen for any user that
uses ‘match’ on records—something that’s not recommended but still used
a lot.

>  (define (zabbix-front-end-config config)
>    (match-record config <zabbix-front-end-configuration>
> -    (%location db-host db-port db-name db-user db-password db-secret-file
> -               zabbix-host zabbix-port)
> +    (db-host db-port db-name db-user db-password db-secret-file
> +             zabbix-host zabbix-port %location)

This change has no effect because ‘match-record’ matches fields by name,
precisely to avoid problems when changing the layout of record types.

I’m not sure what was meant by “compatible” in the commit log; how
fields are laid out is something user code should not be aware of.

The only thing to keep in mind is that records must not be matched with
‘match’ because then the code silently breaks when the record type
layout is changed.  This is why ‘match-record’ was introduced:

  https://issues.guix.gnu.org/28960#4

One last thing: placing ‘%location’ first can let us implement:

  (define (configuration-location config)
    (struct-ref config 0))

As if there were type inheritance.  I didn’t see any indication that
this is actually done anywhere, but it could have been the case (it’s
not an unusual pattern) and it’s still something we might want to do.

Does that make sense?

Thanks,
Ludo’.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Fri, 16 Dec 2022 12:24:07 GMT) Full text and rfc822 format available.

This bug report was last modified 2 years and 182 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.