1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-06-25 10:41:16 +02:00

Support auto-configuration of build-max-jobs

"build-max-jobs" and the "-j" option can now be set to "auto" to use
the number of CPUs in the system. (Unlike build-cores, it doesn't use
0 to imply auto-configuration, because a) magic values are a bad idea
in general; b) 0 is a legitimate value used to disable local
building.)

Fixes #1198.
This commit is contained in:
Eelco Dolstra 2017-02-28 12:54:50 +01:00
parent 3fab1f04a7
commit 7251d048fa
No known key found for this signature in database
GPG key ID: 8170B4726D7198DE
4 changed files with 18 additions and 7 deletions

View file

@ -147,7 +147,14 @@ int Settings::get(const string & name, int def)
void Settings::update()
{
_get(tryFallback, "build-fallback");
_get(maxBuildJobs, "build-max-jobs");
auto s = get("build-max-jobs", std::string("1"));
if (s == "auto")
maxBuildJobs = std::max(1U, std::thread::hardware_concurrency());
else
if (!string2Int(s, maxBuildJobs))
throw Error("configuration setting build-max-jobs should be auto or an integer");
_get(buildCores, "build-cores");
_get(thisSystem, "system");
_get(maxSilentTime, "build-max-silent-time");