Merge pull request #4724 from NixOS/nix-shell-missing-outputs
Make `nix shell` fallback to static outputs when needed
This commit is contained in:
commit
dd83b29b90
|
@ -736,10 +736,19 @@ std::set<RealisedPath> toRealisedPaths(
|
||||||
output.first);
|
output.first);
|
||||||
auto outputId = DrvOutput{outputHashes.at(output.first), output.first};
|
auto outputId = DrvOutput{outputHashes.at(output.first), output.first};
|
||||||
auto realisation = store->queryRealisation(outputId);
|
auto realisation = store->queryRealisation(outputId);
|
||||||
if (!realisation)
|
if (!realisation) {
|
||||||
|
// TODO: remove this check once #4725 is fixed
|
||||||
|
// as we’ll have the guaranty that if
|
||||||
|
// `output.second` exists, then the realisation
|
||||||
|
// will be there too
|
||||||
|
if (output.second)
|
||||||
|
res.insert(*output.second);
|
||||||
|
else
|
||||||
throw Error("cannot operate on an output of unbuilt content-addresed derivation '%s'", outputId.to_string());
|
throw Error("cannot operate on an output of unbuilt content-addresed derivation '%s'", outputId.to_string());
|
||||||
|
} else {
|
||||||
res.insert(RealisedPath{*realisation});
|
res.insert(RealisedPath{*realisation});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
// If ca-derivations isn't enabled, behave as if
|
// If ca-derivations isn't enabled, behave as if
|
||||||
// all the paths are opaque to keep the default
|
// all the paths are opaque to keep the default
|
||||||
|
|
Loading…
Reference in a new issue