| Commit message (Collapse) | Author | Lines |
|
diff_kernel relies on the existence of the /boot/config-{kernel} file
which is usually installed by the install-kernel script. This file may
be missing on systems with a custom install workflow or EFI systems that
use the systemd install_kernel functionality. The latter installs the
EFI stub kernel only, no auxiliary files of any kind. Comparisons
against the /boot/config-{kernel} file therefore fail on such systems.
This commit attempts to support a wider range of install workflows by
extracting the config from /proc/config.gz instead. Regardless of how
the kernel is installed, this particular file should exist as long as
CONFIG_IKCONFIG is enabled in the running kernel.
A word about "running config": The way that phrase was used previous to
this commit is technically inaccurate, since the "running config" could
change by installing a kernel and replacing the config file under /boot.
Now we *always* refer to the configuration saved within the currently
running kernel.
|
|
|
|
Commit 1b8d91f ("Use configuration file under /boot instead of
/proc/config.gz") enables us to drop neovim as a dependency, since we
can now access all configuration data through actual files.
Use git-diff(1) (which has automatic paging & colours) if available to
show the changes between kernel configurations, else fall back to
diff(1).
Since the exit code of diff utilities is >0 if inputs are different,
ignore the exit code of the diff utility in test_diff() to continue like
normal.
|
|
kern(1) has been using /proc/config.gz as the source of the currently
running kernel's config since its initial commit. Whilst this location
is convenient because of its static nature, it does need a specific
kernel option, IKCONFIG_PROC, to be set.
Furthermore, it introduces a dependency on gzip(1) to decompress the
file on the fly. Consequently, we need to stream gzip's output to
commands or save it in a temporary file to access it neatly.
Since Gentoo's default install script for the kernel, installkernel(8),
places each kernel's configuration file in /boot, we can use this
location to retrieve the currently running kernel's configuration
instead and work around all of the above limitations.
Of course we need to make sure that /boot is mounted before we try
accessing any configuration files on there. We use the already existing
code from install_kernel() for that.
|
|
Since fragment merging will fail if the base template does not exist,
make sure to mention it in the manual.
|
|
|