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: Mon, 29 Jun 2020 07:16:20
Message-Id: 1593414968.1ddeca37606e5b752735d8c96c6a50a2e44d07e0.mgorny@gentoo
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