build: replace 100 offset for build exit codes

This commit is contained in:
Daiderd Jordan 2019-06-15 15:28:32 +02:00
parent 1ac399dd11
commit a52c331edb
No known key found for this signature in database
GPG key ID: D02435D05B810C96
3 changed files with 30 additions and 9 deletions

View file

@ -247,8 +247,15 @@ printed.)</para>
</variablelist>
<para>With the <option>--keep-going</option> flag it's possible for
multiple build failures to occur, in this case the 1xx status codes
are or combined.</para>
multiple failures to occur, in this case the 1xx status codes are or combined
using binary or. <screen>
1100100
^^^^
|||`- timeout
||`-- output hash mismatch
|`--- build failure
`---- not deterministic
</screen></para>
</refsection>

View file

@ -4471,15 +4471,29 @@ void Worker::waitForInput()
unsigned int Worker::exitStatus()
{
/*
* 1100100
* ^^^^
* |||`- timeout
* ||`-- output hash mismatch
* |`--- build failure
* `---- not deterministic
*/
unsigned int mask = 0;
bool buildFailure = permanentFailure || timedOut || hashMismatch;
if (buildFailure)
mask |= 0x04; // 100
if (timedOut)
mask |= 1;
mask |= 0x01; // 101
if (hashMismatch)
mask |= 2;
if (checkMismatch)
mask |= 4;
mask |= 0x02; // 102
if (checkMismatch) {
mask |= 0x08; // 104
}
return mask ? 100 + mask : 1;
if (mask)
mask |= 0x60;
return mask ? mask : 1;
}

View file

@ -7,8 +7,8 @@ nix-build dependencies.nix --no-out-link --check
nix-build check.nix -A nondeterministic --no-out-link
nix-build check.nix -A nondeterministic --no-out-link --check 2> $TEST_ROOT/log || status=$?
[ "$status" = "104" ]
grep 'may not be deterministic' $TEST_ROOT/log
[ "$status" = "104" ]
clearStore
@ -44,4 +44,4 @@ nix-build check.nix -A hashmismatch --no-out-link --check --hashed-mirrors '' ||
# Multiple failures with --keep-going
nix-build check.nix -A nondeterministic --no-out-link
nix-build check.nix -A nondeterministic -A hashmismatch --no-out-link --check --keep-going --hashed-mirrors '' || status=$?
[ "$status" = "106" ]
[ "$status" = "110" ]