Gentoo Archives: gentoo-commits

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