Skip to content

Commit fe66b5d

Browse files
committed
kbuild: refactor kernel-devel RPM package and linux-headers Deb package
The kernel-devel RPM package and the linux-headers Debian package provide headers and scripts needed for building external modules. They copy the necessary files in slightly different ways - the RPM copies almost everything except some exclude patterns, while the Debian copies less number of files. There is no need to maintain different code to do the same thing. Split the Debian code out to scripts/package/install-extmod-build, which is called from both of the packages. Signed-off-by: Masahiro Yamada <[email protected]>
1 parent 76a48b8 commit fe66b5d

File tree

3 files changed

+41
-33
lines changed

3 files changed

+41
-33
lines changed

scripts/package/builddeb

Lines changed: 1 addition & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -162,34 +162,7 @@ install_kernel_headers () {
162162

163163
rm -rf $pdir
164164

165-
(
166-
cd $srctree
167-
find . arch/$SRCARCH -maxdepth 1 -name Makefile\*
168-
find include scripts -type f -o -type l
169-
find arch/$SRCARCH -name Kbuild.platforms -o -name Platform
170-
find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f
171-
) > debian/hdrsrcfiles
172-
173-
{
174-
if is_enabled CONFIG_OBJTOOL; then
175-
echo tools/objtool/objtool
176-
fi
177-
178-
find arch/$SRCARCH/include Module.symvers include scripts -type f
179-
180-
if is_enabled CONFIG_GCC_PLUGINS; then
181-
find scripts/gcc-plugins -name \*.so
182-
fi
183-
} > debian/hdrobjfiles
184-
185-
destdir=$pdir/usr/src/linux-headers-$version
186-
mkdir -p $destdir
187-
tar -c -f - -C $srctree -T debian/hdrsrcfiles | tar -xf - -C $destdir
188-
tar -c -f - -T debian/hdrobjfiles | tar -xf - -C $destdir
189-
rm -f debian/hdrsrcfiles debian/hdrobjfiles
190-
191-
# copy .config manually to be where it's expected to be
192-
cp $KCONFIG_CONFIG $destdir/.config
165+
"${srctree}/scripts/package/install-extmod-build" "${pdir}/usr/src/linux-headers-${version}"
193166

194167
mkdir -p $pdir/lib/modules/$version/
195168
ln -s /usr/src/linux-headers-$version $pdir/lib/modules/$version/build

scripts/package/install-extmod-build

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#!/bin/sh
2+
# SPDX-License-Identifier: GPL-2.0-only
3+
4+
set -e
5+
6+
destdir=${1}
7+
8+
test -n "${srctree}"
9+
test -n "${SRCARCH}"
10+
11+
is_enabled() {
12+
grep -q "^$1=y" include/config/auto.conf
13+
}
14+
15+
mkdir -p "${destdir}"
16+
17+
(
18+
cd "${srctree}"
19+
echo Makefile
20+
find "arch/${SRCARCH}" -maxdepth 1 -name 'Makefile*'
21+
find include scripts -type f -o -type l
22+
find "arch/${SRCARCH}" -name Kbuild.platforms -o -name Platform
23+
find "$(find "arch/${SRCARCH}" -name include -o -name scripts -type d)" -type f
24+
) | tar -c -f - -C "${srctree}" -T - | tar -xf - -C "${destdir}"
25+
26+
{
27+
if is_enabled CONFIG_OBJTOOL; then
28+
echo tools/objtool/objtool
29+
fi
30+
31+
find "arch/${SRCARCH}/include" Module.symvers include scripts -type f
32+
33+
if is_enabled CONFIG_GCC_PLUGINS; then
34+
find scripts/gcc-plugins -name '*.so'
35+
fi
36+
} | tar -c -f - -T - | tar -xf - -C "${destdir}"
37+
38+
# copy .config manually to be where it's expected to be
39+
cp "${KCONFIG_CONFIG}" "${destdir}/.config"

scripts/package/mkspec

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,6 @@ else
2828
fi
2929

3030
__KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
31-
EXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \
32-
--exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
33-
--exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s"
3431

3532
# We can label the here-doc lines for conditional output to the spec file
3633
#
@@ -112,8 +109,7 @@ $M %{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} modules_install
112109
cp .config %{buildroot}/boot/config-%{KERNELRELEASE}
113110
$S$M rm -f %{buildroot}/lib/modules/%{KERNELRELEASE}/build
114111
$S$M rm -f %{buildroot}/lib/modules/%{KERNELRELEASE}/source
115-
$S$M mkdir -p %{buildroot}/usr/src/kernels/%{KERNELRELEASE}
116-
$S$M tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/%{KERNELRELEASE}
112+
$S$M %{make} %{makeflags} run-command KBUILD_RUN_COMMAND='\${srctree}/scripts/package/install-extmod-build %{buildroot}/usr/src/kernels/%{KERNELRELEASE}'
117113
$S$M cd %{buildroot}/lib/modules/%{KERNELRELEASE}
118114
$S$M ln -sf /usr/src/kernels/%{KERNELRELEASE} build
119115
$S$M ln -sf /usr/src/kernels/%{KERNELRELEASE} source

0 commit comments

Comments
 (0)