mirror of
https://github.com/NixOS/nix
synced 2025-06-25 19:01:16 +02:00
local-derivation-goal: Move builder preparation to non-builtin code path
This commit is contained in:
parent
1b39753f4d
commit
9e198a75f7
1 changed files with 10 additions and 15 deletions
|
@ -2025,11 +2025,6 @@ void LocalDerivationGoal::runChild()
|
||||||
throw SysError("setuid failed");
|
throw SysError("setuid failed");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Fill in the arguments. */
|
|
||||||
Strings args;
|
|
||||||
|
|
||||||
std::string builder = "invalid";
|
|
||||||
|
|
||||||
#if __APPLE__
|
#if __APPLE__
|
||||||
/* This has to appear before import statements. */
|
/* This has to appear before import statements. */
|
||||||
std::string sandboxProfile = "(version 1)\n";
|
std::string sandboxProfile = "(version 1)\n";
|
||||||
|
@ -2154,14 +2149,6 @@ void LocalDerivationGoal::runChild()
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!drv->isBuiltin()) {
|
|
||||||
builder = drv->builder;
|
|
||||||
args.push_back(std::string(baseNameOf(drv->builder)));
|
|
||||||
}
|
|
||||||
|
|
||||||
for (auto & i : drv->args)
|
|
||||||
args.push_back(rewriteStrings(i, inputRewrites));
|
|
||||||
|
|
||||||
/* Indicate that we managed to set up the build environment. */
|
/* Indicate that we managed to set up the build environment. */
|
||||||
writeFull(STDERR_FILENO, std::string("\2\n"));
|
writeFull(STDERR_FILENO, std::string("\2\n"));
|
||||||
|
|
||||||
|
@ -2192,6 +2179,14 @@ void LocalDerivationGoal::runChild()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Now builder is not builtin
|
||||||
|
|
||||||
|
Strings args;
|
||||||
|
args.push_back(std::string(baseNameOf(drv->builder)));
|
||||||
|
|
||||||
|
for (auto & i : drv->args)
|
||||||
|
args.push_back(rewriteStrings(i, inputRewrites));
|
||||||
|
|
||||||
#if __APPLE__
|
#if __APPLE__
|
||||||
posix_spawnattr_t attrp;
|
posix_spawnattr_t attrp;
|
||||||
|
|
||||||
|
@ -2213,9 +2208,9 @@ void LocalDerivationGoal::runChild()
|
||||||
posix_spawnattr_setbinpref_np(&attrp, 1, &cpu, NULL);
|
posix_spawnattr_setbinpref_np(&attrp, 1, &cpu, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
posix_spawn(NULL, builder.c_str(), NULL, &attrp, stringsToCharPtrs(args).data(), stringsToCharPtrs(envStrs).data());
|
posix_spawn(NULL, drv->builder.c_str(), NULL, &attrp, stringsToCharPtrs(args).data(), stringsToCharPtrs(envStrs).data());
|
||||||
#else
|
#else
|
||||||
execve(builder.c_str(), stringsToCharPtrs(args).data(), stringsToCharPtrs(envStrs).data());
|
execve(drv->builder.c_str(), stringsToCharPtrs(args).data(), stringsToCharPtrs(envStrs).data());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
throw SysError("executing '%1%'", drv->builder);
|
throw SysError("executing '%1%'", drv->builder);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue