commit: e19b3318171fe5482417c00e0ff198091080944b
Author: Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
AuthorDate: Tue Jul 23 20:17:50 2024 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
CommitDate: Wed Jul 24 17:18:13 2024 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e19b3318
kernel-build.eclass: fix determining kernel release with MODULES=n
For module-less kernels 'make modules_prepare' does nothing, we only get
kernel.release after running src_compile. Luckily the kernel has the
"kernelrelease" target which we can use for this purpose.
Note, in kernel-install.eclass we still read the kernel release directly from
the file since a) kernel.release will always exist and b) calling make there
again would require duplicating (some subset off) ${MAKEARGS[@]}.
The "make help" page specifies that this target should be called with "-s".
The version check is moved up, before 'make modules_prepare' so we quit earlier
if the KV_FULL is wrong. Note it should be run after we have completed the
config in 'make olddefconfig'.
Signed-off-by: Andrew Ammerlaan <andrewammerlaan <AT> gentoo.org>
Closes: https://github.com/gentoo/gentoo/pull/37694
Signed-off-by: Andrew Ammerlaan <andrewammerlaan <AT> gentoo.org>
eclass/kernel-build.eclass | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/eclass/kernel-build.eclass b/eclass/kernel-build.eclass
index 29719609b912..f478cf636a27 100644
--- a/eclass/kernel-build.eclass
+++ b/eclass/kernel-build.eclass
@@ -253,25 +253,21 @@ kernel-build_src_configure() {
mkdir -p "${WORKDIR}"/modprep || die
mv .config "${WORKDIR}"/modprep/ || die
emake O="${WORKDIR}"/modprep "${MAKEARGS[@]}" olddefconfig
- emake O="${WORKDIR}"/modprep "${MAKEARGS[@]}" modules_prepare
- cp -pR "${WORKDIR}"/modprep "${WORKDIR}"/build || die
- # Now that we have a release file, set KV_FULL
- local relfile=${WORKDIR}/build/include/config/kernel.release
+ local k_release=$(emake -s O="${WORKDIR}"/modprep "${MAKEARGS[@]}"
kernelrelease)
if [[ -z ${KV_FULL} ]]; then
- KV_FULL=$(<"${relfile}") || die
+ KV_FULL=${k_release}
fi
# Make sure we are about to build the correct kernel
if [[ ${PV} != *9999 ]]; then
local expected_ver=$(dist-kernel_PV_to_KV "${PV}")
- local expected_rel=$(<"${relfile}")
- if [[ ${KV_FULL} != ${expected_rel} ]]; then
+ if [[ ${KV_FULL} != ${k_release} ]]; then
eerror "KV_FULL mismatch!"
eerror "KV_FULL: ${KV_FULL}"
- eerror "Expected: ${expected_rel}"
- die "KV_FULL mismatch: got ${KV_FULL}, expected
${expected_rel}"
+ eerror "Expected: ${k_release}"
+ die "KV_FULL mismatch: got ${KV_FULL}, expected
${k_release}"
fi
if [[ ${KV_FULL} != ${expected_ver}* ]]; then
@@ -282,6 +278,9 @@ kernel-build_src_configure() {
die "Kernel version mismatch: got ${KV_FULL}, expected
${expected_ver}*"
fi
fi
+
+ emake O="${WORKDIR}"/modprep "${MAKEARGS[@]}" modules_prepare
+ cp -pR "${WORKDIR}"/modprep "${WORKDIR}"/build || die
}
# @FUNCTION: kernel-build_src_compile