From patchwork Sun Apr 6 21:52:30 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Arun Isaac X-Patchwork-Id: 41380 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id C970C27BC4B; Sun, 6 Apr 2025 22:53:24 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-7.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE, SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 58C8A27BC49 for ; Sun, 6 Apr 2025 22:53:23 +0100 (BST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u1XvS-0003Ji-C8; Sun, 06 Apr 2025 17:53:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u1XvM-0003JM-Pu for guix-patches@gnu.org; Sun, 06 Apr 2025 17:53:06 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u1XvM-0007Wo-GI; Sun, 06 Apr 2025 17:53:04 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:Date:From:To:In-Reply-To:References:Subject; bh=0eqCNLPPg740yMkUhyBqWUKBAqcQZ52HZOekBkj2HwM=; b=lMoPFY3/PEzXbSp4oMYYTHVwS6rmmuk+H6TWZEooT7nSCmfmYyhQPQSH3B2Bsioh/ekFoPCCkpbpADhPx2hIBsLjCU2UEy8tj+TzmGGCq2wGQbegCc49SsjkvmLVQ/LEnEybJ/R50kRbYmpTzBGcigXQEURqkpn2IETXNrLGqQx1x93ZTNJWGtABmIZt0We4yJMnEXHYy47T+mYDTefJiN4ErKvWHg2NLe3pp3DDwuAyoZYyvI//TfNOKu8T5dlTBxyo7vfzUmHd3ytMc8XiGNh5jsTlKo3A5rrQrBTU70I8tic4iQWdabyC3dvl5kTsK4FFj69HGnw02zPK2zlfQg==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1u1XvK-000636-19; Sun, 06 Apr 2025 17:53:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#77585] [PATCH v2] services: mumi: Add Debbugs rsync as shepherd timer. References: <4977368b813a68f775050ff3b00a39139cf2b762.1743967795.git.arunisaac@systemreboot.net> In-Reply-To: <4977368b813a68f775050ff3b00a39139cf2b762.1743967795.git.arunisaac@systemreboot.net> Resent-From: Arun Isaac Original-Sender: "Debbugs-submit" Resent-CC: arunisaac@systemreboot.net, ludo@gnu.org, maxim.cournoyer@gmail.com, guix-patches@gnu.org Resent-Date: Sun, 06 Apr 2025 21:53:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 77585 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 77585@debbugs.gnu.org Cc: Arun Isaac , Maxim Cournoyer , Arun Isaac , Ludovic =?utf-8?q?Court=C3=A8s?= , Maxim Cournoyer X-Debbugs-Original-Xcc: Arun Isaac , Ludovic =?utf-8?q?Court=C3=A8s?= , Maxim Cournoyer Received: via spool by 77585-submit@debbugs.gnu.org id=B77585.174397637623211 (code B ref 77585); Sun, 06 Apr 2025 21:53:01 +0000 Received: (at 77585) by debbugs.gnu.org; 6 Apr 2025 21:52:56 +0000 Received: from localhost ([127.0.0.1]:49973 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1u1XvD-00062H-7q for submit@debbugs.gnu.org; Sun, 06 Apr 2025 17:52:55 -0400 Received: from mugam.systemreboot.net ([139.59.75.54]:40168) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1u1Xv8-00061h-QV for 77585@debbugs.gnu.org; Sun, 06 Apr 2025 17:52:53 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=systemreboot.net; s=default; t=1743976362; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0eqCNLPPg740yMkUhyBqWUKBAqcQZ52HZOekBkj2HwM=; b=aBSWCDWepGbRf73CsvFohLgcImIdzyaB3lAGU1uj+c3BtAiwa0Ber2O4Sjnsze90wO6Ugf +zC/CX07eZVWLchhtFgg/EzlDE2fXlCahzaZGoJvsHRTFLjYM6ZPJZKtOg6jUP0dwoy7Im aBaWOXPSzW44iNBaxS9xOfycI3mOBShnFIF3rO/hdbn4pmqWUmIvKEdftyT9S+iVn/3EeP Phc+PLaIZKIfj/kEdqNHjs6GdZz768TBty2QL0Vb9ohZQlJIOr6YLwuia0NsgWPMx9Ow4Q 7R+ZDl/6iAPRaEAYpoHL6vM3LdOea0v6C7UkXuToBRjs3q7XcrDJcIx+s/VXLQ== Received: from localhost.localdomain ( [192.168.2.1]) by mugam.systemreboot.net (OpenSMTPD) with ESMTPSA id 8139baf1 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Sun, 6 Apr 2025 21:52:42 +0000 (UTC) From: Arun Isaac Date: Sun, 6 Apr 2025 22:52:30 +0100 Message-ID: X-Mailer: git-send-email 2.49.0 MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches * gnu/services/web.scm ()[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 Reviewed-by: Maxim Cournoyer --- doc/guix.texi | 11 +++++++++ gnu/services/web.scm | 58 ++++++++++++++++++++++++++++++++------------ 2 files changed, 54 insertions(+), 15 deletions(-) base-commit: ada14197fb465c1c90efbc450308c14f077ff167 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 ;;; Copyright © 2023 Miguel Ángel Moreno ;;; Copyright © 2024 Leo Nikkilä +;;; Copyright © 2025 Maxim Cournoyer ;;; ;;; 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 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 @@ -2118,6 +2128,24 @@ (define mumi-config-file packages))) <>)))))) +(define (mumi-rsync-and-index config) + (match-record config + (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" "