When debugging the installation tests, it can be very handy to be able to read
"run-command" output, for instance when executing "guix system init".
Introduce a new "invoke-with-log" procedure that is able to log a command
standard and error outputs to the syslog. Use it, only when running the
installation tests, to dump "run-command" output.
* gnu/installer/utils.scm (open-pipe-with-stderr, invoke-with-log): New
procedures,
(invoke-log-port): new variable,
(run-command): move to the end of the file and use invoke-with-log when
running the installation tests.
Calling "mknod" without root permissions fails. Plus those device nodes do not
appear to be needed to boot.
* gnu/build/image.scm (initialize-root-partition): Do not use
make-essential-device-nodes as default make-device-nodes procedure.
Previously it would trigger a wrong-number-of-arguments error for
'lset-intersection'.
* guix/git-authenticate.scm (commit-authorized-keys): Add case for when
'commit-parents' returns the empty list.
* guix/git.scm (commit-difference): Initialize VISITED to the closure of
OLD and EXCLUDED, as written in the docstring.
* tests/git.scm ("commit-difference, excluded commits"): Adjust
accordingly.
Commit fdcd193744 was a botched by-hand
‘merge’ that caused the default check phase to run, and fail.
* gnu/packages/linux.scm (v4l2loopback-linux-module)[arguments]:
Set #:tests? to #f.
* gnu/packages/linux (deblob-scripts-5.7): New variable.
(linux-libre-5.7-version): New variable.
(linux-libre-5.7-pristine-source): New variable.
(linux-libre-5.7-source): New variable.
(linux-libre-headers-5.7): New variable.
* gnu/packages/python-xyz.scm (python2-mechanize): Rename to ...
(python-mechanize): ... this. Update to 0.4.5.
[arguments]: Remove.
[propagated-inputs]: Add PYTHON-HTML5LIB.
[home-page]: Update to current.
[license]: Set to LICENSE:BSD-3.
(python2-mechanize): Define in terms of PACKAGE-WITH-PYTHON2.
This decouples startup of the Hurd from the "hurd" package, moving the RC
script into SYSTEM.
* gnu/packages/hurd.scm (hurd)[inputs]: Remove hurd-rc-script.
[arguments]: Do not substitute it. Update "runsystem.sh" to parse kernel
arguments and exec into --system=SYSTEM/rc.
(hurd-rc-script): Move to...
* gnu/services.scm (%hurd-rc-file): ...this new variable.
(hurd-rc-entry): New procedure.
(%hurd-startup-service): Use it in new variable.
* gnu/system.scm (hurd-default-essential-services): Use it.
* gnu/services/hurd.scm (<hurd-gettty-configuration>): New record.
(hurd-ttys-shepherd-service): New procedure.
(hurd-getty-service-type): New variable.
* doc/guix.texi (Hurd Services): Document it.
This moves towards a regular Guix startup, loading SYSTEM/boot to activate the
system and start the shepherd.
* gnu/packages/hurd.scm (hurd-rc-script): Update to handle "runsystem" tasks.
Load system/boot to activate the system and start the shepherd. Create /hurd
symlink.
(hurd)[arguments]: Add 'create-runsystem' phase. Do not substitute now unused
init.c, runsystem.hurd. Substitute "/hurd/" for the fixed 'out + "/hurd/"' in
boot.c, console-run.c and startup.c. Also substitute
_HURD_STARTUP ("/hurd/startup") to the fixed 'out + "/hurd/startup"' in
libdiskfs/boot-start.c and libdiskfs/opts-std-startup.c.
* gnu/system.scm (operating-system-etc-service): Cater for missing nsswitch
and missing sudoers-file. For the Hurd, add "login" and "motd".
(hurd-default-essential-services): Add operating-system-etc-service.
* gnu/build/activation.scm (boot-time-system): Use "command-line" for the
Hurd.
* gnu/system.scm (hurd-default-essential-services): Add %boot-service and
%activation-service.
* gnu/system/hurd.scm (%hurd-def%hurd-default-operating-system-kernel,
%hurd-default-operating-system): New exported variables.
* gnu/system/examples/bare-hurd.tmpl: New file.
* Makefile.am (EXAMPLES): Add it.
* tests/guix-system.sh: Add --target=i586-pc-gnu when testing it.
* gnu/system.scm (kernel->boot-label): Add keyword parameter 'hurd'. If set,
use it for label.
(operating-system-default-label): Call with it with operating-system-hurd.
* gnu/system.scm (<boot-parameters>)[multiboot-modules]: New field.
(read-boot-parameters): Initialize it.
(operating-system-multiboot-modules, hurd-multiboot-modules): New procedure.
(operating-system-boot-parameters): Cater for multiboot the Hurd and
initialize it; avoid initrd in that case.
(operating-system-kernel-file): Cater for for Gnumach (the Hurd) besides Linux.
(boot-parameters->menu-entry): Use it to support a multiboot <menu-entry>.
Avoid crash
Backtrace:
guix/build/syscalls.scm:405:8: In procedure prctl: Function not implemented
because of missing prctl on the Hurd.
* guix/build/syscalls.scm (set-thread-name, thread-name): Rename to ...
(set-thread-name!/linux,thread-name/linux): ...this.
(set-thread-name, thread-name): Swtich between linux implementation and or
stub.
This enables setting (and reading) passive translators when preparing a Hurd
file system from GNU/Linux.
* gnu/packages/patches/hurd-xattr.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/hurd.scm (hurd): Use it.
Use "openssh-sans-x" to prevent the inclusion of X libraries to the bare-bones
system closure.
* gnu/system/examples/bare-bones.tmpl (operating-system)[services]: Use
openssh-sans-x instead of openssh.
The Python plugin of "sudo" drags the Python interpreter to the closure of
Guix System. Put it in a separate output.
* gnu/packages/admin.scm (sudo)[arguments]: Add a 'separate-python-output
phase, that's populating ...
[outputs]: ... the new "python" output.