M guix/scripts/environment.scm => guix/scripts/environment.scm +9 -2
@@ 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
M tests/guix-environment-container.sh => tests/guix-environment-container.sh +7 -0
@@ 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