Package: guix-patches;
Reported by: Arun Isaac <arunisaac <at> systemreboot.net>
Date: Sun, 6 Apr 2025 19:32:01 UTC
Severity: normal
Tags: patch
Done: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Arun Isaac <arunisaac <at> systemreboot.net> To: 77585 <at> debbugs.gnu.org Cc: Arun Isaac <arunisaac <at> systemreboot.net>, Maxim Cournoyer <maxim.cournoyer <at> gmail.com>, Arun Isaac <arunisaac <at> systemreboot.net>, Ludovic Courtès <ludo <at> gnu.org>, Maxim Cournoyer <maxim.cournoyer <at> gmail.com> Subject: [bug#77585] [PATCH v2] services: mumi: Add Debbugs rsync as shepherd timer. Date: Sun, 6 Apr 2025 22:52:30 +0100
* gnu/services/web.scm (<mumi-configuration>)[data-directory, rsync-remote, rsync-flags]: New fields. (%mumi-worker-log): Delete variable. (%mumi-rsync-and-index-log): New variable. (mumi-rsync-and-index): New function. (mumi-shepherd-services): Remove mumi-worker service. Add mumi-rsync-and-index service. (mumi-service-type): Remove default value. * doc/guix.texi (Web Services)[mumi]: Document data-directory, rsync-remote and rsync-flags fields. Co-authored-by: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> --- doc/guix.texi | 11 +++++++++ gnu/services/web.scm | 58 ++++++++++++++++++++++++++++++++------------ 2 files changed, 54 insertions(+), 15 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 12f155e912..8aa0b5e3ba 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -33999,6 +33999,17 @@ Web Services @item @code{mumi} (default: @code{mumi}) The Mumi package to use. +@item @code{data-directory} (default: @file{"/var/mumi/data"}) +Data directory to store Debbugs data from upstream Debbugs instance. + +@item @code{rsync-remote} +Remote rsync path from which to download Debbugs data. The remote is +polled every 2 minutes, unless a previous instance of rsync is already +running. + +@item @code{rsync-flags} (default: @code{'()}) +Additional flags to pass to @command{rsync}. + @item @code{mailer?} (default: @code{#true}) Whether to enable or disable the mailer component. diff --git a/gnu/services/web.scm b/gnu/services/web.scm index f8cf06fb48..3f0eb8780a 100644 --- a/gnu/services/web.scm +++ b/gnu/services/web.scm @@ -18,6 +18,7 @@ ;;; Copyright © 2023 Bruno Victal <mirai <at> makinata.eu> ;;; Copyright © 2023 Miguel Ángel Moreno <mail <at> migalmoreno.com> ;;; Copyright © 2024 Leo Nikkilä <hello <at> lnikki.la> +;;; Copyright © 2025 Maxim Cournoyer <maxim.cournoyer <at> gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -51,6 +52,7 @@ (define-module (gnu services web) #:use-module (gnu packages php) #:use-module (gnu packages python) #:use-module (gnu packages python-web) + #:use-module (gnu packages rsync) #:use-module (gnu packages gnupg) #:use-module (gnu packages guile) #:use-module (gnu packages logging) @@ -295,6 +297,9 @@ (define-module (gnu services web) mumi-configuration mumi-configuration? mumi-configuration-mumi + mumi-configuration-data-directory + mumi-configuration-rsync-remote + mumi-configuration-rsync-flags mumi-configuration-mailer? mumi-configuration-sender mumi-configuration-smtp @@ -2033,6 +2038,11 @@ (define-record-type* <mumi-configuration> mumi-configuration make-mumi-configuration mumi-configuration? (mumi mumi-configuration-mumi (default mumi)) + (data-directory mumi-configuration-data-directory + (default "/var/mumi/data")) + (rsync-remote mumi-configuration-rsync-remote) + (rsync-flags mumi-configuration-rsync-flags + (default '())) (mailer? mumi-configuration-mailer? (default #t)) (sender mumi-configuration-sender (default #f)) (smtp mumi-configuration-smtp (default #f)) @@ -2080,7 +2090,7 @@ (define %mumi-log "/var/log/mumi.log") (define %mumi-mailer-log "/var/log/mumi.mailer.log") -(define %mumi-worker-log "/var/log/mumi.worker.log") +(define %mumi-rsync-and-index-log "/var/log/mumi.rsync-and-index.log") (define mumi-package-configuration->alist (match-record-lambda <mumi-package-configuration> @@ -2118,6 +2128,24 @@ (define mumi-config-file packages))) <>)))))) +(define (mumi-rsync-and-index config) + (match-record config <mumi-configuration> + (data-directory rsync-remote rsync-flags) + (program-file "mumi-rsync-and-index" + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils)) + + (invoke #$(file-append rsync "/bin/rsync") + "--delete" "--archive" "--verbose" + "--timeout" "120" + #$@rsync-flags + #$rsync-remote + #$data-directory) + (invoke #$(file-append mumi "/bin/mumi") "fetch" + (string-append "--config=" + #$(mumi-config-file config)))))))) + (define (mumi-shepherd-services config) (define environment #~(list "LC_ALL=en_US.utf8" @@ -2140,17 +2168,19 @@ (define (mumi-shepherd-services config) #:log-file #$%mumi-log)) (stop #~(make-kill-destructor))) (shepherd-service - (provision '(mumi-worker)) - (documentation "Mumi bug-tracking web interface database worker.") - (requirement '(user-processes networking)) - (start #~(make-forkexec-constructor - `(#$(file-append mumi "/bin/mumi") "worker" - ,(string-append "--config=" - #$(mumi-config-file config))) - #:environment-variables #$environment - #:user "mumi" #:group "mumi" - #:log-file #$%mumi-worker-log)) - (stop #~(make-kill-destructor))) + (provision '(mumi-rsync-and-index)) + (modules '((shepherd service timer))) + (start #~(make-timer-constructor + ;; Run every 2 minutes, unless an instance of this job + ;; is already running. + (calendar-event #:minutes (iota 30 0 2)) + (command #$(mumi-rsync-and-index config)) + #:log-file #$%mumi-rsync-and-index-log + #:max-duration (* 60 60) + #:wait-for-termination? #t)) + (stop #~(make-timer-destructor)) + (actions (list shepherd-trigger-action)) + (documentation "Rsync and index the GNU Debbugs data")) (shepherd-service (provision '(mumi-mailer)) (documentation "Mumi bug-tracking web interface mailer.") @@ -2181,9 +2211,7 @@ (define mumi-service-type (service-extension shepherd-root-service-type mumi-shepherd-services))) (description - "Run Mumi, a Web interface to the Debbugs bug-tracking server.") - (default-value - (mumi-configuration)))) + "Run Mumi, a Web interface to the Debbugs bug-tracking server."))) (define %default-gmnisrv-config-file (plain-file "gmnisrv.ini" " base-commit: ada14197fb465c1c90efbc450308c14f077ff167 -- 2.49.0
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.