From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id DB744159C96 for ; Wed, 24 Jul 2024 09:53:11 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 86A2BE2AB8; Wed, 24 Jul 2024 09:52:46 +0000 (UTC) Received: from smtp.gentoo.org (woodpecker.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 3C90AE2AB4 for ; Wed, 24 Jul 2024 09:52:45 +0000 (UTC) From: Andrew Ammerlaan To: gentoo-dev@lists.gentoo.org Cc: Andrew Ammerlaan Subject: [gentoo-dev] [PATCH 2/3] kernel-build.eclass: fix determining kernel release with MODULES=n Date: Wed, 24 Jul 2024 11:52:33 +0200 Message-ID: <20240724095234.310603-2-andrewammerlaan@gentoo.org> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240724095234.310603-1-andrewammerlaan@gentoo.org> References: <20240724095234.310603-1-andrewammerlaan@gentoo.org> Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-dev@lists.gentoo.org Reply-to: gentoo-dev@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Archives-Salt: fe8496a3-ad6a-445c-b50f-a20529083b80 X-Archives-Hash: e873695db69cc16b97a5482de2f802cb 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 Closes: https://github.com/gentoo/gentoo/pull/37694 Signed-off-by: Andrew Ammerlaan --- 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 -- 2.45.2