1 |
commit: 1ddeca37606e5b752735d8c96c6a50a2e44d07e0 |
2 |
Author: David GUGLIELMI <david.guglielmi <AT> gmail <DOT> com> |
3 |
AuthorDate: Sun Jun 28 14:25:30 2020 +0000 |
4 |
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org> |
5 |
CommitDate: Mon Jun 29 07:16:08 2020 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1ddeca37 |
7 |
|
8 |
kernel-{build,install}.eclass: support Kconfig LOCALVERSION |
9 |
|
10 |
Signed-off-by: David GUGLIELMI <david.guglielmi <AT> gmail.com> |
11 |
Closes: https://bugs.gentoo.org/720930 |
12 |
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org> |
13 |
|
14 |
eclass/kernel-build.eclass | 29 ++++++++++++++++++----------- |
15 |
eclass/kernel-install.eclass | 36 +++++++++++++++++++++++------------- |
16 |
2 files changed, 41 insertions(+), 24 deletions(-) |
17 |
|
18 |
diff --git a/eclass/kernel-build.eclass b/eclass/kernel-build.eclass |
19 |
index 298e3aed737..9f7a8e3296f 100644 |
20 |
--- a/eclass/kernel-build.eclass |
21 |
+++ b/eclass/kernel-build.eclass |
22 |
@@ -79,6 +79,11 @@ kernel-build_src_configure() { |
23 |
restore_config .config |
24 |
[[ -f .config ]] || die "Ebuild error: please copy default config into .config" |
25 |
|
26 |
+ if [[ -z "${KV_LOCALVERSION}" ]]; then |
27 |
+ KV_LOCALVERSION=$(sed -n -e 's#^CONFIG_LOCALVERSION="\(.*\)"$#\1#p' \ |
28 |
+ .config) |
29 |
+ fi |
30 |
+ |
31 |
mkdir -p "${WORKDIR}"/modprep || die |
32 |
mv .config "${WORKDIR}"/modprep/ || die |
33 |
emake O="${WORKDIR}"/modprep "${MAKEARGS[@]}" olddefconfig |
34 |
@@ -110,9 +115,10 @@ kernel-build_src_test() { |
35 |
emake O="${WORKDIR}"/build "${MAKEARGS[@]}" \ |
36 |
INSTALL_MOD_PATH="${T}" INSTALL_PATH="${ED}/boot" "${targets[@]}" |
37 |
|
38 |
- kernel-install_test "${PV}" \ |
39 |
+ local ver="${PV}${KV_LOCALVERSION}" |
40 |
+ kernel-install_test "${ver}" \ |
41 |
"${WORKDIR}/build/$(kernel-install_get_image_path)" \ |
42 |
- "${T}/lib/modules/${PV}" |
43 |
+ "${T}/lib/modules/${ver}" |
44 |
} |
45 |
|
46 |
# @FUNCTION: kernel-build_src_install |
47 |
@@ -136,16 +142,17 @@ kernel-build_src_install() { |
48 |
# note: we're using mv rather than doins to save space and time |
49 |
# install main and arch-specific headers first, and scripts |
50 |
local kern_arch=$(tc-arch-kernel) |
51 |
- dodir "/usr/src/linux-${PV}/arch/${kern_arch}" |
52 |
- mv include scripts "${ED}/usr/src/linux-${PV}/" || die |
53 |
+ local ver="${PV}${KV_LOCALVERSION}" |
54 |
+ dodir "/usr/src/linux-${ver}/arch/${kern_arch}" |
55 |
+ mv include scripts "${ED}/usr/src/linux-${ver}/" || die |
56 |
mv "arch/${kern_arch}/include" \ |
57 |
- "${ED}/usr/src/linux-${PV}/arch/${kern_arch}/" || die |
58 |
+ "${ED}/usr/src/linux-${ver}/arch/${kern_arch}/" || die |
59 |
|
60 |
# remove everything but Makefile* and Kconfig* |
61 |
find -type f '!' '(' -name 'Makefile*' -o -name 'Kconfig*' ')' \ |
62 |
-delete || die |
63 |
find -type l -delete || die |
64 |
- cp -p -R * "${ED}/usr/src/linux-${PV}/" || die |
65 |
+ cp -p -R * "${ED}/usr/src/linux-${ver}/" || die |
66 |
|
67 |
cd "${WORKDIR}" || die |
68 |
# strip out-of-source build stuffs from modprep |
69 |
@@ -156,20 +163,20 @@ kernel-build_src_install() { |
70 |
'(' -name '.*' -a -not -name '.config' ')' \ |
71 |
')' -delete || die |
72 |
rm modprep/source || die |
73 |
- cp -p -R modprep/. "${ED}/usr/src/linux-${PV}"/ || die |
74 |
+ cp -p -R modprep/. "${ED}/usr/src/linux-${ver}"/ || die |
75 |
|
76 |
# install the kernel and files needed for module builds |
77 |
- insinto "/usr/src/linux-${PV}" |
78 |
+ insinto "/usr/src/linux-${ver}" |
79 |
doins build/{System.map,Module.symvers} |
80 |
local image_path=$(kernel-install_get_image_path) |
81 |
- cp -p "build/${image_path}" "${ED}/usr/src/linux-${PV}/${image_path}" || die |
82 |
+ cp -p "build/${image_path}" "${ED}/usr/src/linux-${ver}/${image_path}" || die |
83 |
|
84 |
# strip empty directories |
85 |
find "${D}" -type d -empty -exec rmdir {} + || die |
86 |
|
87 |
# fix source tree and build dir symlinks |
88 |
- dosym ../../../usr/src/linux-${PV} /lib/modules/${PV}/build |
89 |
- dosym ../../../usr/src/linux-${PV} /lib/modules/${PV}/source |
90 |
+ dosym ../../../usr/src/linux-${ver} /lib/modules/${ver}/build |
91 |
+ dosym ../../../usr/src/linux-${ver} /lib/modules/${ver}/source |
92 |
|
93 |
save_config build/.config |
94 |
} |
95 |
|
96 |
diff --git a/eclass/kernel-install.eclass b/eclass/kernel-install.eclass |
97 |
index 8065a8f5638..ab886d28faf 100644 |
98 |
--- a/eclass/kernel-install.eclass |
99 |
+++ b/eclass/kernel-install.eclass |
100 |
@@ -20,6 +20,13 @@ |
101 |
# Additionally, the inherited mount-boot eclass exports pkg_pretend. |
102 |
# It also stubs out pkg_preinst and pkg_prerm defined by mount-boot. |
103 |
|
104 |
+# @ECLASS-VARIABLE: KV_LOCALVERSION |
105 |
+# @DEFAULT_UNSET |
106 |
+# @DESCRIPTION: |
107 |
+# A string containing the kernel LOCALVERSION, e.g. '-gentoo'. |
108 |
+# Needs to be set only when installing binary kernels, |
109 |
+# kernel-build.eclass obtains it from kernel config. |
110 |
+ |
111 |
if [[ ! ${_KERNEL_INSTALL_ECLASS} ]]; then |
112 |
|
113 |
case "${EAPI:-0}" in |
114 |
@@ -311,21 +318,22 @@ kernel-install_pkg_postinst() { |
115 |
if [[ -z ${ROOT} ]]; then |
116 |
mount-boot_pkg_preinst |
117 |
|
118 |
+ local ver="${PV}${KV_LOCALVERSION}" |
119 |
local image_path=$(kernel-install_get_image_path) |
120 |
if use initramfs; then |
121 |
# putting it alongside kernel image as 'initrd' makes |
122 |
# kernel-install happier |
123 |
kernel-install_build_initramfs \ |
124 |
- "${EROOT}/usr/src/linux-${PV}/${image_path%/*}/initrd" \ |
125 |
- "${PV}" |
126 |
+ "${EROOT}/usr/src/linux-${ver}/${image_path%/*}/initrd" \ |
127 |
+ "${ver}" |
128 |
fi |
129 |
|
130 |
- kernel-install_install_kernel "${PV}" \ |
131 |
- "${EROOT}/usr/src/linux-${PV}/${image_path}" \ |
132 |
- "${EROOT}/usr/src/linux-${PV}/System.map" |
133 |
+ kernel-install_install_kernel "${ver}" \ |
134 |
+ "${EROOT}/usr/src/linux-${ver}/${image_path}" \ |
135 |
+ "${EROOT}/usr/src/linux-${ver}/System.map" |
136 |
fi |
137 |
|
138 |
- kernel-install_update_symlink "${EROOT}/usr/src/linux" "${PV}" |
139 |
+ kernel-install_update_symlink "${EROOT}/usr/src/linux" "${ver}" |
140 |
} |
141 |
|
142 |
# @FUNCTION: kernel-install_pkg_prerm |
143 |
@@ -345,10 +353,11 @@ kernel-install_pkg_postrm() { |
144 |
debug-print-function ${FUNCNAME} "${@}" |
145 |
|
146 |
if [[ -z ${ROOT} ]] && use initramfs; then |
147 |
+ local ver="${PV}${KV_LOCALVERSION}" |
148 |
local image_path=$(kernel-install_get_image_path) |
149 |
ebegin "Removing initramfs" |
150 |
- rm -f "${EROOT}/usr/src/linux-${PV}/${image_path%/*}/initrd" && |
151 |
- find "${EROOT}/usr/src/linux-${PV}" -depth -type d -empty -delete |
152 |
+ rm -f "${EROOT}/usr/src/linux-${ver}/${image_path%/*}/initrd" && |
153 |
+ find "${EROOT}/usr/src/linux-${ver}" -depth -type d -empty -delete |
154 |
eend ${?} |
155 |
fi |
156 |
} |
157 |
@@ -361,18 +370,19 @@ kernel-install_pkg_config() { |
158 |
|
159 |
mount-boot_pkg_preinst |
160 |
|
161 |
+ local ver="${PV}${KV_LOCALVERSION}" |
162 |
local image_path=$(kernel-install_get_image_path) |
163 |
if use initramfs; then |
164 |
# putting it alongside kernel image as 'initrd' makes |
165 |
# kernel-install happier |
166 |
kernel-install_build_initramfs \ |
167 |
- "${EROOT}/usr/src/linux-${PV}/${image_path%/*}/initrd" \ |
168 |
- "${PV}" |
169 |
+ "${EROOT}/usr/src/linux-${ver}/${image_path%/*}/initrd" \ |
170 |
+ "${ver}" |
171 |
fi |
172 |
|
173 |
- kernel-install_install_kernel "${PV}" \ |
174 |
- "${EROOT}/usr/src/linux-${PV}/${image_path}" \ |
175 |
- "${EROOT}/usr/src/linux-${PV}/System.map" |
176 |
+ kernel-install_install_kernel "${ver}" \ |
177 |
+ "${EROOT}/usr/src/linux-${ver}/${image_path}" \ |
178 |
+ "${EROOT}/usr/src/linux-${ver}/System.map" |
179 |
} |
180 |
|
181 |
_KERNEL_INSTALL_ECLASS=1 |