From: Ulrich Mueller <ulm@gentoo.org>
To: Andrew Nowa Ammerlaan <andrewammerlaan@gentoo.org>
Cc: gentoo-dev@lists.gentoo.org
Subject: Re: [gentoo-dev] [PATCH 2/5] kernel-install.eclass: move mount-boot check to, dist-kernel-utils.eclass
Date: Thu, 27 Jun 2024 06:07:44 +0200 [thread overview]
Message-ID: <uzfr7f2pb@gentoo.org> (raw)
In-Reply-To: <d27e11c9-8212-48bc-9581-9d537705095b@gentoo.org> (Andrew Nowa Ammerlaan's message of "Wed, 26 Jun 2024 22:07:27 +0200")
[-- Attachment #1: Type: text/plain, Size: 5290 bytes --]
>>>>> On Wed, 26 Jun 2024, Andrew Nowa Ammerlaan wrote:
> --- a/eclass/dist-kernel-utils.eclass
> +++ b/eclass/dist-kernel-utils.eclass
> @@ -26,7 +26,7 @@ case ${EAPI} in
> *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
> esac
>
> -inherit toolchain-funcs
> +inherit mount-boot-utils toolchain-funcs
>
> # @FUNCTION: dist-kernel_get_image_path
> # @DESCRIPTION:
> @@ -79,11 +79,40 @@ dist-kernel_install_kernel() {
> local image=${2}
> local map=${3}
>
> - ebegin "Installing the kernel via installkernel"
> - # note: .config is taken relatively to System.map;
> - # initrd relatively to bzImage
> - ARCH=$(tc-arch-kernel) installkernel "${version}" "${image}" "${map}"
> - eend ${?} || die -n "Installing the kernel failed"
> + local success=
> + # not an actual loop but allows error handling with 'break'
> + while :; do
IMHO "while true" would be better readable.
> + nonfatal mount-boot_check_status || break
> +
> + ebegin "Installing the kernel via installkernel"
> + # note: .config is taken relatively to System.map;
> + # initrd relatively to bzImage
> + ARCH=$(tc-arch-kernel) installkernel "${version}"
> "${image}" "${map}" || break
> + eend ${?} || die -n "Installing the kernel failed"
> +
> + success=1
> + break
> + done
> +
> + if [[ ! ${success} ]]; then
> + # Try to read dist-kernel identifier to more accurately instruct users
> + local kernel
> + local k_id_file=${image%$(dist-kernel_get_image_path)}/dist-kernel
> + if [[ -f ${k_id_file} ]]; then
> + kernel=\'\=$(<${k_id_file})\'
> + else
> + # Fallback string if identifier is not found
> + kernel="<name of your kernel pakcage>:<kernel version>"
> + fi
> +
> + eerror
> + eerror "The kernel was not deployed successfully. Inspect the failure"
> + eerror "in the logs above and once you resolve the problems please"
> + eerror "run the equivalent of the following command to try again:"
> + eerror
> + eerror " emerge --config ${kernel}"
> + die "Kernel install failed, please fix the problems
> and run emerge --config"
> + fi
> }
>
> # @FUNCTION: dist-kernel_reinstall_initramfs
> diff --git a/eclass/kernel-install.eclass b/eclass/kernel-install.eclass
> index f512d815fe098..a572597bc6fa3 100644
> --- a/eclass/kernel-install.eclass
> +++ b/eclass/kernel-install.eclass
> @@ -18,8 +18,6 @@
> # location and System.map.
> #
> # The eclass exports src_test, pkg_postinst and pkg_postrm.
> -# Additionally, the inherited mount-boot eclass exports pkg_pretend.
> -# It also stubs out pkg_preinst and pkg_prerm defined by mount-boot.
>
> # @ECLASS_VARIABLE: KERNEL_IUSE_GENERIC_UKI
> # @PRE_INHERIT
> @@ -50,7 +48,7 @@ case ${EAPI} in
> *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
> esac
>
> -inherit dist-kernel-utils mount-boot multiprocessing toolchain-funcs
> +inherit dist-kernel-utils mount-boot-utils multiprocessing toolchain-funcs
>
> SLOT="${PV}"
> IUSE="+initramfs test"
> @@ -526,6 +524,10 @@ kernel-install_test() {
> kernel-install_pkg_pretend() {
> debug-print-function ${FUNCNAME} "${@}"
>
> + # Check, but don't die because we can fix the problem and then
> + # emerge --config ... to re-run installation.
> + nonfatal mount-boot_check_status
> +
> if ! has_version -d sys-kernel/linux-firmware; then
> ewarn "sys-kernel/linux-firmware not found installed on your system."
> ewarn "This package provides various firmware files that may be needed"
> @@ -665,27 +667,8 @@ kernel-install_install_all() {
> fi
> fi
>
> - local success=
> - # not an actual loop but allows error handling with 'break'
> - while :; do
> - nonfatal mount-boot_check_status || break
> -
> - nonfatal dist-kernel_install_kernel "${module_ver}" \
> - "${kernel_dir}/${image_path}" "${kernel_dir}/System.map" || break
> -
> - success=1
> - break
> - done
> -
> - if [[ ! ${success} ]]; then
> - eerror
> - eerror "The kernel files were copied to disk successfully but the kernel"
> - eerror "was not deployed successfully. Once you resolve the problems,"
> - eerror "please run the equivalent of the following command to try again:"
> - eerror
> - eerror " emerge --config ${CATEGORY}/${PN}:${SLOT}"
> - die "Kernel install failed, please fix the problems
> and run emerge --config ${CATEGORY}/${PN}:${SLOT}"
> - fi
> + dist-kernel_install_kernel "${module_ver}" "${kernel_dir}/${image_path}" \
> + "${kernel_dir}/System.map"
> }
>
> # @FUNCTION: kernel-install_pkg_postinst
> @@ -718,15 +701,6 @@ kernel-install_pkg_postinst() {
> fi
> }
>
> -# @FUNCTION: kernel-install_pkg_prerm
> -# @DESCRIPTION:
> -# Stub out mount-boot.eclass.
> -kernel-install_pkg_prerm() {
> - debug-print-function ${FUNCNAME} "${@}"
> -
> - # (no-op)
> -}
> -
> # @FUNCTION: kernel-install_pkg_postrm
> # @DESCRIPTION:
> # Clean up the generated initramfs from the removed kernel directory.
> @@ -774,5 +748,5 @@ kernel-install_compress_modules() {
>
> fi
>
> -EXPORT_FUNCTIONS src_test pkg_preinst pkg_postinst pkg_prerm pkg_postrm
> +EXPORT_FUNCTIONS src_test pkg_preinst pkg_postinst pkg_postrm
> EXPORT_FUNCTIONS pkg_config pkg_pretend
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 507 bytes --]
next prev parent reply other threads:[~2024-06-27 4:07 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-26 19:09 [gentoo-dev] [PATCH] kernel-build.eclass: identify dist-kernels, and warn users Andrew Nowa Ammerlaan
2024-06-26 20:06 ` [gentoo-dev] [PATCH 0/5] mount-boot.eclass: revises /boot checking for dist-kernels, add checks for ESP Andrew Nowa Ammerlaan
2024-06-26 20:06 ` [gentoo-dev] [PATCH 1/5] mount-boot.eclass: check for ESP as well as /boot, split, eclass Andrew Nowa Ammerlaan
2024-06-26 20:07 ` [gentoo-dev] [PATCH 2/5] kernel-install.eclass: move mount-boot check to, dist-kernel-utils.eclass Andrew Nowa Ammerlaan
2024-06-26 20:08 ` [gentoo-dev] [PATCH 3/5] linux-mod-r1.eclass: check /boot if we are re-installing, dist-kernel Andrew Nowa Ammerlaan
2024-06-26 20:08 ` [gentoo-dev] [PATCH 4/5] sys-kernel/linux-firmware: complain less when /boot is not, mounted Andrew Nowa Ammerlaan
2024-06-26 20:09 ` [gentoo-dev] [PATCH 5/5] sys-firmware/intel-microcode: " Andrew Nowa Ammerlaan
2024-06-27 4:07 ` Ulrich Mueller [this message]
2024-06-27 14:26 ` [gentoo-dev] [PATCH 2/5 v2] kernel-install.eclass: move mount-boot check to, dist-kernel-utils.eclass Andrew Nowa Ammerlaan
2024-06-27 4:00 ` [gentoo-dev] [PATCH 1/5] mount-boot.eclass: check for ESP as well as /boot, split, eclass Ulrich Mueller
2024-06-27 14:24 ` [gentoo-dev] [PATCH 1/5 v2] " Andrew Nowa Ammerlaan
2024-06-28 6:33 ` Ulrich Mueller
2024-06-28 9:18 ` [gentoo-dev] [PATCH 1/5 v3] " Andrew Nowa Ammerlaan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=uzfr7f2pb@gentoo.org \
--to=ulm@gentoo.org \
--cc=andrewammerlaan@gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox