mirror of
https://github.com/NixOS/nix
synced 2025-07-03 02:01:48 +02:00
Trustless remote building
Co-authored-by: Matthew Bauer <mjbauer95@gmail.com>
This commit is contained in:
parent
53f92c779a
commit
cbc4344297
15 changed files with 181 additions and 12 deletions
|
@ -834,7 +834,23 @@ std::map<StorePath, StorePath> copyPaths(ref<Store> srcStore, ref<Store> dstStor
|
|||
MaintainCount<decltype(nrRunning)> mc(nrRunning);
|
||||
showProgress();
|
||||
try {
|
||||
copyStorePath(srcStore, dstStore, storePath, repair, checkSigs);
|
||||
if (dstStore->isTrusting || info->ca) {
|
||||
copyStorePath(srcStore, dstStore, storePath, repair, checkSigs);
|
||||
} else if (info->deriver && dstStore->storeDir == srcStore->storeDir) {
|
||||
auto drvPath = *info->deriver;
|
||||
auto outputMap = srcStore->queryDerivationOutputMap(drvPath);
|
||||
auto p = std::find_if(outputMap.begin(), outputMap.end(), [&](auto & i) {
|
||||
return i.second == storePath;
|
||||
});
|
||||
// drv file is always CA
|
||||
copyStorePath(srcStore, dstStore, drvPath, repair, checkSigs);
|
||||
dstStore->buildPaths({{
|
||||
drvPath,
|
||||
p != outputMap.end() ? StringSet { p->first } : StringSet {},
|
||||
}});
|
||||
} else {
|
||||
dstStore->ensurePath(storePath);
|
||||
}
|
||||
} catch (Error &e) {
|
||||
nrFailed++;
|
||||
if (!settings.keepGoing)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue