[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>