diff options
author | Ludovic Courtès <ludo@gnu.org> | 2020-03-03 10:34:35 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2020-03-05 16:33:37 +0100 |
commit | 5a675b2c67825e581cd8193f643f66c4cb1ea1e4 (patch) | |
tree | 8858acbbd4e0be08257fdd16803ad9010eaa202f | |
parent | 3046e73b4c773a43ffa9ea583c0b469aaa8c5256 (diff) | |
download | guix-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.scm | 14 | ||||
-rw-r--r-- | tests/guix-build.sh | 13 |
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'. |