forked from lix-project/lix
Make InstallableStorePath behave consistently with InstallableValue
That is, the commands 'nix path-info nixpkgs#hello' and 'nix path-info /nix/store/00ls0qi49qkqpqblmvz5s1ajl3gc63lr-hello-2.10.drv' now do the same thing (i.e. build the derivation and operate on the output store path, rather than the .drv path).
This commit is contained in:
parent
298ff6af8f
commit
e3c2b00237
1 changed files with 18 additions and 9 deletions
|
@ -296,15 +296,24 @@ struct InstallableStorePath : Installable
|
|||
|
||||
Buildables toBuildables() override
|
||||
{
|
||||
std::map<std::string, StorePath> outputs;
|
||||
outputs.insert_or_assign("out", storePath);
|
||||
Buildable b{
|
||||
.drvPath = storePath.isDerivation() ? storePath : std::optional<StorePath>(),
|
||||
.outputs = std::move(outputs)
|
||||
};
|
||||
Buildables bs;
|
||||
bs.push_back(std::move(b));
|
||||
return bs;
|
||||
if (storePath.isDerivation()) {
|
||||
std::map<std::string, StorePath> outputs;
|
||||
for (auto & [name, output] : store->readDerivation(storePath).outputs)
|
||||
outputs.emplace(name, output.path);
|
||||
return {
|
||||
Buildable {
|
||||
.drvPath = storePath,
|
||||
.outputs = std::move(outputs)
|
||||
}
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
Buildable {
|
||||
.drvPath = {},
|
||||
.outputs = {{"out", storePath}}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
std::optional<StorePath> getStorePath() override
|
||||
|
|
Loading…
Reference in a new issue