From bc6e7ca046952bd773558a3c4984e4f1c2717234 Mon Sep 17 00:00:00 2001 From: Georges Dubus Date: Fri, 3 Jul 2020 14:21:31 +0200 Subject: [PATCH] Don't use read-only mode for nix build --dry-run In dry run mode, new derivations can't be create, so running the command on anything that has not been evaluated before results in an error message of the form `don't know how to build these paths (may be caused by read-only store access)`. For comparison, the classical `nix-build --dry-run` doesn't use read-only mode. Closes #1795 (cherry picked from commit 54525682df707742e58311c32e9c9cb18de1e31f) --- src/libcmd/installables.cc | 2 +- src/nix/build.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libcmd/installables.cc b/src/libcmd/installables.cc index 0091a938a..86080f53a 100644 --- a/src/libcmd/installables.cc +++ b/src/libcmd/installables.cc @@ -756,7 +756,7 @@ BuiltPaths build(ref evalStore, ref store, Realise mode, pathsToBuild.insert(pathsToBuild.end(), b.begin(), b.end()); } - if (mode == Realise::Nothing) + if (mode == Realise::Nothing || mode == Realise::Derivation) printMissing(store, pathsToBuild, lvlError); else if (mode == Realise::Outputs) store->buildPaths(pathsToBuild, bMode, evalStore); diff --git a/src/nix/build.cc b/src/nix/build.cc index 13eb66ac6..ce6df7df8 100644 --- a/src/nix/build.cc +++ b/src/nix/build.cc @@ -54,7 +54,7 @@ struct CmdBuild : InstallablesCommand, MixDryRun, MixJSON, MixProfile { auto buildables = build( getEvalStore(), store, - dryRun ? Realise::Nothing : Realise::Outputs, + dryRun ? Realise::Derivation : Realise::Outputs, installables, buildMode); if (json) logger->cout("%s", derivedPathsWithHintsToJSON(buildables, store).dump());