From 3780435a0e3166ff898b33b8eb9a057ffa16ce67 Mon Sep 17 00:00:00 2001 From: Will Dietz Date: Wed, 7 Feb 2018 14:57:44 -0600 Subject: [PATCH 1/3] tests: Add (failing) tests for reported --dry-run issues. --- tests/build-dry.sh | 49 ++++++++++++++++++++++++++++++++++++++++++++++ tests/local.mk | 1 + 2 files changed, 50 insertions(+) create mode 100644 tests/build-dry.sh diff --git a/tests/build-dry.sh b/tests/build-dry.sh new file mode 100644 index 000000000..9a2a70d5f --- /dev/null +++ b/tests/build-dry.sh @@ -0,0 +1,49 @@ +source common.sh + +################################################### +# Check that --dry-run isn't confused with read-only mode +# https://github.com/NixOS/nix/issues/1795 + +clearStore +clearCache + +# Ensure this builds successfully first +nix build -f dependencies.nix + +clearStore +clearCache + +# Try --dry-run using old command first +nix-build dependencies.nix --dry-run 2>&1 | grep "will be built" +# Now new command: +nix build -f dependencies.nix --dry-run 2>&1 | grep "will be built" + +clearStore +clearCache + +# Try --dry-run using new command first +nix build -f dependencies.nix --dry-run 2>&1 | grep "will be built" +# Now old command: +nix-build dependencies.nix --dry-run 2>&1 | grep "will be built" + + +################################################### +# Check --dry-run doesn't create links with --dry-run +# https://github.com/NixOS/nix/issues/1849 +clearStore +clearCache + +RESULT=$TEST_ROOT/result-link +rm -f $RESULT + +nix-build dependencies.nix -o $RESULT --dry-run + +[[ ! -h $RESULT ]] || fail "nix-build --dry-run created output link" + +nix build -f dependencies.nix -o $RESULT --dry-run + +[[ ! -h $RESULT ]] || fail "nix build --dry-run created output link" + +nix build -f dependencies.nix -o $RESULT + +[[ -h $RESULT ]] diff --git a/tests/local.mk b/tests/local.mk index e90b9f7da..0035dca2d 100644 --- a/tests/local.mk +++ b/tests/local.mk @@ -13,6 +13,7 @@ nix_tests = \ check-reqs.sh pass-as-file.sh tarball.sh restricted.sh \ placeholders.sh nix-shell.sh \ linux-sandbox.sh \ + build-dry.sh \ build-remote.sh \ nar-access.sh \ structured-attrs.sh \ From 98031b6050000bccef915b99cf3a2ed810a1b35e Mon Sep 17 00:00:00 2001 From: Will Dietz Date: Wed, 7 Feb 2018 14:58:38 -0600 Subject: [PATCH 2/3] nix build: Don't create output links with --dry-run. Fixes #1849. --- src/nix/build.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/nix/build.cc b/src/nix/build.cc index f7c99f12d..093415a0d 100644 --- a/src/nix/build.cc +++ b/src/nix/build.cc @@ -52,6 +52,8 @@ struct CmdBuild : MixDryRun, InstallablesCommand { auto buildables = toBuildables(store, dryRun ? DryRun : Build, installables); + if (dryRun) return; + for (size_t i = 0; i < buildables.size(); ++i) { auto & b(buildables[i]); From c7e0be1bfc79909cafd52645c88ceb8bcf2a588a Mon Sep 17 00:00:00 2001 From: Will Dietz Date: Wed, 7 Feb 2018 15:08:13 -0600 Subject: [PATCH 3/3] build-dry: disable failing portion of test until issue is fixed --- tests/build-dry.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/build-dry.sh b/tests/build-dry.sh index 9a2a70d5f..610e6070c 100644 --- a/tests/build-dry.sh +++ b/tests/build-dry.sh @@ -18,6 +18,9 @@ nix-build dependencies.nix --dry-run 2>&1 | grep "will be built" # Now new command: nix build -f dependencies.nix --dry-run 2>&1 | grep "will be built" +# TODO: XXX: FIXME: #1793 +# Disable this part of the test until the problem is resolved: +if [ -n "$ISSUE_1795_IS_FIXED" ]; then clearStore clearCache @@ -25,7 +28,7 @@ clearCache nix build -f dependencies.nix --dry-run 2>&1 | grep "will be built" # Now old command: nix-build dependencies.nix --dry-run 2>&1 | grep "will be built" - +fi ################################################### # Check --dry-run doesn't create links with --dry-run