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

View file

@ -4471,15 +4471,29 @@ void Worker::waitForInput()
unsigned int Worker::exitStatus() unsigned int Worker::exitStatus()
{ {
/*
* 1100100
* ^^^^
* |||`- timeout
* ||`-- output hash mismatch
* |`--- build failure
* `---- not deterministic
*/
unsigned int mask = 0; unsigned int mask = 0;
bool buildFailure = permanentFailure || timedOut || hashMismatch;
if (buildFailure)
mask |= 0x04; // 100
if (timedOut) if (timedOut)
mask |= 1; mask |= 0x01; // 101
if (hashMismatch) if (hashMismatch)
mask |= 2; mask |= 0x02; // 102
if (checkMismatch) if (checkMismatch) {
mask |= 4; 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
nix-build check.nix -A nondeterministic --no-out-link --check 2> $TEST_ROOT/log || status=$? 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 grep 'may not be deterministic' $TEST_ROOT/log
[ "$status" = "104" ]
clearStore clearStore
@ -44,4 +44,4 @@ nix-build check.nix -A hashmismatch --no-out-link --check --hashed-mirrors '' ||
# Multiple failures with --keep-going # Multiple failures with --keep-going
nix-build check.nix -A nondeterministic --no-out-link 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=$? nix-build check.nix -A nondeterministic -A hashmismatch --no-out-link --check --keep-going --hashed-mirrors '' || status=$?
[ "$status" = "106" ] [ "$status" = "110" ]