installer: Take 'guix system init' exit code into account.
This allows the installer to distinguish success from failure, and also ensures the shell that runs 'guix system init' exits upon completion. * gnu/installer/utils.scm (run-shell-command)[pause]: New procedure. Add "exec" before COMMAND in the script. Guard 'invoke' call and handle 'invoke-error?'. Add call to 'pause' on completion. * gnu/installer/final.scm (install-system): Remove 'false-if-exception'.
This commit is contained in:
parent
6c849cdb98
commit
9529f7850e
@ -99,7 +99,7 @@ USERS."
|
||||
"Create /etc/shadow and /etc/passwd on the installation target for USERS.
|
||||
Start COW-STORE service on target directory and launch guix install command in
|
||||
a subshell. LOCALE must be the locale name under which that command will run,
|
||||
or #f."
|
||||
or #f. Return #t on success and #f on failure."
|
||||
(let ((install-command
|
||||
(format #f "guix system init ~a ~a"
|
||||
(%installer-configuration-file)
|
||||
@ -114,5 +114,4 @@ or #f."
|
||||
(create-user-database users (%installer-target-dir))
|
||||
|
||||
(start-service 'cow-store (list (%installer-target-dir)))
|
||||
(false-if-exception (run-shell-command install-command
|
||||
#:locale locale))))
|
||||
(run-shell-command install-command #:locale locale)))
|
||||
|
@ -1,5 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@ -19,6 +20,8 @@
|
||||
(define-module (gnu installer utils)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix build utils)
|
||||
#:use-module (guix i18n)
|
||||
#:use-module (srfi srfi-34)
|
||||
#:use-module (ice-9 rdelim)
|
||||
#:use-module (ice-9 regex)
|
||||
#:use-module (ice-9 textual-ports)
|
||||
@ -55,7 +58,12 @@ number. If no percentage is found, return #f"
|
||||
(string->number (match:substring result 1)))))
|
||||
|
||||
(define* (run-shell-command command #:key locale)
|
||||
"Run COMMAND, a string, with Bash, and in the given LOCALE."
|
||||
"Run COMMAND, a string, with Bash, and in the given LOCALE. Return true if
|
||||
COMMAND exited successfully, #f otherwise."
|
||||
(define (pause)
|
||||
(format #t (G_ "Press Enter to continue.~%"))
|
||||
(read-line (current-input-port)))
|
||||
|
||||
(call-with-temporary-output-file
|
||||
(lambda (file port)
|
||||
(when locale
|
||||
@ -69,7 +77,17 @@ number. If no percentage is found, return #f"
|
||||
(string-take locale
|
||||
(string-index locale #\_))))))
|
||||
|
||||
(format port "~a~%" command)
|
||||
;; (format port "exit~%")
|
||||
(format port "exec ~a~%" command)
|
||||
(close port)
|
||||
(invoke "bash" "--init-file" file))))
|
||||
|
||||
(guard (c ((invoke-error? c)
|
||||
(newline)
|
||||
(format (current-error-port)
|
||||
(G_ "Command failed with exit code ~a.~%")
|
||||
(invoke-error-exit-status c))
|
||||
(pause)
|
||||
#f))
|
||||
(invoke "bash" "--init-file" file)
|
||||
(newline)
|
||||
(pause)
|
||||
#t))))
|
||||
|
Loading…
Reference in New Issue
Block a user