From unknown Sat Jun 21 10:31:08 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#38301 <38301@debbugs.gnu.org> To: bug#38301 <38301@debbugs.gnu.org> Subject: Status: [PATCH 0/4] Allow for multiple '--manifest' options Reply-To: bug#38301 <38301@debbugs.gnu.org> Date: Sat, 21 Jun 2025 17:31:08 +0000 retitle 38301 [PATCH 0/4] Allow for multiple '--manifest' options reassign 38301 guix-patches submitter 38301 Ludovic Court=C3=A8s severity 38301 normal tag 38301 patch thanks From debbugs-submit-bounces@debbugs.gnu.org Wed Nov 20 08:42:41 2019 Received: (at submit) by debbugs.gnu.org; 20 Nov 2019 13:42:41 +0000 Received: from localhost ([127.0.0.1]:49146 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iXQFk-00079z-Tp for submit@debbugs.gnu.org; Wed, 20 Nov 2019 08:42:41 -0500 Received: from lists.gnu.org ([209.51.188.17]:34480) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iXQFX-00079g-5P for submit@debbugs.gnu.org; Wed, 20 Nov 2019 08:42:40 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:42890) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iXQFW-0007HZ-2z for guix-patches@gnu.org; Wed, 20 Nov 2019 08:42:26 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=5.0 tests=ALL_TRUSTED,BAYES_00, URIBL_BLOCKED autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:470:142:3::e]:40433) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iXQFU-00050F-Pv; Wed, 20 Nov 2019 08:42:24 -0500 Received: from wifi-eduroam-20-234.siege.inria.fr ([128.93.20.234]:51564 helo=gnu.org) by fencepost.gnu.org with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iXQFU-00064g-9R; Wed, 20 Nov 2019 08:42:24 -0500 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= To: guix-patches@gnu.org Subject: [PATCH 0/4] Allow for multiple '--manifest' options Date: Wed, 20 Nov 2019 14:42:13 +0100 Message-Id: <20191120134213.30753-1-ludo@gnu.org> X-Mailer: git-send-email 2.24.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: submit Cc: Konrad Hinsen , Pierre Neidhardt , =?UTF-8?q?Ludovic=20Court=C3=A8s?= X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Hello Guix! As discussed on guix-devel, this patch series ensures that one can pass multiple ‘--manifest’ options to ‘guix package’, ‘guix pack’, and ‘guix environment’ (which already supported it actually!). Feedback welcome! Ludo’. Ludovic Courtès (4): environment: Document that '--manifest' can be repeated. profiles: Add 'concatenate-manifests'. package: Allow multiple '--manifest' options. pack: Allow multiple '--manifest' options. doc/guix.texi | 9 ++++--- guix/profiles.scm | 5 ++++ guix/scripts/pack.scm | 17 +++++++++---- guix/scripts/package.scm | 50 ++++++++++++++++++++------------------- tests/guix-environment.sh | 23 ++++++++++++++++++ tests/guix-pack.sh | 11 +++++++++ tests/guix-package.sh | 13 ++++++++++ tests/profiles.scm | 5 ++++ 8 files changed, 101 insertions(+), 32 deletions(-) -- 2.24.0 From debbugs-submit-bounces@debbugs.gnu.org Wed Nov 20 08:45:13 2019 Received: (at 38301) by debbugs.gnu.org; 20 Nov 2019 13:45:13 +0000 Received: from localhost ([127.0.0.1]:49154 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iXQID-0007Ez-CV for submit@debbugs.gnu.org; Wed, 20 Nov 2019 08:45:13 -0500 Received: from eggs.gnu.org ([209.51.188.92]:34367) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iXQI3-0007Di-Jh for 38301@debbugs.gnu.org; Wed, 20 Nov 2019 08:45:03 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:40446) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iXQHy-0006cA-4h; Wed, 20 Nov 2019 08:44:58 -0500 Received: from wifi-eduroam-20-234.siege.inria.fr ([128.93.20.234]:51574 helo=gnu.org) by fencepost.gnu.org with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iXQHx-0006Bu-Og; Wed, 20 Nov 2019 08:44:57 -0500 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= To: 38301@debbugs.gnu.org Subject: [PATCH 1/4] environment: Document that '--manifest' can be repeated. Date: Wed, 20 Nov 2019 14:44:34 +0100 Message-Id: <20191120134437.30881-1-ludo@gnu.org> X-Mailer: git-send-email 2.24.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 38301 Cc: Konrad Hinsen , Pierre Neidhardt , =?UTF-8?q?Ludovic=20Court=C3=A8s?= X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) * tests/guix-environment.sh: Test 'guix environment' with two '-m' options. * doc/guix.texi (Invoking guix environment): Explain that '-m' can be passed multiple times. --- doc/guix.texi | 3 ++- tests/guix-environment.sh | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/doc/guix.texi b/doc/guix.texi index a7ac6ff464..443d5bd71f 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4802,7 +4802,8 @@ As an example, @var{file} might contain a definition like this @item --manifest=@var{file} @itemx -m @var{file} Create an environment for the packages contained in the manifest object -returned by the Scheme code in @var{file}. +returned by the Scheme code in @var{file}. This option can be repeated +several times, in which case the manifests are concatenated. This is similar to the same-named option in @command{guix package} (@pxref{profile-manifest, @option{--manifest}}) and uses the same diff --git a/tests/guix-environment.sh b/tests/guix-environment.sh index fb1c1a022d..2faf38df06 100644 --- a/tests/guix-environment.sh +++ b/tests/guix-environment.sh @@ -84,6 +84,29 @@ echo "(use-modules (guix profiles) (gnu packages bootstrap)) guix environment --bootstrap --manifest=$tmpdir/manifest.scm --pure \ -- "$SHELL" -c 'test -f "$GUIX_ENVIRONMENT/bin/guile"' +# Make sure '--manifest' can be specified multiple times. +cat > "$tmpdir/manifest2.scm" <manifest + (list (package + (inherit %bootstrap-guile) + (name "eliug") + (build-system trivial-build-system) + (arguments + (quasiquote + (#:guile ,%bootstrap-guile + #:builder + (begin + (mkdir %output) + (mkdir (string-append %output "/eliug"))))))))) +EOF +guix environment --bootstrap -m "$tmpdir/manifest.scm" \ + -m "$tmpdir/manifest2.scm" --pure \ + -- "$SHELL" -c 'test -f "$GUIX_ENVIRONMENT/bin/guile" && test -d "$GUIX_ENVIRONMENT/eliug"' + # Make sure '-r' works as expected. rm -f "$gcroot" expected="`guix environment --bootstrap --ad-hoc guile-bootstrap \ -- 2.24.0 From debbugs-submit-bounces@debbugs.gnu.org Wed Nov 20 08:45:14 2019 Received: (at 38301) by debbugs.gnu.org; 20 Nov 2019 13:45:14 +0000 Received: from localhost ([127.0.0.1]:49156 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iXQID-0007F1-Ny for submit@debbugs.gnu.org; Wed, 20 Nov 2019 08:45:13 -0500 Received: from eggs.gnu.org ([209.51.188.92]:34372) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iXQI4-0007Dk-NV for 38301@debbugs.gnu.org; Wed, 20 Nov 2019 08:45:06 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:40447) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iXQHz-0006cn-Ic; Wed, 20 Nov 2019 08:44:59 -0500 Received: from wifi-eduroam-20-234.siege.inria.fr ([128.93.20.234]:51574 helo=gnu.org) by fencepost.gnu.org with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iXQHy-0006Bu-NN; Wed, 20 Nov 2019 08:44:59 -0500 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= To: 38301@debbugs.gnu.org Subject: [PATCH 2/4] profiles: Add 'concatenate-manifests'. Date: Wed, 20 Nov 2019 14:44:35 +0100 Message-Id: <20191120134437.30881-2-ludo@gnu.org> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191120134437.30881-1-ludo@gnu.org> References: <20191120134437.30881-1-ludo@gnu.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 38301 Cc: Konrad Hinsen , Pierre Neidhardt , =?UTF-8?q?Ludovic=20Court=C3=A8s?= X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) * guix/profiles.scm (concatenate-manifests): New procedure. * tests/profiles.scm ("concatenate-manifests"): New test. --- guix/profiles.scm | 5 +++++ tests/profiles.scm | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/guix/profiles.scm b/guix/profiles.scm index cd3b21e390..f5e5cc33d6 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -92,6 +92,7 @@ manifest-pattern-version manifest-pattern-output + concatenate-manifests manifest-remove manifest-add manifest-lookup @@ -515,6 +516,10 @@ procedure is here for backward-compatibility and will eventually vanish." "Return the packages listed in MANIFEST." (sexp->manifest (read port))) +(define (concatenate-manifests lst) + "Concatenate the manifests listed in LST and return the resulting manifest." + (manifest (append-map manifest-entries lst))) + (define (entry-predicate pattern) "Return a procedure that returns #t when passed a manifest entry that matches NAME/OUTPUT/VERSION. OUTPUT and VERSION may be #f, in which case they diff --git a/tests/profiles.scm b/tests/profiles.scm index a4e28672b5..21c912a532 100644 --- a/tests/profiles.scm +++ b/tests/profiles.scm @@ -113,6 +113,11 @@ (manifest-matching-entries m (list p)) #f))) +(test-equal "concatenate-manifests" + (manifest (list guile-2.0.9 glibc)) + (concatenate-manifests (list (manifest (list guile-2.0.9)) + (manifest (list glibc))))) + (test-assert "manifest-remove" (let* ((m0 (manifest (list guile-2.0.9 guile-2.0.9:debug))) (m1 (manifest-remove m0 -- 2.24.0 From debbugs-submit-bounces@debbugs.gnu.org Wed Nov 20 08:45:14 2019 Received: (at 38301) by debbugs.gnu.org; 20 Nov 2019 13:45:14 +0000 Received: from localhost ([127.0.0.1]:49158 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iXQIE-0007F8-4F for submit@debbugs.gnu.org; Wed, 20 Nov 2019 08:45:14 -0500 Received: from eggs.gnu.org ([209.51.188.92]:34378) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iXQI5-0007Dn-Ru for 38301@debbugs.gnu.org; Wed, 20 Nov 2019 08:45:07 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:40449) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iXQI0-0006dA-M2; Wed, 20 Nov 2019 08:45:00 -0500 Received: from wifi-eduroam-20-234.siege.inria.fr ([128.93.20.234]:51574 helo=gnu.org) by fencepost.gnu.org with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iXQI0-0006Bu-49; Wed, 20 Nov 2019 08:45:00 -0500 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= To: 38301@debbugs.gnu.org Subject: [PATCH 3/4] package: Allow multiple '--manifest' options. Date: Wed, 20 Nov 2019 14:44:36 +0100 Message-Id: <20191120134437.30881-3-ludo@gnu.org> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191120134437.30881-1-ludo@gnu.org> References: <20191120134437.30881-1-ludo@gnu.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 38301 Cc: Konrad Hinsen , Pierre Neidhardt , =?UTF-8?q?Ludovic=20Court=C3=A8s?= X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) * guix/scripts/package.scm (manifest-action): Remove. (%actions): Remove it. (load-manifest): New procedure. (process-actions): Handle 'manifest' options. Define 'files' from 'manifest' options. Define 'manifest' based on FILES. Define 'trans' to represent the final transaction. * tests/guix-package.sh: Test it. * doc/guix.texi (Invoking guix package): Mention --- doc/guix.texi | 3 ++- guix/scripts/package.scm | 50 +++++++++++++++++++++------------------- tests/guix-package.sh | 13 +++++++++++ 3 files changed, 41 insertions(+), 25 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 443d5bd71f..9de1dbd6d5 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -2830,7 +2830,8 @@ $ guix package --upgrade . --do-not-upgrade emacs @cindex profile declaration @cindex profile manifest Create a new generation of the profile from the manifest object -returned by the Scheme code in @var{file}. +returned by the Scheme code in @var{file}. This option can be repeated +several times, in which case the manifests are concatenated. This allows you to @emph{declare} the profile's contents rather than constructing it through a sequence of @code{--install} and similar diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index bcd03a1df9..eb578f7642 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -832,32 +832,17 @@ processed, #f otherwise." (unless dry-run? (delete-matching-generations store profile pattern))) -(define* (manifest-action store profile file opts - #:key dry-run?) - "Change PROFILE to contain the packages specified in FILE." - (let* ((user-module (make-user-module '((guix profiles) (gnu)))) - (manifest (load* file user-module)) - (bootstrap? (assoc-ref opts 'bootstrap?)) - (substitutes? (assoc-ref opts 'substitutes?)) - (allow-collisions? (assoc-ref opts 'allow-collisions?))) - (if dry-run? - (format #t (G_ "would install new manifest from '~a' with ~d entries~%") - file (length (manifest-entries manifest))) - (format #t (G_ "installing new manifest from '~a' with ~d entries~%") - file (length (manifest-entries manifest)))) - (build-and-use-profile store profile manifest - #:allow-collisions? allow-collisions? - #:bootstrap? bootstrap? - #:use-substitutes? substitutes? - #:dry-run? dry-run?))) +(define (load-manifest file) + "Load the user-profile manifest (Scheme code) from FILE and return it." + (let ((user-module (make-user-module '((guix profiles) (gnu))))) + (load* file user-module))) (define %actions ;; List of actions that may be processed. The car of each pair is the ;; action's symbol in the option list; the cdr is the action's procedure. `((roll-back? . ,roll-back-action) (switch-generation . ,switch-generation-action) - (delete-generations . ,delete-generations-action) - (manifest . ,manifest-action))) + (delete-generations . ,delete-generations-action))) (define (process-actions store opts) "Process any install/remove/upgrade action from OPTS." @@ -896,7 +881,13 @@ processed, #f otherwise." opts) ;; Then, process normal package removal/installation/upgrade. - (let* ((manifest (profile-manifest profile)) + (let* ((files (filter-map (match-lambda + (('manifest . file) file) + (_ #f)) + opts)) + (manifest (match files + (() (profile-manifest profile)) + (_ (concatenate-manifests (map load-manifest files))))) (step1 (options->removable opts manifest (manifest-transaction))) (step2 (options->installable opts manifest step1)) @@ -904,12 +895,23 @@ processed, #f otherwise." (inherit step2) (install (map transform-entry (manifest-transaction-install step2))))) - (new (manifest-perform-transaction manifest step3))) + (new (manifest-perform-transaction manifest step3)) + (trans (if (null? files) + step3 + (fold manifest-transaction-install-entry + step3 + (manifest-entries manifest))))) (warn-about-old-distro) - (unless (manifest-transaction-null? step3) - (show-manifest-transaction store manifest step3 + (unless (manifest-transaction-null? trans) + ;; When '--manifest' is used, display information about TRANS as if we + ;; were starting from an empty profile. + (show-manifest-transaction store + (if (null? files) + manifest + (make-manifest '())) + trans #:dry-run? dry-run?) (build-and-use-profile store profile new #:allow-collisions? allow-collisions? diff --git a/tests/guix-package.sh b/tests/guix-package.sh index 7ad0699380..6d081d58be 100644 --- a/tests/guix-package.sh +++ b/tests/guix-package.sh @@ -394,6 +394,19 @@ guix package -I | grep guile test `guix package -I | wc -l` -eq 1 guix package --rollback --bootstrap +# Applying two manifests. +cat > "$module_dir/manifest2.scm"<manifest (list p)) +EOF +guix package --bootstrap \ + -m "$module_dir/manifest.scm" -m "$module_dir/manifest2.scm" +guix package -I | grep guile +guix package -I | grep eliug +test `guix package -I | wc -l` -eq 2 +guix package --rollback --bootstrap + # Applying a manifest file with inferior packages. cat > "$module_dir/manifest.scm"<) id 1iXQIE-0007FG-K2 for submit@debbugs.gnu.org; Wed, 20 Nov 2019 08:45:14 -0500 Received: from eggs.gnu.org ([209.51.188.92]:34384) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iXQI7-0007EN-19 for 38301@debbugs.gnu.org; Wed, 20 Nov 2019 08:45:09 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:40450) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iXQI1-0006eB-Rq; Wed, 20 Nov 2019 08:45:01 -0500 Received: from wifi-eduroam-20-234.siege.inria.fr ([128.93.20.234]:51574 helo=gnu.org) by fencepost.gnu.org with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iXQI1-0006Bu-9R; Wed, 20 Nov 2019 08:45:01 -0500 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= To: 38301@debbugs.gnu.org Subject: [PATCH 4/4] pack: Allow multiple '--manifest' options. Date: Wed, 20 Nov 2019 14:44:37 +0100 Message-Id: <20191120134437.30881-4-ludo@gnu.org> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191120134437.30881-1-ludo@gnu.org> References: <20191120134437.30881-1-ludo@gnu.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 38301 Cc: Konrad Hinsen , Pierre Neidhardt , =?UTF-8?q?Ludovic=20Court=C3=A8s?= X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) * guix/scripts/pack.scm (guix-pack): Collect 'manifest' options, and concatenate the resulting manifests. * tests/guix-pack.sh: Test it. * doc/guix.texi (Invoking guix pack): Document it. --- doc/guix.texi | 3 ++- guix/scripts/pack.scm | 17 ++++++++++++----- tests/guix-pack.sh | 11 +++++++++++ 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 9de1dbd6d5..e702bc3055 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -5178,7 +5178,8 @@ build} (@pxref{Additional Build Options, @code{--expression} in @item --manifest=@var{file} @itemx -m @var{file} Use the packages contained in the manifest object returned by the Scheme -code in @var{file}. +code in @var{file}. This option can be repeated several times, in which +case the manifests are concatenated. This has a similar purpose as the same-named option in @command{guix package} (@pxref{profile-manifest, @option{--manifest}}) and uses the diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm index 89b3e389fc..c8a52374bd 100644 --- a/guix/scripts/pack.scm +++ b/guix/scripts/pack.scm @@ -965,7 +965,10 @@ Create a bundle of PACKAGE.\n")) (list (transform store package) "out"))) (reverse (filter-map maybe-package-argument opts)))) - (manifest-file (assoc-ref opts 'manifest))) + (manifests (filter-map (match-lambda + (('manifest . file) file) + (_ #f)) + opts))) (define properties (if (assoc-ref opts 'save-provenance?) (lambda (package) @@ -979,11 +982,15 @@ Create a bundle of PACKAGE.\n")) (const '()))) (cond - ((and manifest-file (not (null? packages))) + ((and (not (null? manifests)) (not (null? packages))) (leave (G_ "both a manifest and a package list were given~%"))) - (manifest-file - (let ((user-module (make-user-module '((guix profiles) (gnu))))) - (load* manifest-file user-module))) + ((not (null? manifests)) + (concatenate-manifests + (map (lambda (file) + (let ((user-module (make-user-module + '((guix profiles) (gnu))))) + (load* file user-module))) + manifests))) (else (manifest (map (match-lambda diff --git a/tests/guix-pack.sh b/tests/guix-pack.sh index cf4e4ca4f9..7a0f3400c3 100644 --- a/tests/guix-pack.sh +++ b/tests/guix-pack.sh @@ -109,3 +109,14 @@ drv1="`guix pack -n guile 2>&1 | grep pack.*\.drv`" drv2="`guix pack -n --with-source=guile=$test_directory guile 2>&1 | grep pack.*\.drv`" test -n "$drv1" test "$drv1" != "$drv2" + +# Try '--manifest' options. +cat > "$test_directory/manifest1.scm" <manifest '("guile")) +EOF +cat > "$test_directory/manifest2.scm" <manifest '("emacs")) +EOF +drv="`guix pack -nd -m "$test_directory/manifest1.scm" -m "$test_directory/manifest2.scm"`" +guix gc -R "$drv" | grep `guix build guile -nd` +guix gc -R "$drv" | grep `guix build emacs -nd` -- 2.24.0 From debbugs-submit-bounces@debbugs.gnu.org Wed Nov 20 11:23:17 2019 Received: (at 38301) by debbugs.gnu.org; 20 Nov 2019 16:23:17 +0000 Received: from localhost ([127.0.0.1]:50776 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iXSlA-0002x5-RS for submit@debbugs.gnu.org; Wed, 20 Nov 2019 11:23:17 -0500 Received: from mout01.posteo.de ([185.67.36.65]:57675) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iXSl8-0002ws-Kt for 38301@debbugs.gnu.org; Wed, 20 Nov 2019 11:23:15 -0500 Received: from submission (posteo.de [89.146.220.130]) by mout01.posteo.de (Postfix) with ESMTPS id C5396160060 for <38301@debbugs.gnu.org>; Wed, 20 Nov 2019 17:23:08 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1574266988; bh=E2TS3le0R11zPfSL5lCXqAfZANbNO4H0br9kySnMg0Q=; h=Date:From:To:Cc:Subject:From; b=BtPS8xTW05axKgcywxQL6+9bQh6H6aYBnxw4LIpTh9nMk5aGV32OKHSx/K8+3JA+s hwy4h/kk2P3eRym6Hoia1kzw+9EU36Q/gtHJgHBUbvAw6dJW9Qe7d/hBUyizIdH5Su HERXjPUbD2XZg/K0KcQpElkXhjkCANWTXNlniNXV5f10VEjCbUhneVWabvS9Z9XW4F SCE2bjVncKCdn0Gz5fnsE9vkv8vhwMQBuu7uRbIhvcreCsir5WX7TfPFVi9tp3shaX bDXOLOEIU2XbewCNQBOnitmnDUImQJ8MniIdnyEeivepxmiZXXcUY24cP1kkWEljVb uuPGjj3Q05Hcw== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 47J7K740jBz6tmD; Wed, 20 Nov 2019 17:23:07 +0100 (CET) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable Date: Wed, 20 Nov 2019 17:23:07 +0100 From: brettg@posteo.net To: =?UTF-8?Q?Ludovic_Court=C3=A8s?= Subject: Re: [bug#38301] [PATCH 4/4] pack: Allow multiple '--manifest' options. In-Reply-To: <20191120134437.30881-4-ludo@gnu.org> References: <20191120134437.30881-1-ludo@gnu.org> <20191120134437.30881-4-ludo@gnu.org> Message-ID: X-Sender: brettg@posteo.net User-Agent: Posteo Webmail X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 38301 Cc: Guix-patches , Konrad Hinsen , Pierre Neidhardt , 38301@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) On 20.11.2019 14:44, Ludovic Court=C3=A8s wrote: > * guix/scripts/pack.scm (guix-pack): Collect 'manifest' options, and > concatenate the resulting manifests. > * tests/guix-pack.sh: Test it. > * doc/guix.texi (Invoking guix pack): Document it. > --- > doc/guix.texi | 3 ++- > guix/scripts/pack.scm | 17 ++++++++++++----- > tests/guix-pack.sh | 11 +++++++++++ > 3 files changed, 25 insertions(+), 6 deletions(-) >=20 > diff --git a/doc/guix.texi b/doc/guix.texi > index 9de1dbd6d5..e702bc3055 100644 > --- a/doc/guix.texi > +++ b/doc/guix.texi > @@ -5178,7 +5178,8 @@ build} (@pxref{Additional Build Options, > @code{--expression} in > @item --manifest=3D@var{file} > @itemx -m @var{file} > Use the packages contained in the manifest object returned by the=20 > Scheme > -code in @var{file}. > +code in @var{file}. This option can be repeated several times, in=20 > which > +case the manifests are concatenated. >=20 > This has a similar purpose as the same-named option in @command{guix > package} (@pxref{profile-manifest, @option{--manifest}}) and uses the > diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm > index 89b3e389fc..c8a52374bd 100644 > --- a/guix/scripts/pack.scm > +++ b/guix/scripts/pack.scm > @@ -965,7 +965,10 @@ Create a bundle of PACKAGE.\n")) > (list (transform store package)=20 > "out"))) > (reverse > (filter-map maybe-package-argument=20 > opts)))) > - (manifest-file (assoc-ref opts 'manifest))) > + (manifests (filter-map (match-lambda > + (('manifest . file) file) > + (_ #f)) > + opts))) > (define properties > (if (assoc-ref opts 'save-provenance?) > (lambda (package) > @@ -979,11 +982,15 @@ Create a bundle of PACKAGE.\n")) > (const '()))) >=20 > (cond > - ((and manifest-file (not (null? packages))) > + ((and (not (null? manifests)) (not (null? packages))) > (leave (G_ "both a manifest and a package list were=20 > given~%"))) > - (manifest-file > - (let ((user-module (make-user-module '((guix profiles)=20 > (gnu))))) > - (load* manifest-file user-module))) > + ((not (null? manifests)) > + (concatenate-manifests > + (map (lambda (file) > + (let ((user-module (make-user-module > + '((guix profiles) (gnu))))) > + (load* file user-module))) > + manifests))) > (else > (manifest > (map (match-lambda > diff --git a/tests/guix-pack.sh b/tests/guix-pack.sh > index cf4e4ca4f9..7a0f3400c3 100644 > --- a/tests/guix-pack.sh > +++ b/tests/guix-pack.sh > @@ -109,3 +109,14 @@ drv1=3D"`guix pack -n guile 2>&1 | grep=20 > pack.*\.drv`" > drv2=3D"`guix pack -n --with-source=3Dguile=3D$test_directory guile 2>&1= | > grep pack.*\.drv`" > test -n "$drv1" > test "$drv1" !=3D "$drv2" > + > +# Try '--manifest' options. > +cat > "$test_directory/manifest1.scm" < +(specifications->manifest '("guile")) > +EOF > +cat > "$test_directory/manifest2.scm" < +(specifications->manifest '("emacs")) > +EOF > +drv=3D"`guix pack -nd -m "$test_directory/manifest1.scm" -m > "$test_directory/manifest2.scm"`" > +guix gc -R "$drv" | grep `guix build guile -nd` > +guix gc -R "$drv" | grep `guix build emacs -nd` At last! This feature is going to be available. These patches LGTM! Brett From debbugs-submit-bounces@debbugs.gnu.org Wed Nov 20 11:33:45 2019 Received: (at 38301) by debbugs.gnu.org; 20 Nov 2019 16:33:45 +0000 Received: from localhost ([127.0.0.1]:50791 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iXSvG-0003DR-Oe for submit@debbugs.gnu.org; Wed, 20 Nov 2019 11:33:45 -0500 Received: from wout5-smtp.messagingengine.com ([64.147.123.21]:39751) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iXSvA-0003D6-Pc for 38301@debbugs.gnu.org; Wed, 20 Nov 2019 11:33:37 -0500 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.west.internal (Postfix) with ESMTP id EB78663B; Wed, 20 Nov 2019 11:33:30 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute7.internal (MEProxy); Wed, 20 Nov 2019 11:33:31 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastmail.net; h= from:to:to:subject:in-reply-to:references:date:message-id :mime-version:content-type:content-transfer-encoding; s=fm2; bh= Y9/qEJiOSRJx13XG+08WV1Yi9KvpwWrkkwMswahDu3o=; b=J2pRo+Fh4yuxqc/3 E4Y+74/0PGVBd0iysnjWAs1+0GqYLEgTsfA9Qjm23hpQDq/r+8zIKrGxs8WQzARd dxqMK5DcK7XsS2OKk7qf3scFH62knb63yqGew/AeWEalEN8SWoReiLyRRENjPYzd 9460nNtFNed0MJY04QJIPcOGDASmfOTPcJoeI1SESqbnfAFimm3zHKzBF/BE7HPJ uFFMaXX2JWT94nsxDdH88wRgT7hBQJb6zariUdeXIJQ8zH+ikc7sUYmOL7FCOMmc RWCqF1oJUoauIexhw4XWs6uDcTsxQBGmIOssCVAMdRyRU8NrE3O3g6AwKL86W6hR jkoIXw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm1; bh=Y9/qEJiOSRJx13XG+08WV1Yi9KvpwWrkkwMswahDu 3o=; b=gnVK27QRFN7+r2rW84joOMfSfTMNcD2cvGxILAsYG6G3FhMuAySxbF7sQ jESETvrIW5uRBQJ+DmTNcfo8o/S+vP6HUgamGRkGZ2DqGK+DBGg41+zA7DHprH8k nAJnz/kzEyhdoE47UMHRzQVol8e9QEe1PvZlAle0VMu4NuRS1Kl7qUQ/t4I5WBtM FMYDNwgIHcN8ziR1EF/aQS+juj6/mbCXx1PAn3XSjvm2+VkHdEt7yDqkLq6lIpF8 WcjYiaqQ3pDIVmFW/CXTjVNdgK2jYS1WsArqIxiE0P8Xu/lgXx3B4GQPwTuZ/f+r RgkKIRf/Dydo26ysrC0yS3P7CZiHg== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedufedrudehtddgkeekucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucgotffhvedqqdfjughrqdfuuhhsphgvtghtqdhloh ifucdlhedmnecujfgurhephffvvffujghffffkgggtgfesthhqredttddtjeenucfhrhho mhepmfhonhhrrgguucfjihhnshgvnhcuoehkohhnrhgrugdrhhhinhhsvghnsehfrghsth hmrghilhdrnhgvtheqnecukfhppeelvddrudeiledrjedruddtudenucfrrghrrghmpehm rghilhhfrhhomhepkhhonhhrrggurdhhihhnshgvnhesfhgrshhtmhgrihhlrdhnvghtne cuvehluhhsthgvrhfuihiivgeptd X-ME-Proxy: Received: from khs-macbook.home (lfbn-1-4320-101.w92-169.abo.wanadoo.fr [92.169.7.101]) by mail.messagingengine.com (Postfix) with ESMTPA id DB642306005B; Wed, 20 Nov 2019 11:33:29 -0500 (EST) From: Konrad Hinsen To: 38301@debbugs.gnu.org To: Ludovic =?utf-8?Q?Court=C3=A8s?= Subject: Re: [PATCH 0/4] Allow for multiple '--manifest' options In-Reply-To: <20191120134213.30753-1-ludo@gnu.org> References: <20191120134213.30753-1-ludo@gnu.org> Date: Wed, 20 Nov 2019 17:33:28 +0100 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 38301 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) Hi Ludo, > As discussed on guix-devel, this patch series ensures that one can > pass multiple =E2=80=98--manifest=E2=80=99 options to =E2=80=98guix packa= ge=E2=80=99, =E2=80=98guix pack=E2=80=99, > and =E2=80=98guix environment=E2=80=99 (which already supported it actual= ly!). > > Feedback welcome! Looks good. And very nice to have! Thanks, Konrad. From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 22 09:16:02 2019 Received: (at 38301-done) by debbugs.gnu.org; 22 Nov 2019 14:16:03 +0000 Received: from localhost ([127.0.0.1]:54004 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iY9j6-0000HF-LQ for submit@debbugs.gnu.org; Fri, 22 Nov 2019 09:16:02 -0500 Received: from eggs.gnu.org ([209.51.188.92]:52075) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iY9j4-0000H0-91 for 38301-done@debbugs.gnu.org; Fri, 22 Nov 2019 09:15:58 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:37975) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iY9ix-0005BP-FG; Fri, 22 Nov 2019 09:15:51 -0500 Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=59672 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iY9iw-0005o9-Uf; Fri, 22 Nov 2019 09:15:51 -0500 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= To: brettg@posteo.net, Konrad Hinsen Subject: Re: [bug#38301] [PATCH 4/4] pack: Allow multiple '--manifest' options. References: <20191120134437.30881-1-ludo@gnu.org> <20191120134437.30881-4-ludo@gnu.org> Date: Fri, 22 Nov 2019 15:15:48 +0100 In-Reply-To: (brettg@posteo.net's message of "Wed, 20 Nov 2019 17:23:07 +0100") Message-ID: <874kyw80a3.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 38301-done Cc: Pierre Neidhardt , 38301-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Hi, brettg@posteo.net skribis: > At last! This feature is going to be available. > > These patches LGTM! Konrad Hinsen skribis: > Looks good. And very nice to have! Pushed! ca541f9ce6 pack: Allow multiple '--manifest' options. bf9206d8ed package: Allow multiple '--manifest' options. ce30a0eb7e profiles: Add 'concatenate-manifests'. d76df98fa5 environment: Document that '--manifest' can be repeated. Thanks for your feedback, Ludo=E2=80=99. From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 22 09:38:12 2019 Received: (at 38301) by debbugs.gnu.org; 22 Nov 2019 14:38:12 +0000 Received: from localhost ([127.0.0.1]:54031 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iYA4Z-0000mL-WA for submit@debbugs.gnu.org; Fri, 22 Nov 2019 09:38:12 -0500 Received: from mail-qk1-f196.google.com ([209.85.222.196]:36911) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iYA4X-0000m7-5D for 38301@debbugs.gnu.org; Fri, 22 Nov 2019 09:38:10 -0500 Received: by mail-qk1-f196.google.com with SMTP id e187so6468529qkf.4 for <38301@debbugs.gnu.org>; Fri, 22 Nov 2019 06:38:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=Q7UUdVOIBce0Ch3ARVuJtrvFxqPD57Ib2hxwZupqwfI=; b=I9z/MbhjHHVpVqLl19IDC/WQZD/fAKYPOMXxE+g7k779ZOgMoANJSFhfH8KSa3PGe5 F77vidFsC9ptDBnJyFmBHkFXP4OtqvdCYYR0pE+g93Zu8y5TVmtZpDd1RtGE4S+/RddH wuccWVeHnynMsHhSlbu30AaS3KJZXH5+/01tW+50ULot53E2ns32J+oP0d7H5086nnuZ IenI+WymOf91GXP5Ktw7nOYm55h+OYP+jxJGCGWRK26LGI0V0XmVJYaDiuuIfabBwfOx 2iuJvApp1RnHcSVl20AIcoVYOnNFqjzLNdoznLUB0+CTc9/6QGs54oBe5iDrLBP/Xn8r arng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=Q7UUdVOIBce0Ch3ARVuJtrvFxqPD57Ib2hxwZupqwfI=; b=Ite0jWEFIIrZAgEXkFK9kbMygTkLeRZ5CpUxcYTRz6WnE7R5gPv0impmd8PVDfPwvy ltbSHNLgQp1heCzAvC2ZqJ6fi8rgYRoZAD6+/ZfGD2cfHjNMnN6Rs/tz5fW3rfkmXw2I RnV3Tpo2Q7ARLXN7h90TpVxnTKALTKRqZvNow7WyE6OeNN+IVF+1oN9Nl6r8LV9g++4r 8E5a0fiAg6dW4aeYIqiKulxA9A4u2NF8/MmBTTgoy3NYGjffB9Fky/dk7zk5AmOZkpR+ 7rEoOZqpFhzxDfiSr1/PrbI2Rq91N17TKdN2K4dw8CxHrjlMbLKbTjqgwpSW7otOrtV1 +wXg== X-Gm-Message-State: APjAAAVRRDVkLFw038EIxNgRVQb9GrwhDIWakh1pGxpzVNoI/w3Qtwwp A9gxuWMQAwNIGsdhC0UvzozfamNgfXUkYitEQsg= X-Google-Smtp-Source: APXvYqyXvCsqLB597+oybh+7JNWq3Wgkw0Ky23ZOoP9qlbmhVPcauRVHOXrkZzBSA45Dc457irBrMp1d4eiPji6KX44= X-Received: by 2002:a37:4f10:: with SMTP id d16mr13609937qkb.80.1574433483474; Fri, 22 Nov 2019 06:38:03 -0800 (PST) MIME-Version: 1.0 References: <20191120134213.30753-1-ludo@gnu.org> In-Reply-To: From: zimoun Date: Fri, 22 Nov 2019 15:37:52 +0100 Message-ID: Subject: Re: [bug#38301] [PATCH 0/4] Allow for multiple '--manifest' options To: Konrad Hinsen Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 38301 Cc: =?UTF-8?Q?Ludovic_Court=C3=A8s?= , 38301@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hi Ludo, On Wed, 20 Nov 2019 at 17:34, Konrad Hinsen wr= ote: > > Hi Ludo, > > > As discussed on guix-devel, this patch series ensures that one can > > pass multiple =E2=80=98--manifest=E2=80=99 options to =E2=80=98guix pac= kage=E2=80=99, =E2=80=98guix pack=E2=80=99, > > and =E2=80=98guix environment=E2=80=99 (which already supported it actu= ally!). > > > > Feedback welcome! Neat! The test guix-pack fails but because I am trying to use "git worktree" so maybe I am doing something wrong. I am investigating in tests-suite.log. Cheers, simon From unknown Sat Jun 21 10:31:08 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Sat, 21 Dec 2019 12:24:03 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator