[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
06/06: installer: Use UUIDs in the 'swap-devices' field.
From: |
guix-commits |
Subject: |
06/06: installer: Use UUIDs in the 'swap-devices' field. |
Date: |
Thu, 29 Oct 2020 20:15:36 -0400 (EDT) |
civodul pushed a commit to branch master
in repository guix.
commit 1c6d98533153bc8e0e36236e7fbcf1eb5e178d26
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Fri Oct 23 11:31:56 2020 +0200
installer: Use UUIDs in the 'swap-devices' field.
Note: This change requires an updated 'guix' package that contains
Linux-swap support in (gnu build file-systems).
* gnu/installer/parted.scm (user-partitions->configuration): Use UUIDs
in the 'swap-devices' field.
* gnu/installer/newt/final.scm (run-final-page)[wait-for-clients]: New
procedure. Use it.
* gnu/installer/tests.scm (choose-partitioning): Wait for
'starting-final-step' message and move configuration file dialog
handling to...
(conclude-installation): ... here. Send over PORT the reply
corresponding to 'starting-final-step'.
* gnu/tests/install.scm (gui-test-program): When ENCRYPTED? is false,
invoke 'swaplabel' in the marionette.
(installation-target-os-for-gui-tests): When ENCRYPTED? is false, except
a fixed UUID.
---
gnu/installer/newt/final.scm | 14 ++++++++++++++
gnu/installer/parted.scm | 7 ++++++-
gnu/installer/tests.scm | 31 +++++++++++++++++++++++--------
gnu/tests/install.scm | 18 ++++++++++++++++--
4 files changed, 59 insertions(+), 11 deletions(-)
diff --git a/gnu/installer/newt/final.scm b/gnu/installer/newt/final.scm
index 89684c4..5019a67 100644
--- a/gnu/installer/newt/final.scm
+++ b/gnu/installer/newt/final.scm
@@ -29,6 +29,7 @@
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
#:use-module (ice-9 match)
+ #:use-module ((ice-9 rdelim) #:select (read-line))
#:use-module (newt)
#:export (run-final-page))
@@ -107,6 +108,19 @@ a specific step, or restart the installer."))
install-ok?))
(define (run-final-page result prev-steps)
+ (define (wait-for-clients)
+ (unless (null? (current-clients))
+ (syslog "waiting with clients before starting final step~%")
+ (send-to-clients '(starting-final-step))
+ (match (select (current-clients) '() '())
+ (((port _ ...) _ _)
+ (read-line port)))))
+
+ ;; Before generating the configuration file, give clients a chance to do
+ ;; things such as changing the swap partition label.
+ (wait-for-clients)
+
+ (syslog "proceeding with final step~%")
(let* ((configuration (format-configuration prev-steps result))
(user-partitions (result-step result 'partition))
(locale (result-step result 'locale))
diff --git a/gnu/installer/parted.scm b/gnu/installer/parted.scm
index fffd5ab..d799ee0 100644
--- a/gnu/installer/parted.scm
+++ b/gnu/installer/parted.scm
@@ -1327,7 +1327,12 @@ USER-PARTITIONS, or return nothing."
,@(initrd-configuration user-partitions)
,@(if (null? swap-devices)
'()
- `((swap-devices (list ,@swap-devices))))
+ (let* ((uuids (map (lambda (file)
+ (uuid->string (read-partition-uuid file)))
+ swap-devices)))
+ `((swap-devices (list ,@(map (lambda (uuid)
+ `(uuid ,uuid))
+ uuids))))))
,@(if (null? encrypted-partitions)
'()
`((mapped-devices
diff --git a/gnu/installer/tests.scm b/gnu/installer/tests.scm
index 58bf0a2..f318546 100644
--- a/gnu/installer/tests.scm
+++ b/gnu/installer/tests.scm
@@ -286,8 +286,9 @@ instrumented for further testing."
edit-configuration-file))
"Converse over PORT to choose the partitioning method. When ENCRYPTED? is
true, choose full-disk encryption with PASSPHRASE as the LUKS passphrase.
-This conversation goes past the final dialog box that shows the configuration
-file, actually starting the installation process."
+This conversation stops when the user partitions have been formatted, right
+before the installer generates the configuration file and shows it in a dialog
+box."
(converse port
((list-selection (title "Partitioning method")
(multiple-choices? #f)
@@ -330,15 +331,29 @@ file, actually starting the installation process."
#t)
((info (title "Preparing partitions") _ ...)
(values)) ;nothing to return
- ((file-dialog (title "Configuration file")
- (text _)
- (file ,configuration-file))
- (edit-configuration-file configuration-file))))
+ ((starting-final-step)
+ ;; Do not return anything. The reply will be sent by
+ ;; 'conclude-installation' and in the meantime the installer just waits
+ ;; for us, giving us a chance to do things such as changing partition
+ ;; UUIDs before it generates the configuration file.
+ (values))))
(define (conclude-installation port)
- "Conclude the installation by checking over PORT that we get the final
-messages once the 'guix system init' process has completed."
+ "Conclude the installation by checking over PORT that we get the generated
+configuration file, accepting it and starting the installation, and then
+receiving the final messages once the 'guix system init' process has
+completed."
+ ;; Assume the previous message received was 'starting-final-step'; here we
+ ;; send the reply to that message, which lets the installer continue.
+ (write #t port)
+ (newline port)
+ (force-output port)
+
(converse port
+ ((file-dialog (title "Configuration file")
+ (text _)
+ (file ,configuration-file))
+ (edit-configuration-file configuration-file))
((pause) ;"Press Enter to continue."
#t)
((installation-complete) ;congratulations!
diff --git a/gnu/tests/install.scm b/gnu/tests/install.scm
index 86bd939..2d62a87 100644
--- a/gnu/tests/install.scm
+++ b/gnu/tests/install.scm
@@ -1211,6 +1211,16 @@ build (current-guix) and then store a couple of full
system images.")
#$marionette)
(screenshot "installer-run.ppm")
+ (unless #$encrypted?
+ ;; At this point, user partitions are formatted and the installer is
+ ;; waiting for us to start the final step: generating the
+ ;; configuration file, etc. Set a fixed UUID on the swap partition
+ ;; that matches what 'installation-target-os-for-gui-tests' expects.
+ (marionette-eval* '(invoke #$(file-append util-linux "/sbin/swaplabel")
+ "-U" "11111111-2222-3333-4444-123456789abc"
+ "/dev/vda2")
+ #$marionette))
+
(marionette-eval* '(conclude-installation installer-socket)
#$marionette)
@@ -1257,8 +1267,12 @@ build (current-guix) and then store a couple of full
system images.")
'("wheel" "audio" "video"))))
%base-user-accounts))
;; The installer does not create a swap device in guided mode with
- ;; encryption support.
- (swap-devices (if encrypted? '() '("/dev/vda2")))
+ ;; encryption support. The installer produces a UUID for the partition;
+ ;; this "UUID" is explicitly set in 'gui-test-program' to the value shown
+ ;; below.
+ (swap-devices (if encrypted?
+ '()
+ (list (uuid "11111111-2222-3333-4444-123456789abc"))))
(services (cons (service dhcp-client-service-type)
(operating-system-user-services %minimal-os-on-vda)))))
- branch master updated (61e839a -> 1c6d985), guix-commits, 2020/10/29
- 01/06: scripts: lint: Fix '--no-network' option., guix-commits, 2020/10/29
- 04/06: file-systems: Allow swap space lookup by UUID/label., guix-commits, 2020/10/29
- 06/06: installer: Use UUIDs in the 'swap-devices' field.,
guix-commits <=
- 03/06: gnu: r-calculus: Fix typo in home-page., guix-commits, 2020/10/29
- 05/06: services: swap: Allow for UUIDs and file system labels., guix-commits, 2020/10/29
- 02/06: scripts: lint: Add '--exclude' option., guix-commits, 2020/10/29