summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2020-03-03 10:34:35 +0100
committerLudovic Courtès <ludo@gnu.org>2020-03-05 16:33:37 +0100
commit5a675b2c67825e581cd8193f643f66c4cb1ea1e4 (patch)
tree8858acbbd4e0be08257fdd16803ad9010eaa202f
parent3046e73b4c773a43ffa9ea583c0b469aaa8c5256 (diff)
downloadguix-5a675b2c67825e581cd8193f643f66c4cb1ea1e4.tar.gz
guix build: Allow non-package objects in manifest.
* guix/scripts/build.scm (options->things-to-build)[manifest->packages]:
Remove.
Inline map of 'manifest-entry-item'.
* tests/guix-build.sh: Add test for "guix build -m" with non-package object.
-rw-r--r--guix/scripts/build.scm14
-rw-r--r--tests/guix-build.sh13
2 files changed, 16 insertions, 11 deletions
diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm
index eedf6bf6a8..5c690cb99d 100644
--- a/guix/scripts/build.scm
+++ b/guix/scripts/build.scm
@@ -812,14 +812,6 @@ build---packages, gexps, derivations, and so on."
       (for-each validate-type lst)
       lst))
 
-  ;; Note: Taken from (guix scripts refresh).
-  (define (manifest->packages manifest)
-    "Return the list of packages in MANIFEST."
-    (filter-map (lambda (entry)
-                  (let ((item (manifest-entry-item entry)))
-                    (if (package? item) item #f)))
-                (manifest-entries manifest)))
-
   (append-map (match-lambda
                 (('argument . (? string? spec))
                  (cond ((derivation-path? spec)
@@ -844,8 +836,10 @@ build---packages, gexps, derivations, and so on."
                 (('file . file)
                  (ensure-list (load* file (make-user-module '()))))
                 (('manifest . manifest)
-                 (manifest->packages
-                  (load* manifest (make-user-module '((guix profiles) (gnu))))))
+                 (map manifest-entry-item
+                      (manifest-entries
+                       (load* manifest
+                              (make-user-module '((guix profiles) (gnu)))))))
                 (('expression . str)
                  (ensure-list (read/eval str)))
                 (('argument . (? derivation? drv))
diff --git a/tests/guix-build.sh b/tests/guix-build.sh
index c1df6db3a4..1a997de487 100644
--- a/tests/guix-build.sh
+++ b/tests/guix-build.sh
@@ -1,5 +1,5 @@
 # GNU Guix --- Functional package management for GNU
-# Copyright © 2012, 2013, 2014, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2012, 2013, 2014, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 # Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
 #
 # This file is part of GNU Guix.
@@ -317,6 +317,17 @@ EOF
 test `guix build -d --manifest="$module_dir/manifest.scm" \
       | grep -e '-hello-' -e '-guix-' \
       | wc -l` -eq 2
+
+# Building from a manifest that contains a non-package object.
+cat > "$module_dir/manifest.scm"<<EOF
+(manifest
+  (list (manifest-entry (name "foo") (version "0")
+			(item (computed-file "computed-thingie"
+					     #~(mkdir (ungexp output)))))))
+EOF
+guix build -d -m "$module_dir/manifest.scm" \
+    | grep 'computed-thingie\.drv$'
+
 rm "$module_dir"/*.scm
 
 # Using 'GUIX_BUILD_OPTIONS'.