diff options
author | Ludovic Courtès <ludo@gnu.org> | 2020-03-26 23:21:11 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2020-03-26 23:45:41 +0100 |
commit | be6520e6a58d7f6ee58f4cab76db9d1245410113 (patch) | |
tree | 0ac32bca8086d876583a9ae148b032a29ec9de64 /gnu/build | |
parent | 60eee3e6de2a11b425496bbdf90bfe1f807c8f49 (diff) | |
download | guix-be6520e6a58d7f6ee58f4cab76db9d1245410113.tar guix-be6520e6a58d7f6ee58f4cab76db9d1245410113.tar.gz |
vm: Distinguish between success and failure of the guest code.
Fixes <https://bugs.gnu.org/34276>.
Reported by Tobias Geerinckx-Rice <me@tobias.gr>.
* gnu/system/vm.scm (expression->derivation-in-linux-vm)[loader]:
Produce '/xchg/.exit-status' file upon success.
* gnu/build/vm.scm (load-in-linux-vm): Check for 'xchg/.exit-status'
once QEMU has completed and respond accordingly.
Diffstat (limited to 'gnu/build')
-rw-r--r-- | gnu/build/vm.scm | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/gnu/build/vm.scm b/gnu/build/vm.scm index 9a9e5bd001..79eed48c1f 100644 --- a/gnu/build/vm.scm +++ b/gnu/build/vm.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org> ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> @@ -183,6 +183,15 @@ the #:references-graphs parameter of 'derivation'." '()) arch-specific-flags)) + (unless (file-exists? "xchg/.exit-status") + (error "VM did not produce an exit code")) + + (match (call-with-input-file "xchg/.exit-status" read) + (0 #t) + (status (error "guest VM code exited with a non-zero status" status))) + + (delete-file "xchg/.exit-status") + ;; When MAKE-DISK-IMAGE? is true, the image is in OUTPUT already. (unless make-disk-image? (if single-file-output? |