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))))
|
(map input->requisites inputs))))
|
||||||
(return (delete-duplicates (concatenate reqs)))))
|
(return (delete-duplicates (concatenate reqs)))))
|
||||||
|
|
||||||
(define exit/status (compose exit status:exit-val))
|
(define (status->exit-code status)
|
||||||
(define primitive-exit/status (compose primitive-exit status:exit-val))
|
"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?)
|
(define (launch-environment command inputs paths pure?)
|
||||||
"Run COMMAND in a new environment containing INPUTS, using the native search
|
"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
|
grep -e "$NIX_STORE_DIR/.*-bash" $tmpdir/mounts # bootstrap bash
|
||||||
|
|
||||||
rm $tmpdir/mounts
|
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