* [bug#40207] [PATCH 0/2] Add a desktop graphical installer test.
@ 2020-03-24 8:34 Mathieu Othacehe
2020-03-24 8:36 ` [bug#40207] [PATCH 1/2] installer: tests: Use a filter to select desktop-environments Mathieu Othacehe
0 siblings, 1 reply; 9+ messages in thread
From: Mathieu Othacehe @ 2020-03-24 8:34 UTC (permalink / raw)
To: 40207; +Cc: Mathieu Othacehe
Hello,
Here are two patches that allow testing the graphical installation of a Guix
System with all desktop-environments included.
Thanks,
Mathieu
Mathieu Othacehe (2):
installer: tests: Use a filter to select desktop-environments.
tests: install: Add %test-gui-installed-desktop-os-encrypted.
gnu/installer/tests.scm | 11 +++--
gnu/tests/install.scm | 90 +++++++++++++++++++++++++++++++++--------
2 files changed, 81 insertions(+), 20 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [bug#40207] [PATCH 1/2] installer: tests: Use a filter to select desktop-environments.
2020-03-24 8:34 [bug#40207] [PATCH 0/2] Add a desktop graphical installer test Mathieu Othacehe
@ 2020-03-24 8:36 ` Mathieu Othacehe
2020-03-24 8:36 ` [bug#40207] [PATCH 2/2] tests: install: Add %test-gui-installed-desktop-os-encrypted Mathieu Othacehe
2020-03-24 10:31 ` [bug#40207] [PATCH 1/2] installer: tests: Use a filter to select desktop-environments Ludovic Courtès
0 siblings, 2 replies; 9+ messages in thread
From: Mathieu Othacehe @ 2020-03-24 8:36 UTC (permalink / raw)
To: 40207; +Cc: Mathieu Othacehe
* gnu/installer/tests.scm (choose-services): Turn desktop-environments list
into a choose-desktop-environment procedure. This way, it is easier to select
all desktop-environments or none, in the same way as choose-network-service?
and choose-network-management-tool? arguments.
---
gnu/installer/tests.scm | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/gnu/installer/tests.scm b/gnu/installer/tests.scm
index 6f5393e3ab..07f3121083 100644
--- a/gnu/installer/tests.scm
+++ b/gnu/installer/tests.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -211,7 +212,7 @@ ROOT-PASSWORD, and USERS."
(define* (choose-services port
#:key
- (desktop-environments '("GNOME"))
+ (choose-desktop-environment? (const #f))
(choose-network-service?
(lambda (service)
(or (string-contains service "SSH")
@@ -220,10 +221,14 @@ ROOT-PASSWORD, and USERS."
(lambda (service)
(string-contains service "DHCP"))))
"Converse over PORT to choose networking services."
+ (define desktop-environments '())
+
(converse port
((checkbox-list (title "Desktop environment") (text _)
- (items _))
- desktop-environments)
+ (items ,services))
+ (let ((services* (filter choose-desktop-environment? services)))
+ (set! desktop-environments services*)
+ services*))
((checkbox-list (title "Network service") (text _)
(items ,services))
(filter choose-network-service? services))
--
2.25.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [bug#40207] [PATCH 2/2] tests: install: Add %test-gui-installed-desktop-os-encrypted.
2020-03-24 8:36 ` [bug#40207] [PATCH 1/2] installer: tests: Use a filter to select desktop-environments Mathieu Othacehe
@ 2020-03-24 8:36 ` Mathieu Othacehe
2020-03-24 10:38 ` Ludovic Courtès
2020-03-24 10:31 ` [bug#40207] [PATCH 1/2] installer: tests: Use a filter to select desktop-environments Ludovic Courtès
1 sibling, 1 reply; 9+ messages in thread
From: Mathieu Othacehe @ 2020-03-24 8:36 UTC (permalink / raw)
To: 40207; +Cc: Mathieu Othacehe
* gnu/tests/install.scm (run-install): Make sure that the default target-size
is used if #f is passed,
(gui-test-program): add a desktop? argument, and pass it to choose-services,
(guided-installation-test): add desktop? and target-size arguments. If
desktop? is #t, make sure that all desktop-environments are available. Pass
target-size to run-install call and desktop? to gui-test-program call.
(%test-gui-installed-desktop-os-encrypted): New variable.
---
gnu/tests/install.scm | 90 +++++++++++++++++++++++++++++++++++--------
1 file changed, 73 insertions(+), 17 deletions(-)
diff --git a/gnu/tests/install.scm b/gnu/tests/install.scm
index 83988873c2..9a4b36d5e7 100644
--- a/gnu/tests/install.scm
+++ b/gnu/tests/install.scm
@@ -32,15 +32,23 @@
#:use-module (gnu packages cryptsetup)
#:use-module (gnu packages linux)
#:use-module (gnu packages ocr)
+ #:use-module (gnu packages openbox)
#:use-module (gnu packages package-management)
+ #:use-module (gnu packages ratpoison)
+ #:use-module (gnu packages suckless)
#:use-module (gnu packages virtualization)
+ #:use-module (gnu packages wm)
+ #:use-module (gnu packages xorg)
+ #:use-module (gnu services desktop)
#:use-module (gnu services networking)
+ #:use-module (gnu services xorg)
#:use-module (guix store)
#:use-module (guix monads)
#:use-module (guix packages)
#:use-module (guix grafts)
#:use-module (guix gexp)
#:use-module (guix utils)
+ #:use-module (srfi srfi-1)
#:export (%test-installed-os
%test-installed-extlinux-os
%test-iso-image-installer
@@ -52,7 +60,8 @@
%test-jfs-root-os
%test-gui-installed-os
- %test-gui-installed-os-encrypted))
+ %test-gui-installed-os-encrypted
+ %test-gui-installed-desktop-os-encrypted))
;;; Commentary:
;;;
@@ -203,13 +212,14 @@ reboot\n")
(gnu installer tests)
(guix combinators))))
(installation-disk-image-file-system-type "ext4")
- (target-size (* 2200 MiB)))
+ (target-size #f))
"Run SCRIPT (a shell script following the system installation procedure) in
OS to install TARGET-OS. Return a VM image of TARGET-SIZE bytes containing
the installed system. The packages specified in PACKAGES will be appended to
packages defined in installation-os."
- (mlet* %store-monad ((_ (set-grafting #f))
+ (mlet* %store-monad ((target-size -> (or target-size (* 2200 MiB)))
+ (_ (set-grafting #f))
(system (current-system))
(target (operating-system-derivation target-os))
@@ -941,7 +951,10 @@ build (current-guix) and then store a couple of full system images.")
(define %root-password "foo")
-(define* (gui-test-program marionette #:key (encrypted? #f))
+(define* (gui-test-program marionette
+ #:key
+ (desktop? #f)
+ (encrypted? #f))
#~(let ()
(define (screenshot file)
(marionette-control (string-append "screendump " file)
@@ -998,7 +1011,8 @@ build (current-guix) and then store a couple of full system images.")
(screenshot "installer-services.ppm")
(marionette-eval* '(choose-services installer-socket
- #:desktop-environments '()
+ #:choose-desktop-environment?
+ (const #$desktop?)
#:choose-network-service?
(const #f))
#$marionette)
@@ -1038,7 +1052,11 @@ build (current-guix) and then store a couple of full system images.")
(gnu installer tests)
(guix combinators))))
-(define* (guided-installation-test name #:key encrypted?)
+(define* (guided-installation-test name
+ #:key
+ (desktop? #f)
+ encrypted?
+ (target-size #f))
(define os
(operating-system
(inherit %minimal-os)
@@ -1055,26 +1073,56 @@ build (current-guix) and then store a couple of full system images.")
(supplementary-groups
'("wheel" "audio" "video"))))
%base-user-accounts))
+ (keyboard-layout (and desktop?
+ (keyboard-layout "us" "altgr-intl")))
;; The installer does not create a swap device in guided mode with
;; encryption support.
(swap-devices (if encrypted? '() '("/dev/vdb2")))
- (services (cons (service dhcp-client-service-type)
- (operating-system-user-services %minimal-os)))))
+
+ ;; Make sure that all the packages and services that may be used by the
+ ;; graphical installer are available.
+ (packages (append
+ (if desktop?
+ (list openbox awesome i3-wm i3status
+ dmenu st ratpoison xterm)
+ '())
+ %base-packages))
+ (services
+ (if desktop?
+ (append
+ (list (service gnome-desktop-service-type)
+ (service xfce-desktop-service-type)
+ (service mate-desktop-service-type)
+ (service enlightenment-desktop-service-type)
+ (set-xorg-configuration
+ (xorg-configuration
+ (keyboard-layout keyboard-layout)))
+ (service marionette-service-type
+ (marionette-configuration
+ (imported-modules '((gnu services herd)
+ (guix build utils)
+ (guix combinators))))))
+ %desktop-services)
+ (cons (service dhcp-client-service-type)
+ (operating-system-user-services %minimal-os))))))
(system-test
(name name)
(description
"Install an OS using the graphical installer and test it.")
(value
- (mlet* %store-monad ((image (run-install os '(this is unused)
- #:script #f
- #:os installation-os-for-gui-tests
- #:gui-test
- (lambda (marionette)
- (gui-test-program
- marionette
- #:encrypted? encrypted?))))
- (command (qemu-command/writable-image image)))
+ (mlet* %store-monad
+ ((image (run-install os '(this is unused)
+ #:script #f
+ #:os installation-os-for-gui-tests
+ #:target-size target-size
+ #:gui-test
+ (lambda (marionette)
+ (gui-test-program
+ marionette
+ #:desktop? desktop?
+ #:encrypted? encrypted?))))
+ (command (qemu-command/writable-image image)))
(run-basic-test os command name
#:initialization (and encrypted? enter-luks-passphrase)
#:root-password %root-password)))))
@@ -1087,4 +1135,12 @@ build (current-guix) and then store a couple of full system images.")
(guided-installation-test "gui-installed-os-encrypted"
#:encrypted? #t))
+;; Building a desktop image is very time and space consuming. Install all
+;; desktop environments in a single test to reduce the overhead.
+(define %test-gui-installed-desktop-os-encrypted
+ (guided-installation-test "gui-installed-desktop-os-encrypted"
+ #:desktop? #t
+ #:encrypted? #t
+ #:target-size (* 9000 MiB)))
+
;;; install.scm ends here
--
2.25.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [bug#40207] [PATCH 1/2] installer: tests: Use a filter to select desktop-environments.
2020-03-24 8:36 ` [bug#40207] [PATCH 1/2] installer: tests: Use a filter to select desktop-environments Mathieu Othacehe
2020-03-24 8:36 ` [bug#40207] [PATCH 2/2] tests: install: Add %test-gui-installed-desktop-os-encrypted Mathieu Othacehe
@ 2020-03-24 10:31 ` Ludovic Courtès
2020-03-24 10:35 ` Mathieu Othacehe
1 sibling, 1 reply; 9+ messages in thread
From: Ludovic Courtès @ 2020-03-24 10:31 UTC (permalink / raw)
To: Mathieu Othacehe; +Cc: 40207
Hi Mathieu,
Mathieu Othacehe <m.othacehe@gmail.com> skribis:
> * gnu/installer/tests.scm (choose-services): Turn desktop-environments list
> into a choose-desktop-environment procedure. This way, it is easier to select
> all desktop-environments or none, in the same way as choose-network-service?
> and choose-network-management-tool? arguments.
[...]
> + (let ((services* (filter choose-desktop-environment? services)))
> + (set! desktop-environments services*)
> + services*))
Maybe rename ‘services*’ to ‘desktops’?
‘set!’ hurts my eyes :-) but let’s get over it. Eventually we can
change convert to run expressions in ‘%state-monad’ or something.
Ludo’.
^ permalink raw reply [flat|nested] 9+ messages in thread
* [bug#40207] [PATCH 1/2] installer: tests: Use a filter to select desktop-environments.
2020-03-24 10:31 ` [bug#40207] [PATCH 1/2] installer: tests: Use a filter to select desktop-environments Ludovic Courtès
@ 2020-03-24 10:35 ` Mathieu Othacehe
0 siblings, 0 replies; 9+ messages in thread
From: Mathieu Othacehe @ 2020-03-24 10:35 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 40207
Hey!
> Maybe rename ‘services*’ to ‘desktops’?
>
> ‘set!’ hurts my eyes :-) but let’s get over it. Eventually we can
> change convert to run expressions in ‘%state-monad’ or something.
Heh, also feel terribly guilty when using it :)
Thanks for reviewing,
Mathieu
^ permalink raw reply [flat|nested] 9+ messages in thread
* [bug#40207] [PATCH 2/2] tests: install: Add %test-gui-installed-desktop-os-encrypted.
2020-03-24 8:36 ` [bug#40207] [PATCH 2/2] tests: install: Add %test-gui-installed-desktop-os-encrypted Mathieu Othacehe
@ 2020-03-24 10:38 ` Ludovic Courtès
2020-03-25 17:57 ` Mathieu Othacehe
0 siblings, 1 reply; 9+ messages in thread
From: Ludovic Courtès @ 2020-03-24 10:38 UTC (permalink / raw)
To: Mathieu Othacehe; +Cc: 40207
Mathieu Othacehe <m.othacehe@gmail.com> skribis:
> * gnu/tests/install.scm (run-install): Make sure that the default target-size
> is used if #f is passed,
> (gui-test-program): add a desktop? argument, and pass it to choose-services,
> (guided-installation-test): add desktop? and target-size arguments. If
> desktop? is #t, make sure that all desktop-environments are available. Pass
> target-size to run-install call and desktop? to gui-test-program call.
> (%test-gui-installed-desktop-os-encrypted): New variable.
[...]
> - (target-size (* 2200 MiB)))
> + (target-size #f))
> "Run SCRIPT (a shell script following the system installation procedure) in
> OS to install TARGET-OS. Return a VM image of TARGET-SIZE bytes containing
> the installed system. The packages specified in PACKAGES will be appended to
> packages defined in installation-os."
>
> - (mlet* %store-monad ((_ (set-grafting #f))
> + (mlet* %store-monad ((target-size -> (or target-size (* 2200 MiB)))
[...]
> +(define* (guided-installation-test name
> + #:key
> + (desktop? #f)
> + encrypted?
> + (target-size #f))
What about giving #:target-size a default value here so that the hunk
above in unnecessary?
> (define os
> (operating-system
> (inherit %minimal-os)
> @@ -1055,26 +1073,56 @@ build (current-guix) and then store a couple of full system images.")
> (supplementary-groups
> '("wheel" "audio" "video"))))
> %base-user-accounts))
> + (keyboard-layout (and desktop?
> + (keyboard-layout "us" "altgr-intl")))
> ;; The installer does not create a swap device in guided mode with
> ;; encryption support.
> (swap-devices (if encrypted? '() '("/dev/vdb2")))
> - (services (cons (service dhcp-client-service-type)
> - (operating-system-user-services %minimal-os)))))
> +
> + ;; Make sure that all the packages and services that may be used by the
> + ;; graphical installer are available.
> + (packages (append
> + (if desktop?
> + (list openbox awesome i3-wm i3status
> + dmenu st ratpoison xterm)
> + '())
> + %base-packages))
> + (services
> + (if desktop?
> + (append
> + (list (service gnome-desktop-service-type)
> + (service xfce-desktop-service-type)
> + (service mate-desktop-service-type)
> + (service enlightenment-desktop-service-type)
> + (set-xorg-configuration
> + (xorg-configuration
> + (keyboard-layout keyboard-layout)))
> + (service marionette-service-type
> + (marionette-configuration
> + (imported-modules '((gnu services herd)
> + (guix build utils)
> + (guix combinators))))))
> + %desktop-services)
> + (cons (service dhcp-client-service-type)
> + (operating-system-user-services %minimal-os))))))
What about making a separate OS definition for the desktop installation
case? We’d move the ‘os’ variable to the top-level and add an ‘os’
parameter to ‘guided-installation-test’.
Having two separate OS definitions (one for desktop install, one for
“bare-bones” install) should be clearer than having a single definition
with conditionals.
> +;; Building a desktop image is very time and space consuming. Install all
> +;; desktop environments in a single test to reduce the overhead.
> +(define %test-gui-installed-desktop-os-encrypted
> + (guided-installation-test "gui-installed-desktop-os-encrypted"
> + #:desktop? #t
> + #:encrypted? #t
> + #:target-size (* 9000 MiB)))
Wo0t!
Thanks a lot for working on it! You can stop by on #guix if you feel
like it so we’re all less lonely during confinement. :-)
Ludo’.
^ permalink raw reply [flat|nested] 9+ messages in thread
* [bug#40207] [PATCH 2/2] tests: install: Add %test-gui-installed-desktop-os-encrypted.
2020-03-24 10:38 ` Ludovic Courtès
@ 2020-03-25 17:57 ` Mathieu Othacehe
2020-03-25 21:41 ` Ludovic Courtès
0 siblings, 1 reply; 9+ messages in thread
From: Mathieu Othacehe @ 2020-03-25 17:57 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 40207
Hey,
> What about making a separate OS definition for the desktop installation
> case? We’d move the ‘os’ variable to the top-level and add an ‘os’
> parameter to ‘guided-installation-test’.
>
> Having two separate OS definitions (one for desktop install, one for
> “bare-bones” install) should be clearer than having a single definition
> with conditionals.
I fixed all your remarks. But there's still an issue, the size of the
installation image is guessed badly in "run-install" for
"%test-gui-installed-desktop-os-encrypted"
--8<---------------cut here---------------start------------->8---
(image (system-disk-image
(operating-system-with-gc-roots
os (list target))
#:disk-image-size 'guess ;guess is too low.
#:file-system-type
installation-disk-image-file-system-type)))
--8<---------------cut here---------------end--------------->8---
applying the dirty snippet below fixes it, but you may have a better idea?
--8<---------------cut here---------------start------------->8---
--- a/gnu/build/vm.scm
+++ b/gnu/build/vm.scm
@@ -233,7 +233,7 @@ deduplicates files common to CLOSURE and the rest of PREFIX."
"Return the estimated size of a partition that can store the store items
given by GRAPHS, a list of file names produced by #:references-graphs."
;; Simply add a 25% overhead.
- (round (* 1.25 (closure-size graphs))))
+ (round (* 1.30 (closure-size graphs))))
(define* (initialize-partition-table device partitions
--8<---------------cut here---------------end--------------->8---
Thanks,
Mathieu
^ permalink raw reply [flat|nested] 9+ messages in thread
* [bug#40207] [PATCH 2/2] tests: install: Add %test-gui-installed-desktop-os-encrypted.
2020-03-25 17:57 ` Mathieu Othacehe
@ 2020-03-25 21:41 ` Ludovic Courtès
2020-03-26 10:54 ` Mathieu Othacehe
0 siblings, 1 reply; 9+ messages in thread
From: Ludovic Courtès @ 2020-03-25 21:41 UTC (permalink / raw)
To: Mathieu Othacehe; +Cc: 40207
Hi!
Mathieu Othacehe <m.othacehe@gmail.com> skribis:
>> What about making a separate OS definition for the desktop installation
>> case? We’d move the ‘os’ variable to the top-level and add an ‘os’
>> parameter to ‘guided-installation-test’.
>>
>> Having two separate OS definitions (one for desktop install, one for
>> “bare-bones” install) should be clearer than having a single definition
>> with conditionals.
>
> I fixed all your remarks. But there's still an issue, the size of the
> installation image is guessed badly in "run-install" for
> "%test-gui-installed-desktop-os-encrypted"
>
> (image (system-disk-image
> (operating-system-with-gc-roots
> os (list target))
> #:disk-image-size 'guess ;guess is too low.
> #:file-system-type
> installation-disk-image-file-system-type)))
>
>
> applying the dirty snippet below fixes it, but you may have a better idea?
>
> --- a/gnu/build/vm.scm
> +++ b/gnu/build/vm.scm
> @@ -233,7 +233,7 @@ deduplicates files common to CLOSURE and the rest of PREFIX."
> "Return the estimated size of a partition that can store the store items
> given by GRAPHS, a list of file names produced by #:references-graphs."
> ;; Simply add a 25% overhead.
> - (round (* 1.25 (closure-size graphs))))
> + (round (* 1.30 (closure-size graphs))))
Weird, the 25% hack had always worked fine.
I don’t have a better idea though. Perhaps it’s better to pass an
explicit size in ‘run-install’ than to modify the 25% hack above?
Thanks,
Ludo’.
^ permalink raw reply [flat|nested] 9+ messages in thread
* [bug#40207] [PATCH 2/2] tests: install: Add %test-gui-installed-desktop-os-encrypted.
2020-03-25 21:41 ` Ludovic Courtès
@ 2020-03-26 10:54 ` Mathieu Othacehe
0 siblings, 0 replies; 9+ messages in thread
From: Mathieu Othacehe @ 2020-03-26 10:54 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 40207
Hey,
> I don’t have a better idea though. Perhaps it’s better to pass an
> explicit size in ‘run-install’ than to modify the 25% hack above?
Seems fair, fixed and pushed!
Thanks,
Mathieu
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2020-03-26 10:55 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-03-24 8:34 [bug#40207] [PATCH 0/2] Add a desktop graphical installer test Mathieu Othacehe
2020-03-24 8:36 ` [bug#40207] [PATCH 1/2] installer: tests: Use a filter to select desktop-environments Mathieu Othacehe
2020-03-24 8:36 ` [bug#40207] [PATCH 2/2] tests: install: Add %test-gui-installed-desktop-os-encrypted Mathieu Othacehe
2020-03-24 10:38 ` Ludovic Courtès
2020-03-25 17:57 ` Mathieu Othacehe
2020-03-25 21:41 ` Ludovic Courtès
2020-03-26 10:54 ` Mathieu Othacehe
2020-03-24 10:31 ` [bug#40207] [PATCH 1/2] installer: tests: Use a filter to select desktop-environments Ludovic Courtès
2020-03-24 10:35 ` Mathieu Othacehe
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).