Support preferLocalBuild

[?]
Jun 29, 2015, 10:20 PM
SK6WHODMWAUL7LNH6QTUXZW7GQFNKKDYN4BU45ODTMMKYMG6O7KAC

Dependencies

  • [2] SODOV2CM Automatically reload $NIX_REMOTE_SYSTEMS when it changes
  • [3] HLSHCK3C Support requiredSystemFeatures
  • [4] 5AIYUMTB Basic remote building
  • [5] N5O7VEEO Immediately abort builds that require an unsupported system type
  • [*] 24BMQDZA Start of single-process hydra-queue-runner
  • [*] NJJ7H64S Very basic multi-threaded queue runner

Change contents

  • edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 141
    [3.50]
    [7.5820]
    bool preferLocalBuild;
  • replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 198
    [3.94][3.94:200]()
    if (step->requiredSystemFeatures.find(f) == step->requiredSystemFeatures.end()) return false;
    [3.94]
    [3.200]
    if (step->requiredSystemFeatures.find(f) == step->requiredSystemFeatures.end()
    && !(step->preferLocalBuild && f == "local"))
    return false;
  • edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 213
    [3.6816]
    [8.947]
    StringSet localPlatforms;
  • edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 369
    [2.825]
    [7.7503]
    localPlatforms = {settings.thisSystem};
    if (settings.thisSystem == "x86_64-linux")
    localPlatforms.insert("i686-linux");
  • replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 389
    [2.1289][2.1289:1509]()
    StringSet systems = StringSet({settings.thisSystem});
    if (settings.thisSystem == "x86_64-linux")
    systems.insert("i686-linux");
    contents = "localhost " + concatStringsSep(",", systems)
    [2.1289]
    [2.1509]
    contents = "localhost " + concatStringsSep(",", localPlatforms)
  • edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 414
    [2.2297]
    [2.2297]
    if (tokens[5] == "-") tokens[5] = "";
  • edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 416
    [2.2377]
    [2.2377]
    if (tokens[6] == "-") tokens[6] = "";
  • edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 831
    [7.11833]
    [7.11833]
    auto attr = step->drv.env.find("preferLocalBuild");
    step->preferLocalBuild =
    attr != step->drv.env.end() && attr->second == "1"
    && has(localPlatforms, step->drv.platform);