[PATCH 3/5] sys-kernel/gentoo-kernel-modprep: New package, 7.0.10_p1

Michał Górny <[email protected]> Fri, 29 May 2026 12:43:51 +0200
Newsgroups gmane.linux.gentoo.devel
Message-ID <[email protected]>
New package to install minimal set of kernel files needed for building
kernel modules, without the actual kernel or standard modules.

Signed-off-by: Michał Górny <[email protected]>
---
 sys-kernel/gentoo-kernel-modprep/Manifest     |   8 +
 .../gentoo-kernel-modprep-7.0.10_p1.ebuild    | 185 ++++++++++++++++++
 sys-kernel/gentoo-kernel-modprep/metadata.xml |  13 ++
 3 files changed, 206 insertions(+)
 create mode 100644 sys-kernel/gentoo-kernel-modprep/Manifest
 create mode 100644 sys-kernel/gentoo-kernel-modprep/gentoo-kernel-modprep-7.0.10_p1.ebuild
 create mode 100644 sys-kernel/gentoo-kernel-modprep/metadata.xml

diff --git a/sys-kernel/gentoo-kernel-modprep/Manifest b/sys-kernel/gentoo-kernel-modprep/Manifest
new file mode 100644
index 0000000000000..e91c088a9b2b6
--- /dev/null
+++ b/sys-kernel/gentoo-kernel-modprep/Manifest
@@ -0,0 +1,8 @@
+DIST gentoo-kernel-7.0.10_p1-1.amd64.gpkg.tar 355665920 BLAKE2B f0372e77beff551e04a1dc61000f2c3255e61cd654ea60013c72224391cda2df5802f7c20cfbfe3626fdf88c3f7bec504ddf0a95f997a56e8fafe50da97bf1bf SHA512 80501116b4e8e758ea2e9f87be3c18e2974185f78648438b71d9203ee9392a530c10f9408ba0369d80146ee613ab1dc365d1cb048d12c952a8231a1f4ee292c1
+DIST gentoo-kernel-7.0.10_p1-1.arm64.gpkg.tar 326768640 BLAKE2B 09bf961c3d14cd01c930bbc9b0efb76b763fb9c46df796600387a735cc8c341724678d56404ac28f85400ef4f6089f2346b20809e5ec50933ae8e86477ef487e SHA512 b8008c87e2819c190976891d685d1440d90a24659d93a97568bda98742ceedf0f27ad0c7fe4579f958013854c04f0dbbc1d7eca958bd4d955500213e279be6da
+DIST gentoo-kernel-7.0.10_p1-1.ppc64le.gpkg.tar 78673920 BLAKE2B 95a9d26f3dbdc0376fd6081e3014fec3e492fdc4e84ae0446d9f3d90791a14bb464eebcf7f3bf3e3cb704e89f611f433abaa40fca2d69b8389d968f4f08aff5a SHA512 56f48ffe7bf518d9045948717f77f04c3ba21a18afb794ee815be9dc15b44c9975ab621702caf8fac00e6b4440ccd1221f1a3eccb229739b94c4a7794b115a01
+DIST gentoo-kernel-7.0.10_p1-1.x86.gpkg.tar 85565440 BLAKE2B b2b27fae618f045b72cccfcb7ba0643a80fe00a47ab0ea21718b7e0b3368c7a0d545c2a9b9817f0f809e92d60c2796eb2a39491b67770064fbf5770a08d2a4cc SHA512 675e75aecf65326e3e82e1273018671ba9458928aa13953912a8b17d6648a1dc55b0a76e05d61ac29193352fb8283b790a611e1598522634e1213ca68b9cca20
+DIST linux-7.0.tar.xz 157143652 BLAKE2B 3d9795083c8938f80f480de0d10bfd9c525640e59d5c7f22983de3f12ee42c84c31be902cafb05579ddb1c32bac5ed06b0d4953f9705450be185bd2d9ab08f89 SHA512 8c85b708342f8f09ca25b2234b22e93b62b144a9ef919fbb21827f52fa47498e778c79db1559524dd7fb360f95b2ce174171443c1859656c281be41d2b6c5a0b
+DIST linux-7.x-sha256sums-20260523.asc 4541 BLAKE2B 17062ee8e93d4c81aa8adf1952650462d097229a76991873b42867a122bab9e5b33502a98a5df8c6ab52031601f3bcef6c82f50a86e0dcf1e1b680fff3ad2280 SHA512 3fd12772887ccf7b568ad641467fc9bfc29ea590e826e59f4c426cd11280fa7871e4b61f091d6bc3780d13e095c6b4b450fb5356606d32d70d4e985ee9832a64
+DIST linux-gentoo-patches-7.0.10_p1.tar.xz 13496 BLAKE2B a7e15fce5c789f0f5c4d849c08558e307687a5b89a8ac98849be5adb2c9dc6bafe0d70a4e61d49bce1c6e138d4b28d2ff00943f3b317a3797298f3b7d6ab19f6 SHA512 bb3c7731cca8e0cb7736b93e6931b130a2049366f230fd5463ef7d7cdf6a180312e35c72a834c280263107b43629c40eaf016fee9c0215cde73a7cbe0b32fd57
+DIST patch-7.0.10.xz 599488 BLAKE2B 8f3450b8a1c62d5e400bb9c724299ee024a3cb0d2c8006d8d0be36955b64d995d29048a4d7f31e94c6dcf4226ac3a0e007848acb0154c270be906bbb41efd645 SHA512 076c369ec654ff69b701a5f7123d4d4309c48781407a23012e629b7fe7c1dd16d7cf6cc0f069534902eef2e27d394516ed36cb103716bf0bdeca5a4345e4b805
diff --git a/sys-kernel/gentoo-kernel-modprep/gentoo-kernel-modprep-7.0.10_p1.ebuild b/sys-kernel/gentoo-kernel-modprep/gentoo-kernel-modprep-7.0.10_p1.ebuild
new file mode 100644
index 0000000000000..8657f473ed7bf
--- /dev/null
+++ b/sys-kernel/gentoo-kernel-modprep/gentoo-kernel-modprep-7.0.10_p1.ebuild
@@ -0,0 +1,185 @@
+# Copyright 2020-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit dist-kernel-utils toolchain-funcs unpacker verify-sig
+
+BASE_P=linux-${PV%.*}
+PATCH_PV=${PV%_p*}
+PATCHSET=linux-gentoo-patches-${PV}
+BINPKG=gentoo-kernel-${PV}-1
+SHA256SUM_DATE=20260523
+
+DESCRIPTION="Minimal subset of gentoo-kernel-bin for building modules, for containers"
+HOMEPAGE="
+	https://wiki.gentoo.org/wiki/Project:Distribution_Kernel
+	https://www.kernel.org/
+"
+SRC_URI+="
+	https://cdn.kernel.org/pub/linux/kernel/v$(ver_cut 1).x/${BASE_P}.tar.xz
+	https://cdn.kernel.org/pub/linux/kernel/v$(ver_cut 1).x/patch-${PATCH_PV}.xz
+	https://distfiles.gentoo.org/pub/proj/dist-kernel/patchsets/$(ver_cut 1-2)/${PATCHSET}.tar.xz
+	verify-sig? (
+		https://cdn.kernel.org/pub/linux/kernel/v$(ver_cut 1).x/sha256sums.asc
+			-> linux-$(ver_cut 1).x-sha256sums-${SHA256SUM_DATE}.asc
+	)
+	amd64? (
+		https://distfiles.gentoo.org/pub/proj/dist-kernel/binpkg/amd64/$(ver_cut 1-2)/${BINPKG}.amd64.gpkg.tar
+	)
+	arm64? (
+		https://distfiles.gentoo.org/pub/proj/dist-kernel/binpkg/arm64/$(ver_cut 1-2)/${BINPKG}.arm64.gpkg.tar
+	)
+	ppc64? (
+		https://distfiles.gentoo.org/pub/proj/dist-kernel/binpkg/ppc64le/$(ver_cut 1-2)/${BINPKG}.ppc64le.gpkg.tar
+	)
+	x86? (
+		https://distfiles.gentoo.org/pub/proj/dist-kernel/binpkg/x86/$(ver_cut 1-2)/${BINPKG}.x86.gpkg.tar
+	)
+"
+S=${WORKDIR}
+
+SLOT=${PV}
+LICENSE="GPL-2"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+
+RDEPEND="
+	virtual/libelf
+	!sys-kernel/gentoo-kernel:${SLOT}
+	!sys-kernel/gentoo-kernel-bin:${SLOT}
+"
+BDEPEND="
+	app-alternatives/bc
+	app-alternatives/lex
+	app-alternatives/yacc
+	dev-util/pahole
+	sys-libs/binutils-libs
+	virtual/libelf
+	verify-sig? ( >=sec-keys/openpgp-keys-kernel-20250702 )
+"
+
+KV_LOCALVERSION='-gentoo-dist'
+KV_FULL=${PV/_p/-p}${KV_LOCALVERSION}
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/kernel.org.asc
+
+src_unpack() {
+	if use verify-sig; then
+		cd "${DISTDIR}" || die
+		verify-sig_verify_signed_checksums \
+			"linux-$(ver_cut 1).x-sha256sums-${SHA256SUM_DATE}.asc" \
+			sha256 "${BASE_P}.tar.xz patch-${PATCH_PV}.xz"
+		cd "${WORKDIR}" || die
+	fi
+
+	unpacker
+}
+
+src_prepare() {
+	local patch
+	cd "${BASE_P}" || die
+	eapply "${WORKDIR}/patch-${PATCH_PV}"
+	eapply "${WORKDIR}/${PATCHSET}"
+
+	default
+
+	# add Gentoo patchset version
+	local extraversion=${PV#${PATCH_PV}}
+	sed -i -e "s:^\(EXTRAVERSION =\).*:\1 ${extraversion/_/-}:" Makefile || die
+}
+
+src_configure() {
+	# force ld.bfd if we can find it easily
+	local HOSTLD="$(tc-getBUILD_LD)"
+	if type -P "${HOSTLD}.bfd" &>/dev/null; then
+		HOSTLD+=.bfd
+	fi
+	local LD="$(tc-getLD)"
+	if type -P "${LD}.bfd" &>/dev/null; then
+		LD+=.bfd
+	fi
+	tc-export_build_env
+	local makeargs=(
+		V=1
+		WERROR=0
+
+		HOSTCC="$(tc-getBUILD_CC)"
+		HOSTCXX="$(tc-getBUILD_CXX)"
+		HOSTLD="${HOSTLD}"
+		HOSTAR="$(tc-getBUILD_AR)"
+		HOSTCFLAGS="${BUILD_CFLAGS}"
+		HOSTLDFLAGS="${BUILD_LDFLAGS}"
+
+		CROSS_COMPILE=${CHOST}-
+		AS="$(tc-getAS)"
+		CC="$(tc-getCC)"
+		LD="${LD}"
+		AR="$(tc-getAR)"
+		NM="$(tc-getNM)"
+		STRIP="$(tc-getSTRIP)"
+		OBJCOPY="$(tc-getOBJCOPY)"
+		OBJDUMP="$(tc-getOBJDUMP)"
+		READELF="$(tc-getREADELF)"
+
+		# we need to pass it to override colliding Gentoo envvar
+		ARCH="$(tc-arch-kernel)"
+
+		O="${WORKDIR}"/modprep
+	)
+
+	local kernel_dir="${BINPKG}/image/usr/src/linux-${KV_FULL}"
+
+	mkdir modprep || die
+	cp "${kernel_dir}/.config" modprep/ || die
+	emake -C "${BASE_P}" "${makeargs[@]}" modules_prepare
+}
+
+src_install() {
+	local rel_kernel_dir=/usr/src/linux-${KV_FULL}
+	local kernel_dir="${BINPKG}/image${rel_kernel_dir}"
+	local image="${kernel_dir}/$(dist-kernel_get_image_path)"
+	local uki="${image%/*}/uki.efi"
+
+	# Remove unnecessary files and move lib
+	find "${BINPKG}"/image/lib -name '*.ko' -delete || die
+	mv "${BINPKG}"/image/lib "${ED}"/ || die
+
+	# TODO: repack these
+	cd "${kernel_dir}" || die
+	insinto "${rel_kernel_dir}"
+	doins System.map Module.symvers
+	doins -r certs include scripts
+
+	local kern_arch=$(tc-arch-kernel)
+	insinto "${rel_kernel_dir}/arch/${kern_arch}"
+	doins -r "arch/${kern_arch}/include"
+
+	# Add the identifier
+	echo "${CATEGORY}/${PF}:${SLOT}" > "${ED}${rel_kernel_dir}/dist-kernel" || die
+
+	# remove everything but Makefile* and Kconfig*
+	cd "${WORKDIR}/${BASE_P}" || die
+	find -type f '!' '(' -name 'Makefile*' -o -name 'Kconfig*' ')' \
+		-delete || die
+	find -type l -delete || die
+	cp -p -R * "${ED}${rel_kernel_dir}/" || die
+
+	# strip out-of-source build stuffs from modprep
+	# and then copy built files
+	cd "${WORKDIR}" || die
+	find modprep -type f '(' \
+			-name Makefile -o \
+			-name '*.[ao]' -o \
+			'(' -name '.*' -a -not -name '.config' ')' \
+		')' -delete || die
+	rm modprep/source || die
+	cp -p -R modprep/. "${ED}${rel_kernel_dir}"/ || die
+}
+
+pkg_preinst() {
+	dist-kernel_update_lib_symlinks
+}
+
+pkg_postinst() {
+	dist-kernel_update_src_symlink "${EROOT}/usr/src/linux" "${KV_FULL}"
+}
diff --git a/sys-kernel/gentoo-kernel-modprep/metadata.xml b/sys-kernel/gentoo-kernel-modprep/metadata.xml
new file mode 100644
index 0000000000000..51cfdeabfbbf4
--- /dev/null
+++ b/sys-kernel/gentoo-kernel-modprep/metadata.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+	<maintainer type="project">
+		<email>[email protected]</email>
+		<name>Distribution Kernel Project</name>
+	</maintainer>
+	<use>
+		<flag name="initramfs">
+			Build initramfs along with the kernel.
+		</flag>
+	</use>
+</pkgmetadata>