diff options
author | Eelco Dolstra <edolstra@gmail.com> | 2017-07-14T12·23+0200 |
---|---|---|
committer | Eelco Dolstra <edolstra@gmail.com> | 2017-07-14T16·29+0200 |
commit | 6438ba22af57edc054e441053a7c3cd5d48e5597 (patch) | |
tree | c4d3f81b34d2031b0e03ab4c5fe0053123097b78 /src | |
parent | 15e8bd3bcb9b458ad3bc6188bdf531ecb6d65c4a (diff) |
StorePathsCommand: Don't build installables
On second though this was annoying. E.g. "nix log nixpkgs.hello" would build/download Hello first, even though the log can be fetched directly from the binary cache. May need to revisit this.
Diffstat (limited to 'src')
-rw-r--r-- | src/nix/build.cc | 2 | ||||
-rw-r--r-- | src/nix/command.cc | 4 | ||||
-rw-r--r-- | src/nix/command.hh | 4 | ||||
-rw-r--r-- | src/nix/installables.cc | 6 | ||||
-rw-r--r-- | src/nix/run.cc | 2 |
5 files changed, 10 insertions, 8 deletions
diff --git a/src/nix/build.cc b/src/nix/build.cc index 00bda1fd1045..cc96ac48a977 100644 --- a/src/nix/build.cc +++ b/src/nix/build.cc @@ -23,7 +23,7 @@ struct CmdBuild : MixDryRun, InstallablesCommand void run(ref<Store> store) override { - auto paths = buildInstallables(store, dryRun); + auto paths = toStorePaths(store, dryRun ? DryRun : Build); printInfo("build result: %s", showPaths(paths)); } diff --git a/src/nix/command.cc b/src/nix/command.cc index 96b685a5b2eb..6b608a708eea 100644 --- a/src/nix/command.cc +++ b/src/nix/command.cc @@ -115,7 +115,7 @@ void StorePathsCommand::run(ref<Store> store) } else { - for (auto & p : buildInstallables(store, false)) + for (auto & p : toStorePaths(store, NoBuild)) storePaths.push_back(p); if (recursive) { @@ -131,7 +131,7 @@ void StorePathsCommand::run(ref<Store> store) void StorePathCommand::run(ref<Store> store) { - auto storePaths = buildInstallables(store, false); + auto storePaths = toStorePaths(store, NoBuild); if (storePaths.size() != 1) throw UsageError("this command requires exactly one store path"); diff --git a/src/nix/command.hh b/src/nix/command.hh index 4800b5c912e4..eb736ce3a3e4 100644 --- a/src/nix/command.hh +++ b/src/nix/command.hh @@ -80,7 +80,9 @@ struct InstallablesCommand : virtual Args, StoreCommand std::vector<std::shared_ptr<Installable>> parseInstallables(ref<Store> store, Strings ss); - PathSet buildInstallables(ref<Store> store, bool dryRun); + enum ToStorePathsMode { Build, NoBuild, DryRun }; + + PathSet toStorePaths(ref<Store> store, ToStorePathsMode mode); ref<EvalState> getEvalState(); diff --git a/src/nix/installables.cc b/src/nix/installables.cc index 9982ff75f4f4..f0d5d547ca33 100644 --- a/src/nix/installables.cc +++ b/src/nix/installables.cc @@ -214,7 +214,7 @@ std::vector<std::shared_ptr<Installable>> InstallablesCommand::parseInstallables return result; } -PathSet InstallablesCommand::buildInstallables(ref<Store> store, bool dryRun) +PathSet InstallablesCommand::toStorePaths(ref<Store> store, ToStorePathsMode mode) { PathSet buildables; @@ -223,9 +223,9 @@ PathSet InstallablesCommand::buildInstallables(ref<Store> store, bool dryRun) buildables.insert(b.begin(), b.end()); } - if (dryRun) + if (mode == DryRun) printMissing(store, buildables); - else + else if (mode == Build) store->buildPaths(buildables); PathSet outPaths; diff --git a/src/nix/run.cc b/src/nix/run.cc index bcfa74eb5f5f..49fe4e7a0c6d 100644 --- a/src/nix/run.cc +++ b/src/nix/run.cc @@ -30,7 +30,7 @@ struct CmdRun : InstallablesCommand void run(ref<Store> store) override { - auto outPaths = buildInstallables(store, false); + auto outPaths = toStorePaths(store, Build); auto store2 = store.dynamic_pointer_cast<LocalStore>(); |