aboutsummaryrefslogtreecommitdiff
path: root/src/nix/installables.cc
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2020-06-29 16:39:41 +0200
committerEelco Dolstra <edolstra@gmail.com>2020-06-29 16:39:41 +0200
commitb681408879c9ad1e500fa6e4566c6d119def4271 (patch)
tree8f7687379aa4799ab0c96c03b834f07d767a27e9 /src/nix/installables.cc
parentca946860ce6ce5d4800b0d93d3f83c30d3c953c0 (diff)
Factor out EvalCache::forceDerivation()
Diffstat (limited to 'src/nix/installables.cc')
-rw-r--r--src/nix/installables.cc12
1 files changed, 1 insertions, 11 deletions
diff --git a/src/nix/installables.cc b/src/nix/installables.cc
index fb79fad5d..3683ab945 100644
--- a/src/nix/installables.cc
+++ b/src/nix/installables.cc
@@ -444,17 +444,7 @@ std::tuple<std::string, FlakeRef, InstallableValue::DerivationInfo> InstallableF
if (!attr->isDerivation())
throw Error("flake output attribute '%s' is not a derivation", attrPath);
- auto aDrvPath = attr->getAttr(state->sDrvPath);
- auto drvPath = state->store->parseStorePath(aDrvPath->getString());
- if (!state->store->isValidPath(drvPath) && !settings.readOnlyMode) {
- /* The eval cache contains 'drvPath', but the actual path
- has been garbage-collected. So force it to be
- regenerated. */
- aDrvPath->forceValue();
- if (!state->store->isValidPath(drvPath))
- throw Error("don't know how to recreate store derivation '%s'!",
- state->store->printStorePath(drvPath));
- }
+ auto drvPath = attr->forceDerivation();
auto drvInfo = DerivationInfo{
std::move(drvPath),