From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:470:142:3::10]:43708) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iXQJ4-0000MI-Vf for guix-patches@gnu.org; Wed, 20 Nov 2019 08:46:08 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iXQJ3-0007ZO-Pr for guix-patches@gnu.org; Wed, 20 Nov 2019 08:46:06 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:40342) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iXQJ3-0007ZC-Ij for guix-patches@gnu.org; Wed, 20 Nov 2019 08:46:05 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1iXQJ1-0007H2-Tn for guix-patches@gnu.org; Wed, 20 Nov 2019 08:46:05 -0500 Subject: [bug#38301] [PATCH 4/4] pack: Allow multiple '--manifest' options. Resent-Message-ID: From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Date: Wed, 20 Nov 2019 14:44:37 +0100 Message-Id: <20191120134437.30881-4-ludo@gnu.org> In-Reply-To: <20191120134437.30881-1-ludo@gnu.org> References: <20191120134437.30881-1-ludo@gnu.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: 38301@debbugs.gnu.org Cc: Konrad Hinsen , Pierre Neidhardt , Ludovic =?UTF-8?Q?Court=C3=A8s?= * 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