Support testing build determinism

[?]
Dec 6, 2016, 4:46 PM
EFWDY2V7ILJBFQ6NADBESYZTPHQBXKNO5N4DPNABL7X4XMNNTNYAC

Dependencies

  • [2] BYVRA54Q Temporarily disable machines on any exception, not just connection failures
  • [3] LRU7K5MW Update build images to be more friendly to users with color blindness.
  • [4] 5AIYUMTB Basic remote building
  • [5] VZKB5CIE Workaround for RemoteStore not supporting cmdBuildDerivation yet
  • [*] MHVIT4JY Split hydra-queue-runner.cc more
  • [*] DKJFD6JN Process Nix API changes
  • [*] EJJCY263 Account steps with preferLocalBuild as a separate system type
  • [*] HJOEIMLR Refactor
  • [*] BG6PEOB2 Make the output size limit configurable
  • [*] UNVMKJV5 Unify build and step status codes
  • [*] 5N7LVAJN Keep track of requiredSystemFeatures in the machine stats
  • [*] J5UVLXOK * Start of a basic Catalyst web interface.
  • [*] 24BMQDZA Start of single-process hydra-queue-runner
  • [*] IK53RV4V
  • [*] 6KIJX24R Get rid of unnecessary [%- and -%] tags
  • [*] T6KISLR6 Fix indentation
  • [*] N22GPKYT * Put info about logs / build products in the DB.
  • [*] BD3GRK4B * Get rid of "positive failures" and separate log phases.

Change contents

  • replacement in src/hydra-queue-runner/build-remote.cc at line 172
    [2.415][2.415:457]()
    to << SERVE_MAGIC_1 << 0x202;
    [2.415]
    [2.457]
    to << SERVE_MAGIC_1 << 0x203;
  • edit in src/hydra-queue-runner/build-remote.cc at line 183
    [2.1013]
    [4.91]
    if (GET_PROTOCOL_MINOR(remoteVersion) < 3 && step->isDeterministic)
    throw Error("machine ‘%1%’ does not support deterministic builds; please upgrade it to Nix 1.12", machine->sshName);
  • edit in src/hydra-queue-runner/build-remote.cc at line 266
    [2.3765]
    [2.3765]
    if (GET_PROTOCOL_MINOR(remoteVersion) >= 3)
    // FIXME: make the number of repeats configurable.
    to << (step->isDeterministic ? 1 : 0);
  • edit in src/hydra-queue-runner/build-remote.cc at line 332
    [2.6391]
    [2.6391]
    break;
    case BuildResult::NotDeterministic:
    result.stepStatus = bsNotDeterministic;
    result.canRetry = false;
    result.canCache = true;
  • edit in src/hydra-queue-runner/queue-monitor.cc at line 421
    [8.1009]
    [9.197]
    step->isDeterministic = get(step->drv.env, "isDetermistic", "0") == "1";
  • edit in src/hydra-queue-runner/state.hh at line 38
    [11.3973]
    [12.996]
    bsNotDeterministic = 12,
  • edit in src/hydra-queue-runner/state.hh at line 143
    [10.2488]
    [13.514]
    bool isDeterministic;
  • edit in src/root/build.tt at line 72
    [11.4463]
    [15.20001]
    [% ELSIF step.status == 12 %]
    <span class="error">Non-deterministic build</span>
  • edit in src/root/common.tt at line 212
    [3.1704]
    [17.4181]
    [% ELSIF buildstatus == 12 %]
    <img src="[% c.uri_for("/static/images/emojione-red-x-274c.svg") %]" height="[% size %]" width="[% size %]" title="Non-deterministic build" alt="Non-deterministic build" class="build-status" />
  • edit in src/root/common.tt at line 245
    [11.4716]
    [18.2353]
    [% ELSIF buildstatus == 12 %]
    <span class="error">Non-deterministic build</span>
  • edit in src/sql/hydra.sql at line 214
    [11.4754]
    [20.4847]
    -- 12 = build or step was not deterministic