mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Masahiro Yamada <masahiroy@kernel.org>
To: linux-kbuild@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	Masahiro Yamada <masahiroy@kernel.org>,
	Nathan Chancellor <nathan@kernel.org>,
	Nick Desaulniers <ndesaulniers@google.com>,
	Nicolas Schier <nicolas@fjasle.eu>
Subject: [PATCH 09/19] kbuild: refactor kernel-devel RPM package and linux-headers Deb package
Date: Sat, 22 Jul 2023 13:47:56 +0900	[thread overview]
Message-ID: <20230722044806.3867434-9-masahiroy@kernel.org> (raw)
In-Reply-To: <20230722044806.3867434-1-masahiroy@kernel.org>

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 <masahiroy@kernel.org>
---

 scripts/package/builddeb             | 29 +--------------------
 scripts/package/install-extmod-build | 39 ++++++++++++++++++++++++++++
 scripts/package/mkspec               |  6 +----
 3 files changed, 41 insertions(+), 33 deletions(-)
 create mode 100755 scripts/package/install-extmod-build

diff --git a/scripts/package/builddeb b/scripts/package/builddeb
index 032774eb061e..bf3f8561aa68 100755
--- a/scripts/package/builddeb
+++ b/scripts/package/builddeb
@@ -162,34 +162,7 @@ install_kernel_headers () {
 
 	rm -rf $pdir
 
-	(
-		cd $srctree
-		find . arch/$SRCARCH -maxdepth 1 -name Makefile\*
-		find include scripts -type f -o -type l
-		find arch/$SRCARCH -name Kbuild.platforms -o -name Platform
-		find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f
-	) > debian/hdrsrcfiles
-
-	{
-		if is_enabled CONFIG_OBJTOOL; then
-			echo tools/objtool/objtool
-		fi
-
-		find arch/$SRCARCH/include Module.symvers include scripts -type f
-
-		if is_enabled CONFIG_GCC_PLUGINS; then
-			find scripts/gcc-plugins -name \*.so
-		fi
-	} > debian/hdrobjfiles
-
-	destdir=$pdir/usr/src/linux-headers-$version
-	mkdir -p $destdir
-	tar -c -f - -C $srctree -T debian/hdrsrcfiles | tar -xf - -C $destdir
-	tar -c -f - -T debian/hdrobjfiles | tar -xf - -C $destdir
-	rm -f debian/hdrsrcfiles debian/hdrobjfiles
-
-	# copy .config manually to be where it's expected to be
-	cp $KCONFIG_CONFIG $destdir/.config
+	"${srctree}/scripts/package/install-extmod-build" "${pdir}/usr/src/linux-headers-${version}"
 
 	mkdir -p $pdir/lib/modules/$version/
 	ln -s /usr/src/linux-headers-$version $pdir/lib/modules/$version/build
diff --git a/scripts/package/install-extmod-build b/scripts/package/install-extmod-build
new file mode 100755
index 000000000000..af7fe9f5b1e4
--- /dev/null
+++ b/scripts/package/install-extmod-build
@@ -0,0 +1,39 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0-only
+
+set -e
+
+destdir=${1}
+
+test -n "${srctree}"
+test -n "${SRCARCH}"
+
+is_enabled() {
+	grep -q "^$1=y" include/config/auto.conf
+}
+
+mkdir -p "${destdir}"
+
+(
+	cd "${srctree}"
+	echo Makefile
+	find "arch/${SRCARCH}" -maxdepth 1 -name 'Makefile*'
+	find include scripts -type f -o -type l
+	find "arch/${SRCARCH}" -name Kbuild.platforms -o -name Platform
+	find "$(find "arch/${SRCARCH}" -name include -o -name scripts -type d)" -type f
+) | tar -c -f - -C "${srctree}" -T - | tar -xf - -C "${destdir}"
+
+{
+	if is_enabled CONFIG_OBJTOOL; then
+		echo tools/objtool/objtool
+	fi
+
+	find "arch/${SRCARCH}/include" Module.symvers include scripts -type f
+
+	if is_enabled CONFIG_GCC_PLUGINS; then
+		find scripts/gcc-plugins -name '*.so'
+	fi
+} | tar -c -f - -T - | tar -xf - -C "${destdir}"
+
+# copy .config manually to be where it's expected to be
+cp "${KCONFIG_CONFIG}" "${destdir}/.config"
diff --git a/scripts/package/mkspec b/scripts/package/mkspec
index 34b2489106cf..22e290d23d8a 100755
--- a/scripts/package/mkspec
+++ b/scripts/package/mkspec
@@ -28,9 +28,6 @@ else
 fi
 
 __KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
-EXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \
---exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
---exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s"
 
 # We can label the here-doc lines for conditional output to the spec file
 #
@@ -112,8 +109,7 @@ $M	%{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} modules_install
 	cp .config %{buildroot}/boot/config-%{KERNELRELEASE}
 $S$M	rm -f %{buildroot}/lib/modules/%{KERNELRELEASE}/build
 $S$M	rm -f %{buildroot}/lib/modules/%{KERNELRELEASE}/source
-$S$M	mkdir -p %{buildroot}/usr/src/kernels/%{KERNELRELEASE}
-$S$M	tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/%{KERNELRELEASE}
+$S$M	%{make} %{makeflags} run-command KBUILD_RUN_COMMAND='\${srctree}/scripts/package/install-extmod-build %{buildroot}/usr/src/kernels/%{KERNELRELEASE}'
 $S$M	cd %{buildroot}/lib/modules/%{KERNELRELEASE}
 $S$M	ln -sf /usr/src/kernels/%{KERNELRELEASE} build
 $S$M	ln -sf /usr/src/kernels/%{KERNELRELEASE} source
-- 
2.39.2


  parent reply	other threads:[~2023-07-22  4:49 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-22  4:47 [PATCH 01/19] kbuild: rpm-pkg: define _arch conditionally Masahiro Yamada
2023-07-22  4:47 ` [PATCH 02/19] kbuild: rpm-pkg: remove unneeded '-f $srctree/Makefile' in spec file Masahiro Yamada
2023-07-22  4:47 ` [PATCH 03/19] kbuild: rpm-pkg: do not hard-code $MAKE " Masahiro Yamada
2023-07-22  4:47 ` [PATCH 04/19] kbuild: rpm-pkg: use %{makeflags} to pass common Make options Masahiro Yamada
2023-07-22  4:47 ` [PATCH 05/19] kbuild: rpm-pkg: record ARCH option in spec file Masahiro Yamada
2023-07-22  4:47 ` [PATCH 06/19] kbuild: rpm-pkg: replace $__KERNELRELEASE in spec file with %{version} Masahiro Yamada
2023-07-22  4:47 ` [PATCH 07/19] kbuild: rpm-pkg: replace $KERNELRELEASE in spec file with %{KERNELRELEASE} Masahiro Yamada
2023-07-22  4:47 ` [PATCH 08/19] kbuild: add a phony target to run a command with Kbuild env vars Masahiro Yamada
2023-07-24 19:53   ` Nicolas Schier
2023-07-22  4:47 ` Masahiro Yamada [this message]
2023-07-22  4:47 ` [PATCH 10/19] kbuild: rpm-pkg: derive the Version from %{KERNELRELEASE} Masahiro Yamada
2023-07-22  4:47 ` [PATCH 11/19] kbuild: rpm-pkg: use a dummy string for _arch when undefined Masahiro Yamada
2023-09-12  7:09   ` chenxiang (M)
2023-09-14  4:58     ` Masahiro Yamada
2023-07-22  4:47 ` [PATCH 12/19] kbuild: rpm-pkg: invoke the kernel build from rpmbuild for binrpm-pkg Masahiro Yamada
2023-07-22  4:48 ` [PATCH 13/19] kbuild: rpm-pkg: run modules_install for non-modular kernel Masahiro Yamada
2023-07-22  4:48 ` [PATCH 14/19] kbuild: rpm-pkg: introduce %{with_devel} switch to select devel package Masahiro Yamada
2023-07-22  4:48 ` [PATCH 15/19] kbuild: rpm-pkg: split out the body of spec file Masahiro Yamada
2023-07-22  4:48 ` [PATCH 16/19] kbuild: rpm-pkg: rename binkernel.spec to kernel.spec Masahiro Yamada
2023-07-22  4:48 ` [PATCH 17/19] kbuild: rpm-pkg: build the kernel in-place for rpm-pkg Masahiro Yamada
2023-07-22  4:48 ` [PATCH 18/19] kbuild: rpm-pkg: refactor *rpm-pkg targets Masahiro Yamada
2023-07-22  4:48 ` [PATCH 19/19] kbuild: rpm-pkg: skip build dependency check on non-rpm systems Masahiro Yamada

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230722044806.3867434-9-masahiroy@kernel.org \
    --to=masahiroy@kernel.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nathan@kernel.org \
    --cc=ndesaulniers@google.com \
    --cc=nicolas@fjasle.eu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®