about summary refs log tree commit diff
path: root/src/nix/installables.cc
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2017-04-25T14·19+0200
committerEelco Dolstra <edolstra@gmail.com>2017-04-25T14·19+0200
commitc30330df6f67c81986dfb124631bc756c8e58c0d (patch)
treeae398eedf65b06cba340292893afce6a041e7299 /src/nix/installables.cc
parentd48c973ece20875391bebde3c167d6e0cc1e666e (diff)
StorePathCommands: Build installables
So for instance "nix copy --to ... nixpkgs.hello" will build
nixpkgs.hello first. It's debatable whether this is a good idea. It
seems desirable for commands like "nix copy" but maybe not for
commands like "nix path-info".
Diffstat (limited to 'src/nix/installables.cc')
-rw-r--r--src/nix/installables.cc11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/nix/installables.cc b/src/nix/installables.cc
index ff345c45d8dd..57580049f25f 100644
--- a/src/nix/installables.cc
+++ b/src/nix/installables.cc
@@ -228,7 +228,16 @@ PathSet InstallablesCommand::buildInstallables(ref<Store> store, bool dryRun)
     if (!dryRun)
         store->buildPaths(buildables);
 
-    return buildables;
+    PathSet outPaths;
+    for (auto & path : buildables)
+        if (isDerivation(path)) {
+            Derivation drv = store->derivationFromPath(path);
+            for (auto & output : drv.outputs)
+                outPaths.insert(output.second.path);
+        } else
+            outPaths.insert(path);
+
+    return outPaths;
 }
 
 ref<EvalState> InstallablesCommand::getEvalState()