Mailing List Archive

[PATCH] eclass/(dist-)kernel-*.eclass: drop installkernel-gentoo-7
Part of https://github.com/gentoo/gentoo/pull/33727

From 0878f48e492b2c7bfd4b58c8f6dcfbfdbd642d8a Mon Sep 17 00:00:00 2001
From: Andrew Ammerlaan <andrewammerlaan@gentoo.org>
Date: Wed, 15 Nov 2023 19:59:06 +0100
Subject: [PATCH] eclass/(dist-)kernel-*.eclass: drop installkernel-gentoo-7

because we drop the generation of the initrd/uki here
we can remove KERNEL_IUSE_SECUREBOOT since this is now
exactly the same as KERNEL_IUSE_MODULES_SIGN

Signed-off-by: Andrew Ammerlaan <andrewammerlaan@gentoo.org>
---
eclass/dist-kernel-utils.eclass | 78 ---------------------------------
eclass/kernel-build.eclass | 13 +++---
eclass/kernel-install.eclass | 39 +++++------------
3 files changed, 17 insertions(+), 113 deletions(-)

diff --git a/eclass/dist-kernel-utils.eclass
b/eclass/dist-kernel-utils.eclass
index 8ccffd0384742..13137f8c863c8 100644
--- a/eclass/dist-kernel-utils.eclass
+++ b/eclass/dist-kernel-utils.eclass
@@ -12,13 +12,6 @@
# This eclass provides various utility functions related to Distribution
# Kernels.

-# @ECLASS_VARIABLE: KERNEL_IUSE_SECUREBOOT
-# @PRE_INHERIT
-# @DEFAULT_UNSET
-# @DESCRIPTION:
-# If set to a non-null value, inherits secureboot.eclass
-# and allows signing of generated kernel images.
-
# @ECLASS_VARIABLE: KERNEL_EFI_ZBOOT
# @DEFAULT_UNSET
# @DESCRIPTION:
@@ -35,43 +28,6 @@ esac

inherit toolchain-funcs

-if [[ ${KERNEL_IUSE_SECUREBOOT} ]]; then
- inherit secureboot
-fi
-
-# @FUNCTION: dist-kernel_build_initramfs
-# @USAGE: <output> <version>
-# @DESCRIPTION:
-# Build an initramfs for the kernel. <output> specifies the absolute
-# path where initramfs will be created, while <version> specifies
-# the kernel version, used to find modules.
-#
-# Note: while this function uses dracut at the moment, other initramfs
-# variants may be supported in the future.
-dist-kernel_build_initramfs() {
- debug-print-function ${FUNCNAME} "${@}"
-
- [[ ${#} -eq 2 ]] || die "${FUNCNAME}: invalid arguments"
- local output=${1}
- local version=${2}
-
- local rel_image_path=$(dist-kernel_get_image_path)
- local image=${output%/*}/${rel_image_path##*/}
-
- local args=(
- --force
- # if uefi=yes is used, dracut needs to locate the kernel image
- --kernel-image "${image}"
-
- # positional arguments
- "${output}" "${version}"
- )
-
- ebegin "Building initramfs via dracut"
- dracut "${args[@]}"
- eend ${?} || die -n "Building initramfs failed"
-}
-
# @FUNCTION: dist-kernel_get_image_path
# @DESCRIPTION:
# Get relative kernel image path specific to the current ${ARCH}.
@@ -123,26 +79,6 @@ dist-kernel_install_kernel() {
local image=${2}
local map=${3}

- if has_version "<=sys-kernel/installkernel-gentoo-7"; then
- # if dracut is used in uefi=yes mode, initrd will actually
- # be a combined kernel+initramfs UEFI executable. we can easily
- # recognize it by PE magic (vs cpio for a regular initramfs)
- local initrd=${image%/*}/initrd
- local magic
- [[ -s ${initrd} ]] && read -n 2 magic < "${initrd}"
- if [[ ${magic} == MZ ]]; then
- einfo "Combined UEFI kernel+initramfs executable found"
- # install the combined executable in place of kernel
- image=${initrd%/*}/uki.efi
- mv "${initrd}" "${image}" || die
-
- if [[ ${KERNEL_IUSE_SECUREBOOT} ]]; then
- # Ensure the uki is signed if dracut hasn't already done so.
- secureboot_sign_efi_file "${image}"
- fi
- fi
- fi
-
ebegin "Installing the kernel via installkernel"
# note: .config is taken relatively to System.map;
# initrd relatively to bzImage
@@ -159,10 +95,6 @@ dist-kernel_install_kernel() {
# The function will determine whether <kernel-dir> is actually
# a dist-kernel, and whether initramfs was used.
#
-# With sys-kernel/installkernel-systemd, or version 8 or greater of
-# sys-kernel/installkernel-gentoo, the generation of the initrd via dracut
-# is handled by kernel-install instead.
-#
# This function is to be used in pkg_postinst() of ebuilds installing
# kernel modules that are included in the initramfs.
dist-kernel_reinstall_initramfs() {
@@ -180,16 +112,6 @@ dist-kernel_reinstall_initramfs() {
return
fi

- if has_version "<=sys-kernel/installkernel-gentoo-7"; then
- local initramfs_path=${image_path%/*}/initrd
- if [[ ! -f ${initramfs_path} && ! -f ${initramfs_path%/*}/uki.efi ]];
then
- einfo "No initramfs or uki found at ${image_path}"
- return
- fi
-
- dist-kernel_build_initramfs "${initramfs_path}" "${ver}"
- fi
-
dist-kernel_install_kernel "${ver}" "${image_path}" \
"${kernel_dir}/System.map"
}
diff --git a/eclass/kernel-build.eclass b/eclass/kernel-build.eclass
index 28f111ec998bb..f3a59559d1041 100644
--- a/eclass/kernel-build.eclass
+++ b/eclass/kernel-build.eclass
@@ -30,9 +30,6 @@ _KERNEL_BUILD_ECLASS=1

PYTHON_COMPAT=( python3_{10..12} )
if [[ ${KERNEL_IUSE_MODULES_SIGN} ]]; then
- # If we have enabled module signing IUSE
- # then we can also enable secureboot IUSE
- KERNEL_IUSE_SECUREBOOT=1
inherit secureboot
fi

@@ -56,10 +53,10 @@ IUSE="+strip"
# @PRE_INHERIT
# @DEFAULT_UNSET
# @DESCRIPTION:
-# If set to a non-null value, adds IUSE=modules-sign and required
-# logic to manipulate the kernel config while respecting the
-# MODULES_SIGN_HASH, MODULES_SIGN_CERT, and MODULES_SIGN_KEY user
-# variables.
+# If set to a non-null value, inherits secureboot.eclass, adds
+# IUSE=modules-sign and required logic to manipulate the kernel
+# config while respecting the MODULES_SIGN_HASH, MODULES_SIGN_CERT,
+# and MODULES_SIGN_KEY user variables.

# @ECLASS_VARIABLE: MODULES_SIGN_HASH
# @USER_VARIABLE
@@ -381,7 +378,7 @@ kernel-build_src_install() {
dosym "../../../${kernel_dir}" "/lib/modules/${module_ver}/build"
dosym "../../../${kernel_dir}" "/lib/modules/${module_ver}/source"

- if [[ ${KERNEL_IUSE_SECUREBOOT} ]]; then
+ if [[ ${KERNEL_IUSE_MODULES_SIGN} ]]; then
secureboot_sign_efi_file "${image}"
fi

diff --git a/eclass/kernel-install.eclass b/eclass/kernel-install.eclass
index b4c3d5fe7b4d9..5a5b833cdd7b6 100644
--- a/eclass/kernel-install.eclass
+++ b/eclass/kernel-install.eclass
@@ -63,16 +63,15 @@ RESTRICT+="
_IDEPEND_BASE="
!initramfs? (
|| (
- sys-kernel/installkernel-gentoo
- sys-kernel/installkernel-systemd
+ >=sys-kernel/installkernel-gentoo-8
+ >=sys-kernel/installkernel-systemd-2-r5
)
)
initramfs? (
>=sys-kernel/dracut-059-r4
|| (
- <=sys-kernel/installkernel-gentoo-7
>=sys-kernel/installkernel-gentoo-8[dracut(-)]
- sys-kernel/installkernel-systemd
+ >=sys-kernel/installkernel-systemd-2-r5
)
)
"
@@ -543,14 +542,11 @@ kernel-install_pkg_pretend() {
ewarn "for your hardware to work. If in doubt, it is recommended"
ewarn "to pause or abort the build process and install it before"
ewarn "resuming."
-
- if use initramfs; then
- elog
- elog "If you decide to install linux-firmware later, you can rebuild"
- elog "the initramfs via issuing a command equivalent to:"
- elog
- elog " emerge --config ${CATEGORY}/${PN}:${SLOT}"
- fi
+ elog
+ elog "If you decide to install linux-firmware later, you can rebuild"
+ elog "the initramfs via issuing a command equivalent to:"
+ elog
+ elog " emerge --config ${CATEGORY}/${PN}:${SLOT}"
fi

if ! use initramfs && ! has_version "${CATEGORY}/${PN}[-initramfs]"; then
@@ -633,13 +629,9 @@ kernel-install_extract_from_uki() {
# @FUNCTION: kernel-install_install_all
# @USAGE: <ver>
# @DESCRIPTION:
-# Build an initramfs for the kernel if required and install the kernel.
-# This is called from pkg_postinst() and pkg_config(). <ver> is the
-# full kernel version.
-#
-# With sys-kernel/installkernel-systemd, or version 8 or greater of
-# sys-kernel/installkernel-gentoo, the generation of the initrd via dracut
-# is handled by kernel-install instead.
+# Install the kernel, initramfs/uki generation is optionally handled by
+# installkernel. This is called from pkg_postinst() and pkg_config().
+# <ver> is the full kernel version.
kernel-install_install_all() {
debug-print-function ${FUNCNAME} "${@}"

@@ -673,13 +665,6 @@ kernel-install_install_all() {
while :; do
nonfatal mount-boot_check_status || break

- if use initramfs && has_version
"<=sys-kernel/installkernel-gentoo-7"; then
- # putting it alongside kernel image as 'initrd' makes
- # kernel-install happier
- nonfatal dist-kernel_build_initramfs \
- "${image_dir}/initrd" "${module_ver}" || break
- fi
-
nonfatal dist-kernel_install_kernel "${module_ver}" \
"${image_path}" "${kernel_dir}/System.map" || break

@@ -743,7 +728,7 @@ kernel-install_pkg_prerm() {
kernel-install_pkg_postrm() {
debug-print-function ${FUNCNAME} "${@}"

- if [[ -z ${ROOT} && ! ${KERNEL_IUSE_GENERIC_UKI} ]] && use initramfs; then
+ if [[ -z ${ROOT} && ! ${KERNEL_IUSE_GENERIC_UKI} ]]; then
local dir_ver=${PV}${KV_LOCALVERSION}
local kernel_dir=${EROOT}/usr/src/linux-${dir_ver}
local image_path=$(dist-kernel_get_image_path)