aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libstore/store-api.cc14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/libstore/store-api.cc b/src/libstore/store-api.cc
index 7bf9235b2..50905bb33 100644
--- a/src/libstore/store-api.cc
+++ b/src/libstore/store-api.cc
@@ -729,9 +729,17 @@ void Store::buildPaths(const std::vector<StorePathWithOutputs> & paths, BuildMod
StorePathSet paths2;
for (auto & path : paths) {
- if (path.path.isDerivation())
- unsupported("buildPaths");
- paths2.insert(path.path);
+ if (path.path.isDerivation()) {
+ if (settings.isExperimentalFeatureEnabled("ca-derivations")) {
+ for (auto & outputName : path.outputs) {
+ if (!queryRealisation({path.path, outputName}))
+ unsupported("buildPaths");
+ }
+ } else
+ unsupported("buildPaths");
+
+ } else
+ paths2.insert(path.path);
}
if (queryValidPaths(paths2).size() != paths2.size())