* gnu/installer/newt/partition.scm (run-partioning-page): When METHOD is
'manual, use 'filter-map' on DEVICES, not 'map', since 'disk-new' can
return #f.
* gnu/installer/newt/keymap.scm (sort-layouts): New procedure,
(sort-variants): new procedure,
(run-keymap-page): use the two procedures above to sort layouts and variants.
find-partition-by-luks-uuid.
* gnu/installer/parted.scm (user-partition->mapped-device): Replace
read-luks-partition-uuid by find-partition-by-luks-uuid,
(user-partition->file-system): only compute uuid if the partition
is not encrypted.
Add a specific procedure to read luks partition uuid.
* gnu/build/file-systems.scm (luks-partition-field-reader): New procedure ...
(luks-partition-uuid-predicate): ... used here,
(read-luks-partition-uuid): new exported procedure.
* gnu/installer.scm (set-installer-path): Add cryptsetup.
* gnu/installer/newt/partition.scm (prompt-luks-passwords): New procedure,
(run-partioning-page): Add the possibility to set encryption to "On" on a
partition and choose a label, add a new partition scheme: "Guided - using the
entire disk with encryption", prompt for encryption passwords before
proceeding to formating.
* gnu/installer/parted.scm (<user-partition>)[crypt-label],
[crypt-password]: New fields,
(partition-description): add the encryption label,
(user-partition-description): add an encryption field,
(auto-partition): add two partitioning schemes: entire-crypted-root and
entire-crypted-root-home,
(call-with-luks-key-file): new procedure,
(user-partition-upper-path): new procedure,
(luks-format-and-open): new procedure,
(luks-close): new procedure,
(format-user-partitions): format and open luks partitions before creating
file-system.
(mount-user-partitions): use the path returned by user-partition-upper-path,
(umount-user-partitions): close the luks partitions,
(user-partition->file-system): set device field to label for luks partitions
and to uuid for the rest,
(user-partition->mapped-device): new procedure,
(user-partitions->configuration): add mapped-devices field.
* gnu/installer/parted.scm (start-swaping): Remove it,
(stop-swaping): Remove it,
(start-swapping): New procedure using swapon syscall,
(stop-swapping): New procedure using swapoff syscall,
(with-mounted-partitions): Use previous start-swapping and stop-swapping
procedures.
* gnu/installer/newt/partition.scm (run-disk-page)[guided?]: New argument.
Use guided? to determine if we are proceeding to a guided or a manuel
partitioning and precise it the title and info-text.
* gnu/installer.scm (installer-program): Write the backtrace in
"/tmp/last-installer-error" and pass the filename to installer-exit-error.
* gnu/installer/newt.scm (exit-error): Display the file passed above in a textbox.
* gnu/installer/newt/partition.scm (run-label-page): Pass the button text as
an argument,
(run-disk-page): Call run-label-page with the appropriate button text.
If no technology is detected, ask the user if he prefers to continue or to
exit the installer.
* gnu/installer/newt/network.scm (run-technology-page): Run a choice-window if
technology-items procedure returns an empty list.
kmscon-update-keymap fails on non kmscon terminals because KEYMAP_UPDATE
environment variable is not defined. As it is convenient to test the installer
on a regular terminal, do nothing if KEYMAP_UPDATE is missing.
* gnu/installer/keymap.scm (kmscon-update-keymap): Do nothing if KEYMAP_UPDATE
is not defined.
* gnu/installer/newt/locale.scm (sort-languages): New procedure ...
(run-locale-page)[locale-steps]: ... used here to make english the default
language.
* gnu/installer/newt/locale.scm (run-language-page): Be more specific about
what is a locale and what are the different steps involved in the info messages.
* gnu/installer.scm (installer-steps): Run partitionment step after keymap
step, so that the keyboard is correctly mapped when filling the mount-point
entry in partitionment page.
* gnu/installer/hostname.scm: New file.
* gnu/installer.scm (installer-program): Use new module above.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add new file.
* po/guix/POTFILES.in: Add new file.
Suppose that the keyboard model is "pc105".
* gnu/installer.scm (apply-keymap): Remove model ...
* gnu/installer/newt/keymap.scm (run-keymap-page): passed here.
(run-model-page): remove procedure
* gnu/installer/record.scm (installer): Edit keymap-page prototype in comment.
* gnu/installer/keymap.scm (default-keyboard-model): New exported parameter.
For some mysterious reason, calling 'setlocale' as first instruction of
installer-builder does not install unicode support correctly. So set LANG env
variable and start the installer until this is understood.
* gnu/installer.scm (installer-program): Wrap installer-builder to have the
opportunity to set LANG environment variable before starting the installer.
* gnu/installer.scm: Rename to ...
* gnu/installer/record.scm: ... this.
* gnu/installer/build-installer.scm: Move everything to the build side and
rename to gnu/installer.scm.
* gnu/installer/newt.scm: Remove all the gexps and add depencies to newt
modules as this code will only be used on the build side by now.
* gnu/local.mk (GNU_SYSTEM_MODULES): Adapt it,
(dist_installer_DATA): New rule to install installer's aux-files.
* gnu/system/install.scm (%installation-services): Use only
'installer-program' from (gnu installer). The installer is now choosen on the
build side.
* guix/self.scm (*system-modules*): Restore previous behaviour and add all
installer files to #:extra-files field of the scheme-node.
* po/guix/POTFILES.in: Adapt it.
The welcome page is the only page using absolute positioning for the newt
components, so that the page occupies all the screen space. This is becoming
too hard to manage, so switch to grid management like elsewhere, even if the
result is less appealing.
Also add an info text to the page with a mention on how to switch back to the
original installer.
* gnu/installer/newt/welcome.scm (run-menu-page): Use a vertically stacked
grid instead of hard window placement.
Source /etc/environment just before starting the installer. The login program
is supposed to load the environment variables of this file through PAM, but as
we replace it by the installer, they are no longer available. This is mostly
useful for the LANG environment variable.
* gnu/installer/build-installer.scm (installer-program-launcher): New exported
procedure.
* gnu/system/install.scm (%installation-services): Restore most of the origin
code. kmscon is only started on TTY1, and the graphical installer is the
login-program.
Only build installer if "--enable-installer" is passed. In that case only, the
support for Guile-newt becomes mandatory.
* configure.ac: Add --enable-installer argument. Export ENABLE_INSTALLER
conditional according to the argument value.
* gnu/local.mk (GNU_SYSTEM_MODULES): Remove installer modules and build them
only if ENABLE_INSTALLER is set.
* configure.ac: Require that guile-newt is available.
* gnu/installer.scm: New file.
* gnu/installer/aux-files/logo.txt: New file.
* gnu/installer/build-installer.scm: New file.
* gnu/installer/connman.scm: New file.
* gnu/installer/keymap.scm: New file.
* gnu/installer/locale.scm: New file.
* gnu/installer/newt.scm: New file.
* gnu/installer/newt/ethernet.scm: New file.
* gnu/installer/newt/hostname.scm: New file.
* gnu/installer/newt/keymap.scm: New file.
* gnu/installer/newt/locale.scm: New file.
* gnu/installer/newt/menu.scm: New file.
* gnu/installer/newt/network.scm: New file.
* gnu/installer/newt/page.scm: New file.
* gnu/installer/newt/timezone.scm: New file.
* gnu/installer/newt/user.scm: New file.
* gnu/installer/newt/utils.scm: New file.
* gnu/installer/newt/welcome.scm: New file.
* gnu/installer/newt/wifi.scm: New file.
* gnu/installer/steps.scm: New file.
* gnu/installer/timezone.scm: New file.
* gnu/installer/utils.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add previous files.
* gnu/system.scm: Export %root-account.
* gnu/system/install.scm (%installation-services): Use kmscon instead of linux
VT for all tty.
(installation-os)[users]: Add the graphical installer as shell of the root
account.
[packages]: Add font related packages.
* po/guix/POTFILES.in: Add installer files.
kmscon does not require that virtual terminals run in UTF-8 mode.
* gnu/services/base.scm (kmscon-service-type): Remove virtual-terminal from
requirement list.
The error which inhibited running the tests no longer occurs
in 5.49.0, although now no tests are found at all. Since no tests
are found now, the phase 'check-setup can be removed, too,
and thus the 'arguments' at all.
* gnu/packages/kde-frameworks.scm(kirigami)[arguments]: Remove.
Enable running the tests and blacklist the one failing test.
* gnu/package/kde-frameworks.scm(kcoreaddons)[arguments]
<#:tests?>: Remove. <#:phases>: Add phase 'blacklist-failing-test.
* gnu/packages/emacs.scm: Move almost all packages from here...
* gnu/packages/emacs-xyz.scm: ...to this new module.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
* gnu/packages/ocaml.scm,
gnu/packages/package-management.scm,
gnu/packages/statistics.scm: Update module references.
The 'device' field had been deprecated in commit
045ebb3e58 (August 2017).
* gnu/bootloader.scm (<bootloader-configuration>)[device]: Remove.
[target]: Change getter to 'bootstrap-configuration-target'.
(bootstrap-configuration-target): Remove.
* gnu/packages.scm (fold-available-packages): New procedure.
* guix/scripts/package.scm (process-query): Use it instead of
'fold-packages'.
* tests/packages.scm ("fold-available-packages with/without cache"):
New test.
That way 'guix edit' doesn't need to load any package module.
* gnu/packages.scm (find-package-locations, specification->location):
New procedures.
* guix/scripts/edit.scm (package->location-specification): Rename to...
(location->location-specification): ... this. Expect a location object
instead of a package.
(guix-edit): Use 'specification->location' instead of
'specification->package'.
* tests/packages.scm ("find-package-locations")
("find-package-locations with cache")
("specification->location"): New tests.
* gnu/packages.scm (cache-is-authoritative?, load-package-cache)
(cache-lookup, generate-package-cache): New procedures.
(%package-cache-file): New variable.
(find-packages-by-name): Rename to...
(find-packages-by-name/direct): ... this.
(find-packages-by-name): Rewrite to use the package cache when
'cache-is-authoritative?' returns true.
* tests/packages.scm ("find-packages-by-name + version, with cache")
("find-packages-by-name with cache"): New tests.
* guix/channels.scm (package-cache-file): New procedure.
(%channel-profile-hooks): New variable.
(channel-instances->derivation): Use it in #:hooks.
* guix/scripts/package.scm (build-and-use-profile): Add #:hooks and
honor it.
* guix/scripts/pull.scm (build-and-install): Pass #:hooks to
UPDATE-PROFILE.
Since commit 9ffc1c00e5,
'find-newest-available-packages' and 'find-packages-by-name' were both
building a vhash mapping package names to packages. This factorizes
this bit, also reducing I/O, CPU, and memory usage.
* gnu/packages.scm (find-best-packages-by-name): Remove.
(find-best-packages-by-name): Use 'find-packages-by-name' instead of
'find-newest-available-packages'.
Reported by Meiyo Peng <meiyo.peng@gmail.com>.
* gnu/packages/docker.scm (docker-cli)[arguments]<#:phases>[install]:
Don't install the same executable twice.
* gnu/tests/docker.scm (run-docker-test): Add parameters. Load and run
docker container. Check response of guest guile.
(build-tarball&run-docker-test): New procedure.
(%test-docker): Use it.
[description]: Modify.
This was forgotten in ab533c613e.
* gnu/local.mk (dist_patch_DATA): Add
"allegro-fix-compilation-mesa-18.2.5-and-later.patch".
Signed-off-by: Jonathan Brielmaier <jbrielmaier@suse.de>