Fixes: <https://issues.guix.gnu.org/44101>.
* gnu/build/bootloader.scm (write-file-on-device): Pass 'no-fail flag instead
of 'no-create. Use a latin-1 transcoder.
* guix/scripts/system/reconfigure.scm (install-bootloader-program): Add a
"disk-installer" argument and use it as a fallback.
(install-bootloader): Adapt accordingly.
* gnu/tests/reconfigure.scm (run-install-bootloader-test): Ditto.
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.
Currently, if the postgresql package major version changes, this is going to
break the service upon upgrade, because PostgreSQL will reject the data files
from the differing major version of the service.
Because it's important to either keep running a particular major version, or
intentionally upgrade, I think the configuration would be better with no
default. I think this is also going to be helpful when trying to assist users
upgrading PostgreSQL.
* gnu/services/databases.scm (<postgresql-configuration>): Remove default for
postgresql.
(postgresql-service-type): Remove the default value.
* gnu/tests/databases.scm (%postgresql-os): Update accordingly.
* gnu/tests/guix.scm (%guix-data-service-os): Update accordingly.
* gnu/tests/monitoring.scm (%zabbix-os): Update accordingly.
* gnu/tests/web.scm (patchwork-os): Update accordingly.
* doc/guix.texi (PostgreSQL): Update accordingly.
As I'm looking at removing the procedure, in favour of always using the
service type.
* gnu/tests/monitoring.scm (%zabbix-os): Use (service postgresql-service-type)
rather than (postgresql-service).
Using the new compressed-qcow2 image breaks this test.
* gnu/tests/virtualization.scm (hurd-vm-disk-image-raw): New procedure.
(%childhurd-os): Use it.
* gnu/system/image.scm (image-with-os): New macro. Rename the old
"image-with-os" procedure to ...
(image-with-os*): ... this new procedure,
(system-image): adapt according,
(raw-image-type, iso-image-type, uncompressed-iso-image-type
%image-types): new variables,
(lookup-image-type-by-name): new procedure.
(find-image): remove it.
* gnu/system/images/hurd.scm (hurd-image-type): New variable,
use it to define ...
(hurd-disk-image): ... this variable, using "os->image" procedure.
* gnu/tests/install.scm (run-install): Rename
installation-disk-image-file-system-type parameter to installation-image-type,
use os->config instead of find-image to compute the image passed to system-image,
(%test-iso-image-installer) adapt accordingly,
(guided-installation-test): ditto.
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
* gnu/tests/base.scm (run-basic-test): Add a 'desktop?' argument. Wait 30
seconds before trying to switch to TTY1 on desktop.
* gnu/tests/install.scm (guided-installation-test): Use 512MiB of RAM and pass
the desktop argument to "run-basic-test".
* gnu/tests/nfs.scm (run-nfs-root-fs-test): New procedure.
(%test-nfs-root-fs): New variable. Export it.
Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
* gnu/services/ganeti.scm (<ganeti-rapi-configuration>): Set SSL? to #t.
* gnu/tests/ganeti.scm (%ganeti-os): Set SSL? to #f.
* doc/guix.texi (Virtualization Services): Adjust accordingly.
This helps find the (json) module in the virtual machine.
* gnu/tests/docker.scm (build-tarball&run-docker-test,
run-docker-system-test): Replace guile-2.2 with guile-3.0.
Record type descriptors were made private in
a143e92446, but a usage of them was
forgotten in the tests files.
* gnu/tests/web.scm (patchwork-initial-database-setup-service): Use
accessors to access field values instead of unexported type descriptor.
Commits 0eed771275 and
614a1e3fa2 caused a ~150M increase of the image
size. Increase the image size limit by 200M until the situation is addressed.
* gnu/tests/install.scm (%simple-installation-script,
%extlinux-gpt-installation-script, %simple-installation-script-for-/dev/vda,
%raid-root-installation-script, %encrypted-root-installation-script): Increase
image size limit by 200M.
If the marionette shuts down before the script return is received, then status
will be <eof>.
* gnu/tests/install.scm (run-install): Allow status to be the <eof> object.
Now that installing Grub on raw disk-images is supported, we do not need to
rely on (gnu system vm) module.
* gnu/system/image.scm (make-system-image): Rename to ...
(system-image): ... this, and remove the compatibility wrapper.
(find-image): Turn to a monadic procedure. This will become useful when
introducing Hurd support, to be able to detect the target system.
* gnu/ci.scm (qemu-jobs): Use lower-object now that system-image returns a
file-like object.
* gnu/tests/install.scm (run-install): Ditto.
* guix/scripts/system.scm (system-derivation-for-action): Add a 'base-image'
argument,
(perform-action): adapt accordingly.
* gnu/bootloader/grub.scm (strip-mount-point): Remove procedure.
(normalize-file): Add procedure.
(grub-configuration-file): New BTRFS-SUBVOLUME-FILE-NAME parameter. When
defined, prepend its value to the kernel and initrd file names, using the
NORMALIZE-FILE procedure. Adjust the call to EYE-CANDY to pass the
BTRFS-SUBVOLUME-FILE-NAME argument. Normalize the KEYMAP file as well.
(eye-candy): Add a BTRFS-SUBVOLUME-FILE-NAME parameter, and use it, along with
the NORMALIZE-FILE procedure, to normalize the FONT-FILE and IMAGE nested
variables. Adjust doc.
* gnu/bootloader/depthcharge.scm (depthcharge-configuration-file): Adapt.
* gnu/bootloader/extlinux.scm (extlinux-configuration-file): Likewise.
* gnu/system/file-systems.scm (btrfs-subvolume?)
(btrfs-store-subvolume-file-name): New procedures.
* gnu/system.scm (operating-system-bootcfg): Specify the Btrfs
subvolume file name the store resides on to the
`operating-system-bootcfg' procedure, using the new
BTRFS-SUBVOLUME-FILE-NAME argument.
* doc/guix.texi (File Systems): Add a Btrfs subsection to document the use of
subvolumes.
* gnu/tests/install.scm (%btrfs-root-on-subvolume-os)
(%btrfs-root-on-subvolume-os-source)
(%btrfs-root-on-subvolume-installation-script)
(%test-btrfs-root-on-subvolume-os): New variables.
Raw disk-images and ISO9660 images are created in a Qemu virtual machine. This
is quite fragile, very slow, and almost unusable without KVM.
For all these reasons, add support for host image generation. This implies the
use new image generation mechanisms.
- Raw disk images: images of partitions are created using tools such as mke2fs
and mkdosfs depending on the partition file-system type. The partition
images are then assembled into a final image using genimage.
- ISO9660 images: the ISO root directory is populated within the store. GNU
xorriso is then called on that directory, in the exact same way as this is
done in (gnu build vm) module.
Those mechanisms are built upon the new (gnu image) module.
* gnu/image.scm: New file.
* gnu/system/image.scm: New file.
* gnu/build/image: New file.
* gnu/local.mk: Add them.
* gnu/system/vm.scm (system-disk-image): Rename to system-disk-image-in-vm.
* gnu/ci.scm (qemu-jobs): Adapt to new API.
* gnu/tests/install.scm (run-install): Ditto.
* guix/scripts/system.scm (system-derivation-for-action): Ditto.
This is a follow-up of a860eddbbd. Guided
installation tests are now run from an ISO image. Hence the main block device
is vda and not vdb anymore.
* gnu/tests/install.scm (installation-target-os-for-gui-tests): Use
%minimal-os-on-vda instead of %minimal-os.
(%minimal-os-on-vda): Make sure that it replicates the config of %minimal-os.
This is a follow-up of a860eddbbd. If using an
ISO, the main disk is vda and not vdb anymore.
* gnu/tests/install.scm (installation-target-os-for-gui-tests): Use vda2 as
swap partition.
It seems that 'guix system init' is consuming more than the 800M of RAM
currently allocated. Until this is understood, bump the limit to 1.2G.
Reported here:
https://lists.gnu.org/archive/html/bug-guix/2020-04/msg00519.html
* gnu/tests/install.scm (run-install): Bump RAM to 1.2G.
This commit adjusts the upgrade-services system test to not build anything
when computing the derivation for the system test. I came across this when
looking at issues computing the system test derivations to store in the Guix
Data Service.
* gnu/tests/reconfigure.scm (run-upgrade-services-test): Remove the use of,
and definition for ensure-service-file.
operating-system's kernel.
* gnu/system.scm (package-for-kernel): New procedure.
(operating-system-directory-base-entries): Use it.
* gnu/tests/linux-module.scm: Test it.
Previously we could occasionally try to connect before the server is
actually listening, both for OpenSSH and Dropbear.
* gnu/tests/ssh.scm (run-ssh-test)["wait for port 22"]: New test.
This fixes a regression introduced in 8b9cad01e9
where ovs-vsctl would no longer be available in PATH.
* gnu/tests/networking.scm (run-openvswitch-test): Qualify "ovs-vsctl"
invocation by ungexping the OPENVSWITCH variable instead of assuming it's
available on PATH.
Fixes <https://bugs.gnu.org/25569>.
Reported by Divan Santana <divan@santanas.co.za>.
* gnu/services/base.scm (shepherd-set-http-proxy-action): New procedure.
(guix-shepherd-service): Add 'actions' field. Change 'start' to a
lambda; check the value of the "http_proxy" environment variable and
add "http_proxy" and "https_proxy" to #:environment-variables as a
function of that.
* gnu/tests/base.scm (run-basic-test)["guix-daemon set-http-proxy
action", "guix-daemon set-http-proxy action, clear"]: New tests.
* doc/guix.texi (Base Services): Document it.
Partly fixes <https://bugs.gnu.org/40405>.
Reported by Diego Nicola Barbato <dnbarbato@posteo.de>.
* gnu/services/base.scm (syslog-service-type): Change 'start' method to
set umask to #o137 before spawning syslogd.
* gnu/tests/base.scm (run-basic-test)["/var/log/messages is not
world-readable"]: New test.
* doc/guix.texi (Linux Services): Add a new subsection and document the
new service and its configuration.
* gnu/services/linux.scm (kernel-module-loader-service-type): New type.
(kernel-module-loader-shepherd-service): New procedure.
* gnu/tests/linux-modules.scm (module-loader-program): Procedure
removed.
(modules-loaded?-program): New procedure.
(run-loadable-kernel-modules-test): 'module-loader-program' procedure
replaced by the new one.
[os]: Use 'kernel-module-loader-service'.
Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
* gnu/tests/install.scm (gui-test-program): Add a desktop? argument, and pass it to choose-services,
(installation-target-os-for-gui-tests): new procedure,
(installation-target-desktop-os-for-gui-tests): new procedure,
(guided-installation-test): add target-os and desktop? arguments. Use
target-os instead of the previous os variable. Pass desktop? argument to
gui-test-program.
(%test-gui-installed-os): Adapt accordingly,
(%test-gui-installed-os-encrypted): ditto,
(%test-gui-installed-desktop-os-encrypted): new exported variable.
When marionette-eval calls fail in gui-test-program, the installation
continues which results in two scenarios:
- hang forever at the next marionette-eval call,
- keep going and start a broken installation, which is annoying because it
clears the terminal and hides the error.
Make sure that gui-test-program is exited with #f return code when one of the
marionette-eval calls fail.
* gnu/tests/install.scm (gui-test-program): Add a new macro
"marionette-eval*". Throw an exception when one on the marionette-eval calls
fail.