diff options
author | Eelco Dolstra <edolstra@gmail.com> | 2020-06-29 16:39:41 +0200 |
---|---|---|
committer | Eelco Dolstra <edolstra@gmail.com> | 2020-06-29 16:39:41 +0200 |
commit | b681408879c9ad1e500fa6e4566c6d119def4271 (patch) | |
tree | 8f7687379aa4799ab0c96c03b834f07d767a27e9 /src/nix/installables.cc | |
parent | ca946860ce6ce5d4800b0d93d3f83c30d3c953c0 (diff) |
Factor out EvalCache::forceDerivation()
Diffstat (limited to 'src/nix/installables.cc')
-rw-r--r-- | src/nix/installables.cc | 12 |
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), |