installer: Run 'guix system init' with the right locale.
* gnu/installer/utils.scm (run-shell-command): Add #:locale and honor it. * gnu/installer/newt/final.scm (run-install-shell): Add 'locale' parameter; pass it to 'install-system'. (run-final-page): Obtain locale from RESULT; pass it to 'run-install-shell'. * gnu/installer/final.scm (install-system): Add 'locale' parameter; pass it to 'run-shell-command'.
This commit is contained in:
parent
5582aa8e31
commit
7611074f67
|
@ -24,13 +24,15 @@
|
||||||
#:use-module (guix build utils)
|
#:use-module (guix build utils)
|
||||||
#:export (install-system))
|
#:export (install-system))
|
||||||
|
|
||||||
(define (install-system)
|
(define (install-system locale)
|
||||||
"Start COW-STORE service on target directory and launch guix install command
|
"Start COW-STORE service on target directory and launch guix install command
|
||||||
in a subshell."
|
in a subshell. LOCALE must be the locale name under which that command will
|
||||||
|
run, or #f."
|
||||||
(let ((install-command
|
(let ((install-command
|
||||||
(format #f "guix system init ~a ~a"
|
(format #f "guix system init ~a ~a"
|
||||||
(%installer-configuration-file)
|
(%installer-configuration-file)
|
||||||
(%installer-target-dir))))
|
(%installer-target-dir))))
|
||||||
(mkdir-p (%installer-target-dir))
|
(mkdir-p (%installer-target-dir))
|
||||||
(start-service 'cow-store (list (%installer-target-dir)))
|
(start-service 'cow-store (list (%installer-target-dir)))
|
||||||
(false-if-exception (run-shell-command install-command))))
|
(false-if-exception (run-shell-command install-command
|
||||||
|
#:locale locale))))
|
||||||
|
|
|
@ -65,22 +65,23 @@ press the button to reboot.")))
|
||||||
(G_ "The final system installation step failed. You can retry the \
|
(G_ "The final system installation step failed. You can retry the \
|
||||||
last step, or restart the installer.")))
|
last step, or restart the installer.")))
|
||||||
|
|
||||||
(define (run-install-shell)
|
(define (run-install-shell locale)
|
||||||
(clear-screen)
|
(clear-screen)
|
||||||
(newt-suspend)
|
(newt-suspend)
|
||||||
(let ((install-ok? (install-system)))
|
(let ((install-ok? (install-system locale)))
|
||||||
(newt-resume)
|
(newt-resume)
|
||||||
install-ok?))
|
install-ok?))
|
||||||
|
|
||||||
(define (run-final-page result prev-steps)
|
(define (run-final-page result prev-steps)
|
||||||
(let* ((configuration (format-configuration prev-steps result))
|
(let* ((configuration (format-configuration prev-steps result))
|
||||||
(user-partitions (result-step result 'partition))
|
(user-partitions (result-step result 'partition))
|
||||||
|
(locale (result-step result 'locale))
|
||||||
(install-ok?
|
(install-ok?
|
||||||
(with-mounted-partitions
|
(with-mounted-partitions
|
||||||
user-partitions
|
user-partitions
|
||||||
(configuration->file configuration)
|
(configuration->file configuration)
|
||||||
(run-config-display-page)
|
(run-config-display-page)
|
||||||
(run-install-shell))))
|
(run-install-shell locale))))
|
||||||
(if install-ok?
|
(if install-ok?
|
||||||
(run-install-success-page)
|
(run-install-success-page)
|
||||||
(run-install-failed-page))))
|
(run-install-failed-page))))
|
||||||
|
|
|
@ -54,9 +54,21 @@ number. If no percentage is found, return #f"
|
||||||
(and result
|
(and result
|
||||||
(string->number (match:substring result 1)))))
|
(string->number (match:substring result 1)))))
|
||||||
|
|
||||||
(define (run-shell-command command)
|
(define* (run-shell-command command #:key locale)
|
||||||
|
"Run COMMAND, a string, with Bash, and in the given LOCALE."
|
||||||
(call-with-temporary-output-file
|
(call-with-temporary-output-file
|
||||||
(lambda (file port)
|
(lambda (file port)
|
||||||
|
(when locale
|
||||||
|
(let ((supported? (false-if-exception
|
||||||
|
(setlocale LC_ALL locale))))
|
||||||
|
;; If LOCALE is not supported, then set LANGUAGE, which might at
|
||||||
|
;; least give us translated messages.
|
||||||
|
(if supported?
|
||||||
|
(format port "export LC_ALL=\"~a\"~%" locale)
|
||||||
|
(format port "export LANGUAGE=\"~a\"~%"
|
||||||
|
(string-take locale
|
||||||
|
(string-index locale #\_))))))
|
||||||
|
|
||||||
(format port "~a~%" command)
|
(format port "~a~%" command)
|
||||||
;; (format port "exit~%")
|
;; (format port "exit~%")
|
||||||
(close port)
|
(close port)
|
||||||
|
|
Loading…
Reference in New Issue