environment: Correctly handle abnormal exits.
Fixes <http://bugs.gnu.org/21958>. * guix/scripts/environment.scm (status->exit-code): New procedure. (exit/status, primitive-exit/status): Use it. * tests/guix-environment-container.sh: Add test.
This commit is contained in:
parent
6493fd0458
commit
82e64fc14e
|
@ -317,8 +317,15 @@ requisite store items i.e. the union closure of all the inputs."
|
|||
(map input->requisites inputs))))
|
||||
(return (delete-duplicates (concatenate reqs)))))
|
||||
|
||||
(define exit/status (compose exit status:exit-val))
|
||||
(define primitive-exit/status (compose primitive-exit status:exit-val))
|
||||
(define (status->exit-code status)
|
||||
"Compute the exit code made from STATUS, a value as returned by 'waitpid',
|
||||
and suitable for 'exit'."
|
||||
;; See <bits/waitstatus.h>.
|
||||
(or (status:exit-val status)
|
||||
(logior #x80 (status:term-sig status))))
|
||||
|
||||
(define exit/status (compose exit status->exit-code))
|
||||
(define primitive-exit/status (compose primitive-exit status->exit-code))
|
||||
|
||||
(define (launch-environment command inputs paths pure?)
|
||||
"Run COMMAND in a new environment containing INPUTS, using the native search
|
||||
|
|
|
@ -81,3 +81,10 @@ grep $(guix build guile-bootstrap) $tmpdir/mounts
|
|||
grep -e "$NIX_STORE_DIR/.*-bash" $tmpdir/mounts # bootstrap bash
|
||||
|
||||
rm $tmpdir/mounts
|
||||
|
||||
if guix environment --bootstrap --container \
|
||||
--ad-hoc bootstrap-binaries -- kill -SEGV 2
|
||||
then false;
|
||||
else
|
||||
test $? -gt 127
|
||||
fi
|
||||
|
|
Loading…
Reference in New Issue