diff options
author | Georges Dubus <georges.dubus@gmail.com> | 2020-07-03 14:21:31 +0200 |
---|---|---|
committer | Eelco Dolstra <edolstra@gmail.com> | 2021-09-02 14:50:19 +0200 |
commit | bc6e7ca046952bd773558a3c4984e4f1c2717234 (patch) | |
tree | 408ee9e5259caffcf1790db922f50e59c7269a65 | |
parent | b2e8120d25de5303bfb6a99c14d3ecad21f55a05 (diff) |
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)
-rw-r--r-- | src/libcmd/installables.cc | 2 | ||||
-rw-r--r-- | 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<Store> evalStore, ref<Store> 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()); |