1
0
Fork 0
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:
Eelco Dolstra 2012-11-26 15:39:10 +01:00
parent a3d6585c5a
commit 46a369ad95
10 changed files with 106 additions and 20 deletions

View file

@ -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);