mirror of
https://github.com/NixOS/nix
synced 2025-07-06 21:41:48 +02:00
Make "nix-build -A <derivation>.<output>" do the right thing
For example, given a derivation with outputs "out", "man" and "bin": $ nix-build -A pkg produces ./result pointing to the "out" output; $ nix-build -A pkg.man produces ./result-man pointing to the "man" output; $ nix-build -A pkg.all produces ./result, ./result-man and ./result-bin; $ nix-build -A pkg.all -A pkg2 produces ./result, ./result-man, ./result-bin and ./result-2.
This commit is contained in:
parent
a3d6585c5a
commit
46a369ad95
10 changed files with 106 additions and 20 deletions
|
@ -3197,11 +3197,13 @@ void LocalStore::buildPaths(const PathSet & drvPaths, bool repair)
|
|||
Worker worker(*this);
|
||||
|
||||
Goals goals;
|
||||
foreach (PathSet::const_iterator, i, drvPaths)
|
||||
if (isDerivation(*i))
|
||||
goals.insert(worker.makeDerivationGoal(*i, repair));
|
||||
foreach (PathSet::const_iterator, i, drvPaths) {
|
||||
DrvPathWithOutputs i2 = parseDrvPathWithOutputs(*i);
|
||||
if (isDerivation(i2.first))
|
||||
goals.insert(worker.makeDerivationGoal(i2.first, repair));
|
||||
else
|
||||
goals.insert(worker.makeSubstitutionGoal(*i, repair));
|
||||
}
|
||||
|
||||
worker.run(goals);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue