mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-08-05 12:38:09 -07:00
kernel-install.eclass: move mount-boot check to dist-kernel-utils.eclass
ebuilds and eclasses using dist-kernel_reinstall_initramfs should also have the check for mounted /boot and ESP. We can do this safely via mount-boot-utils.eclass which does not export any phases. Signed-off-by: Andrew Ammerlaan <andrewammerlaan@gentoo.org>
This commit is contained in:
@@ -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,38 @@ 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 true; do
|
||||
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
|
||||
# Fallback string, if the identifier file is not found
|
||||
local kernel="<name of your kernel pakcage>:<kernel version>"
|
||||
# Try to read dist-kernel identifier to more accurately instruct users
|
||||
local k_id_file=${image%$(dist-kernel_get_image_path)}/dist-kernel
|
||||
if [[ -f ${k_id_file} ]]; then
|
||||
kernel=\'\=$(<${k_id_file})\'
|
||||
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
|
||||
|
||||
@@ -17,9 +17,7 @@
|
||||
# /usr/src/linux-${PV} containing the kernel image in its standard
|
||||
# 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.
|
||||
# The eclass exports src_test, pkg_preinst, pkg_postinst and pkg_postrm.
|
||||
|
||||
# @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
|
||||
|
||||
Reference in New Issue
Block a user