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@gentoo.org>
Closes:
https://github.com/gentoo/gentoo/pull/37694
Signed-off-by: Andrew Ammerlaan <
andrewammerlaan@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=$(