diff options
author | Eelco Dolstra <edolstra@gmail.com> | 2021-04-22 10:25:55 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-22 10:25:55 +0200 |
commit | dd83b29b90031456975384ee71d4fa6d68abe354 (patch) | |
tree | f3598e71a204038384ca4830f56823e3cb1db208 /src/libcmd/installables.cc | |
parent | 53857552278173641c0489a3196c51aab769bac8 (diff) | |
parent | 8d66f5f1107fe87f70ea24ade045720235cc31fa (diff) |
Merge pull request #4724 from NixOS/nix-shell-missing-outputs
Make `nix shell` fallback to static outputs when needed
Diffstat (limited to 'src/libcmd/installables.cc')
-rw-r--r-- | src/libcmd/installables.cc | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/libcmd/installables.cc b/src/libcmd/installables.cc index e15addfae..39162a662 100644 --- a/src/libcmd/installables.cc +++ b/src/libcmd/installables.cc @@ -736,9 +736,18 @@ std::set<RealisedPath> toRealisedPaths( output.first); auto outputId = DrvOutput{outputHashes.at(output.first), output.first}; auto realisation = store->queryRealisation(outputId); - if (!realisation) - throw Error("cannot operate on an output of unbuilt content-addresed derivation '%s'", outputId.to_string()); - res.insert(RealisedPath{*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()); + } else { + res.insert(RealisedPath{*realisation}); + } } else { // If ca-derivations isn't enabled, behave as if |