Gentoo Archives: gentoo-dev

From: "Michał Górny" <mgorny@g.o>
To: gentoo-dev@l.g.o
Cc: "Michał Górny" <mgorny@g.o>
Subject: [gentoo-dev] [PATCH 4/4] kernel-build.eclass: Account for PV/KV mismatch
Date: Wed, 26 Oct 2022 11:33:18
Message-Id: 20221026113140.3213-5-mgorny@gentoo.org
In Reply to: [gentoo-dev] [PATCH 0/4] dist-kernel: Improved kernel version logic, take two by "Michał Górny"
1 Signed-off-by: Michał Górny <mgorny@g.o>
2 ---
3 eclass/kernel-build.eclass | 43 +++++++++++++++++++++++---------------
4 1 file changed, 26 insertions(+), 17 deletions(-)
5
6 diff --git a/eclass/kernel-build.eclass b/eclass/kernel-build.eclass
7 index 7cada85e79fe..5b595048d4d0 100644
8 --- a/eclass/kernel-build.eclass
9 +++ b/eclass/kernel-build.eclass
10 @@ -150,10 +150,14 @@ kernel-build_src_test() {
11 emake O="${WORKDIR}"/build "${MAKEARGS[@]}" \
12 INSTALL_MOD_PATH="${T}" "${targets[@]}"
13
14 - local ver="${PV}${KV_LOCALVERSION}"
15 - kernel-install_test "${ver}" \
16 + local dir_ver=${PV}${KV_LOCALVERSION}
17 + local relfile=${WORKDIR}/build/include/config/kernel.release
18 + local module_ver
19 + module_ver=$(<"${relfile}") || die
20 +
21 + kernel-install_test "${module_ver}" \
22 "${WORKDIR}/build/$(dist-kernel_get_image_path)" \
23 - "${T}/lib/modules/${ver}"
24 + "${T}/lib/modules/${module_ver}"
25 }
26
27 # @FUNCTION: kernel-build_src_install
28 @@ -177,14 +181,15 @@ kernel-build_src_install() {
29 # note: we're using mv rather than doins to save space and time
30 # install main and arch-specific headers first, and scripts
31 local kern_arch=$(tc-arch-kernel)
32 - local ver="${PV}${KV_LOCALVERSION}"
33 - dodir "/usr/src/linux-${ver}/arch/${kern_arch}"
34 - mv include scripts "${ED}/usr/src/linux-${ver}/" || die
35 + local dir_ver=${PV}${KV_LOCALVERSION}
36 + local kernel_dir=/usr/src/linux-${dir_ver}
37 + dodir "${kernel_dir}/arch/${kern_arch}"
38 + mv include scripts "${ED}${kernel_dir}/" || die
39 mv "arch/${kern_arch}/include" \
40 - "${ED}/usr/src/linux-${ver}/arch/${kern_arch}/" || die
41 + "${ED}${kernel_dir}/arch/${kern_arch}/" || die
42 # some arches need module.lds linker script to build external modules
43 if [[ -f arch/${kern_arch}/kernel/module.lds ]]; then
44 - insinto "/usr/src/linux-${ver}/arch/${kern_arch}/kernel"
45 + insinto "${kernel_dir}/arch/${kern_arch}/kernel"
46 doins "arch/${kern_arch}/kernel/module.lds"
47 fi
48
49 @@ -192,7 +197,7 @@ kernel-build_src_install() {
50 find -type f '!' '(' -name 'Makefile*' -o -name 'Kconfig*' ')' \
51 -delete || die
52 find -type l -delete || die
53 - cp -p -R * "${ED}/usr/src/linux-${ver}/" || die
54 + cp -p -R * "${ED}${kernel_dir}/" || die
55
56 cd "${WORKDIR}" || die
57 # strip out-of-source build stuffs from modprep
58 @@ -203,31 +208,35 @@ kernel-build_src_install() {
59 '(' -name '.*' -a -not -name '.config' ')' \
60 ')' -delete || die
61 rm modprep/source || die
62 - cp -p -R modprep/. "${ED}/usr/src/linux-${ver}"/ || die
63 + cp -p -R modprep/. "${ED}${kernel_dir}"/ || die
64
65 # install the kernel and files needed for module builds
66 - insinto "/usr/src/linux-${ver}"
67 + insinto "${kernel_dir}"
68 doins build/{System.map,Module.symvers}
69 local image_path=$(dist-kernel_get_image_path)
70 - cp -p "build/${image_path}" "${ED}/usr/src/linux-${ver}/${image_path}" || die
71 + cp -p "build/${image_path}" "${ED}${kernel_dir}/${image_path}" || die
72
73 # building modules fails with 'vmlinux has no symtab?' if stripped
74 - use ppc64 && dostrip -x "/usr/src/linux-${ver}/${image_path}"
75 + use ppc64 && dostrip -x "${kernel_dir}/${image_path}"
76
77 # Install vmlinux with debuginfo when requested
78 if use debug; then
79 if [[ "${image_path}" != "vmlinux" ]]; then
80 - mv "build/vmlinux" "${ED}/usr/src/linux-${ver}/vmlinux" || die
81 + mv "build/vmlinux" "${ED}${kernel_dir}/vmlinux" || die
82 fi
83 - dostrip -x "/usr/src/linux-${ver}/vmlinux"
84 + dostrip -x "${kernel_dir}/vmlinux"
85 fi
86
87 # strip empty directories
88 find "${D}" -type d -empty -exec rmdir {} + || die
89
90 + local relfile=${ED}${kernel_dir}/include/config/kernel.release
91 + local module_ver
92 + module_ver=$(<"${relfile}") || die
93 +
94 # fix source tree and build dir symlinks
95 - dosym ../../../usr/src/linux-${ver} /lib/modules/${ver}/build
96 - dosym ../../../usr/src/linux-${ver} /lib/modules/${ver}/source
97 + dosym "../../../${kernel_dir}" "/lib/modules/${module_ver}/build"
98 + dosym "../../../${kernel_dir}" "/lib/modules/${module_ver}/source"
99
100 save_config build/.config
101 }
102 --
103 2.38.1