1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-06-27 12:41:15 +02:00

Merge remote-tracking branch 'upstream/master' into path-info

This commit is contained in:
John Ericson 2021-04-05 18:47:33 -04:00
commit 1b6cf0d5f5
36 changed files with 289 additions and 224 deletions

View file

@ -116,7 +116,7 @@ std::optional<ContentAddress> getDerivationCA(const BasicDerivation & drv)
return std::nullopt;
}
void Store::queryMissing(const std::vector<BuildableReq> & targets,
void Store::queryMissing(const std::vector<DerivedPath> & targets,
StorePathSet & willBuild_, StorePathSet & willSubstitute_, StorePathSet & unknown_,
uint64_t & downloadSize_, uint64_t & narSize_)
{
@ -144,7 +144,7 @@ void Store::queryMissing(const std::vector<BuildableReq> & targets,
Sync<State> state_(State{{}, unknown_, willSubstitute_, willBuild_, downloadSize_, narSize_});
std::function<void(BuildableReq)> doPath;
std::function<void(DerivedPath)> doPath;
auto mustBuildDrv = [&](const StorePath & drvPath, const Derivation & drv) {
{
@ -153,7 +153,7 @@ void Store::queryMissing(const std::vector<BuildableReq> & targets,
}
for (auto & i : drv.inputDrvs)
pool.enqueue(std::bind(doPath, BuildableReqFromDrv { i.first, i.second }));
pool.enqueue(std::bind(doPath, DerivedPath::Built { i.first, i.second }));
};
auto checkOutput = [&](
@ -176,13 +176,13 @@ void Store::queryMissing(const std::vector<BuildableReq> & targets,
drvState->outPaths.insert(outPath);
if (!drvState->left) {
for (auto & path : drvState->outPaths)
pool.enqueue(std::bind(doPath, BuildableOpaque { path } ));
pool.enqueue(std::bind(doPath, DerivedPath::Opaque { path } ));
}
}
}
};
doPath = [&](const BuildableReq & req) {
doPath = [&](const DerivedPath & req) {
{
auto state(state_.lock());
@ -190,7 +190,7 @@ void Store::queryMissing(const std::vector<BuildableReq> & targets,
}
std::visit(overloaded {
[&](BuildableReqFromDrv bfd) {
[&](DerivedPath::Built bfd) {
if (!isValidPath(bfd.drvPath)) {
// FIXME: we could try to substitute the derivation.
auto state(state_.lock());
@ -223,7 +223,7 @@ void Store::queryMissing(const std::vector<BuildableReq> & targets,
mustBuildDrv(bfd.drvPath, *drv);
},
[&](BuildableOpaque bo) {
[&](DerivedPath::Opaque bo) {
if (isValidPath(bo.path)) return;
@ -247,7 +247,7 @@ void Store::queryMissing(const std::vector<BuildableReq> & targets,
}
for (auto & ref : info->second.references)
pool.enqueue(std::bind(doPath, BuildableOpaque { ref }));
pool.enqueue(std::bind(doPath, DerivedPath::Opaque { ref }));
},
}, req.raw());
};