Merge pull request #7891 from mupdt/shared-fs-out-links
no-op refactor: extract outLink generation into a function
This commit is contained in:
commit
790dd2555b
1 changed files with 24 additions and 18 deletions
|
@ -41,6 +41,29 @@ nlohmann::json builtPathsWithResultToJSON(const std::vector<BuiltPathWithResult>
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO deduplicate with other code also setting such out links.
|
||||||
|
static void createOutLinks(const Path& outLink, const std::vector<BuiltPathWithResult>& buildables, LocalFSStore& store2)
|
||||||
|
{
|
||||||
|
for (const auto & [_i, buildable] : enumerate(buildables)) {
|
||||||
|
auto i = _i;
|
||||||
|
std::visit(overloaded {
|
||||||
|
[&](const BuiltPath::Opaque & bo) {
|
||||||
|
std::string symlink = outLink;
|
||||||
|
if (i) symlink += fmt("-%d", i);
|
||||||
|
store2.addPermRoot(bo.path, absPath(symlink));
|
||||||
|
},
|
||||||
|
[&](const BuiltPath::Built & bfd) {
|
||||||
|
for (auto & output : bfd.outputs) {
|
||||||
|
std::string symlink = outLink;
|
||||||
|
if (i) symlink += fmt("-%d", i);
|
||||||
|
if (output.first != "out") symlink += fmt("-%s", output.first);
|
||||||
|
store2.addPermRoot(output.second, absPath(symlink));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}, buildable.path.raw());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
struct CmdBuild : InstallablesCommand, MixDryRun, MixJSON, MixProfile
|
struct CmdBuild : InstallablesCommand, MixDryRun, MixJSON, MixProfile
|
||||||
{
|
{
|
||||||
Path outLink = "result";
|
Path outLink = "result";
|
||||||
|
@ -115,24 +138,7 @@ struct CmdBuild : InstallablesCommand, MixDryRun, MixJSON, MixProfile
|
||||||
|
|
||||||
if (outLink != "")
|
if (outLink != "")
|
||||||
if (auto store2 = store.dynamic_pointer_cast<LocalFSStore>())
|
if (auto store2 = store.dynamic_pointer_cast<LocalFSStore>())
|
||||||
for (const auto & [_i, buildable] : enumerate(buildables)) {
|
createOutLinks(outLink, buildables, *store2);
|
||||||
auto i = _i;
|
|
||||||
std::visit(overloaded {
|
|
||||||
[&](const BuiltPath::Opaque & bo) {
|
|
||||||
std::string symlink = outLink;
|
|
||||||
if (i) symlink += fmt("-%d", i);
|
|
||||||
store2->addPermRoot(bo.path, absPath(symlink));
|
|
||||||
},
|
|
||||||
[&](const BuiltPath::Built & bfd) {
|
|
||||||
for (auto & output : bfd.outputs) {
|
|
||||||
std::string symlink = outLink;
|
|
||||||
if (i) symlink += fmt("-%d", i);
|
|
||||||
if (output.first != "out") symlink += fmt("-%s", output.first);
|
|
||||||
store2->addPermRoot(output.second, absPath(symlink));
|
|
||||||
}
|
|
||||||
},
|
|
||||||
}, buildable.path.raw());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (printOutputPaths) {
|
if (printOutputPaths) {
|
||||||
stopProgressBar();
|
stopProgressBar();
|
||||||
|
|
Loading…
Reference in a new issue