summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2019-11-17 23:10:34 +0100
committerLudovic Courtès <ludo@gnu.org>2019-11-17 23:14:54 +0100
commit9c9982dc0c8c38ce3821b154b7e92509c1564317 (patch)
treec1e11b91d1bd5e6f5adb836262c871b618daedd7 /tests
parent16ac74033ae9f01e8be81c4f7f1857e13545bc2f (diff)
downloadpatches-9c9982dc0c8c38ce3821b154b7e92509c1564317.tar
patches-9c9982dc0c8c38ce3821b154b7e92509c1564317.tar.gz
guix build: Handle "guix build /….drv" correctly for non-existent derivations.
This lets the daemon substitute missing derivations, as in the example at <https://bugs.gnu.org/38226>, instead of failing with ENOENT. * guix/scripts/build.scm (options->things-to-build): In the 'derivation-path?' case, don't fail when 'read-derivation-from-file' raises to ENOENT; return the empty list in that case. (guix-build): Add non-existent '.drv' files to ITEMS. Pass ITEMS in addition to DRV to 'build-derivations'. * tests/guix-build.sh: Add test.
Diffstat (limited to 'tests')
-rw-r--r--tests/guix-build.sh7
1 files changed, 7 insertions, 0 deletions
diff --git a/tests/guix-build.sh b/tests/guix-build.sh
index 62cdd5fe14..21b6af4395 100644
--- a/tests/guix-build.sh
+++ b/tests/guix-build.sh
@@ -42,6 +42,13 @@ out="`guix build "$drv"`"
out2="`guix build -e '(@@ (gnu packages bootstrap) %bootstrap-guile)'`"
test "$out" = "$out2"
+# Passing the name of a .drv that doesn't exist. The daemon should try to
+# substitute the .drv. Here we just look for the "cannot build missing
+# derivation" error that indicates that the daemon did try to substitute the
+# .drv.
+guix build "$NIX_STORE_DIR/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-foo.drv" 2>&1 \
+ | grep "missing derivation"
+
# Passing a URI.
GUIX_DAEMON_SOCKET="file://$GUIX_STATE_DIRECTORY/daemon-socket/socket" \
guix build -e '(@@ (gnu packages bootstrap) %bootstrap-guile)'