mbox series

[bug#53063,wip-harden-installer,00/14] General improvements to the installer

Message ID cover.1641507696.git.dev@jpoiret.xyz
Headers show
Series General improvements to the installer | expand

Message

Josselin Poiret Jan. 6, 2022, 10:45 p.m. UTC
Hello everyone,

Here are some miscellaneous improvements to the installer.  Here is a
run down of the bigger changes:

* Patches 2 to 4 move logging from simply putting everything in syslog
  to a more flexible approach, logging lines to multiple targets.  One
  new target is a per-install /tmp/installer.{DATETIME}.log.

* Patches 5 and 6 add a new alternative to invoke (or system*), which
  forks to a new child process with a pipe back to the main process,
  sets stdout and stderr to that pipe followed by execlp'ing the
  command, while the main process reads from the pipe and applies some
  configurable procedures to each line of output.  This lets us log
  all external command output using the same facility as the installer
  itself, while displaying everything to the user.  Patch 6 is
  "optional", as it is there simply to avoid getting "Error in
  finalization thread: Success".

* Patches 7 to 9 add a parameter run-command-in-installer, that is an
  installer-specific way of running external commands.  Here, the Newt
  installer one simply suspends newt and runs the command in the
  terminal.

* Patch 13 modifies the installer step aborting mechanism to
  use general prompts instead of the exception system.  This was done
  so that a following patchset (which will hopefully be coming soon)
  is able to abort an installer step from an exception handling code
  that is outside of the run-installer-steps.  You could also say that
  it is cleaner :).

* Patch 14 adds a new confirmation page before running any external
  command, with the possibility to abort the current installer step.

The next step should be moving installer-program in (gnu installer) to
use SRFI-34/35 exception handling over the current throw/catch one, as
the current code doesn't display those properly.

Josselin Poiret (14):
  installer: Use define instead of let at top-level.
  installer: Generalize logging facility.
  installer: Use new installer-log-line everywhere.
  installer: Un-export syslog syntax.
  installer: Capture external commands output.
  installer: Disable automatic finalization for child thread.
  installer: Add installer-specific run command process.
  installer: Use run-command-in-installer in (gnu installer parted).
  installer: Use the command capturing facility for guix init.
  installer: Raise condition when mklabel fails.
  installer: Fix run-file-textbox-page when edit-button is #f.
  installer: Replace run-command by invoke in newt/page.scm.
  installer: Use named prompt to abort or break installer steps.
  installer: Add confirmation page when running external commands.

 gnu/installer.scm                |  15 ++-
 gnu/installer/final.scm          |  23 +---
 gnu/installer/newt.scm           |  22 ++-
 gnu/installer/newt/ethernet.scm  |   8 +-
 gnu/installer/newt/final.scm     |  22 +--
 gnu/installer/newt/keymap.scm    |   8 +-
 gnu/installer/newt/locale.scm    |  25 ++--
 gnu/installer/newt/network.scm   |  16 +--
 gnu/installer/newt/page.scm      |  22 +--
 gnu/installer/newt/partition.scm |  10 +-
 gnu/installer/newt/services.scm  |  16 +--
 gnu/installer/newt/timezone.scm  |   4 +-
 gnu/installer/newt/user.scm      |   5 +-
 gnu/installer/newt/welcome.scm   |   2 +-
 gnu/installer/newt/wifi.scm      |   4 +-
 gnu/installer/parted.scm         | 104 +++++++-------
 gnu/installer/record.scm         |   7 +-
 gnu/installer/steps.scm          | 127 ++++++++---------
 gnu/installer/utils.scm          | 225 +++++++++++++++++++++++++++----
 19 files changed, 389 insertions(+), 276 deletions(-)