Subject: Re: [bug#40207] [PATCH 2/2] tests: install: Add %test-gui-installed-desktop-os-encrypted.

From: Ludovic Courtès <[email-masked]>
Date: Tue, 24 Mar 2020 11:38:12 +0100

Mathieu Othacehe <[email-masked]> 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’.