kbuild: srcrpm-pkg: create source package without cleaning
authorMasahiro Yamada <masahiroy@kernel.org>
Wed, 15 Feb 2023 01:20:26 +0000 (10:20 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Sun, 26 Feb 2023 06:18:47 +0000 (15:18 +0900)
If you run 'make (src)rpm-pkg', all objects are lost due to 'make clean',
which makes the incremental builds impossible.

Instead of cleaning, pass the exclude list to tar's --exclude-from
option.

Previously, the .config was contained in the source tarball.

With this commit, the source rpm consists of separate linux.tar.gz
and .config.

Remove stale comments. Now, 'make (src)rpm-pkg' works with O= option.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
scripts/Makefile.package
scripts/package/mkspec

index 55441d776d703efafe6f158fcc7239bf7049dcf6..7266a11855f4957ac12f4bb45db29f7a4d4727cc 100644 (file)
@@ -3,27 +3,6 @@
 
 include $(srctree)/scripts/Kbuild.include
 
-# RPM target
-# ---------------------------------------------------------------------------
-# The rpm target generates two rpm files:
-# /usr/src/packages/SRPMS/kernel-2.6.7rc2-1.src.rpm
-# /usr/src/packages/RPMS/i386/kernel-2.6.7rc2-1.<arch>.rpm
-# The src.rpm files includes all source for the kernel being built
-# The <arch>.rpm includes kernel configuration, modules etc.
-#
-# Process to create the rpm files
-# a) clean the kernel
-# b) Generate .spec file
-# c) Build a tar ball, using symlink to make kernel version
-#    first entry in the path
-# d) and pack the result to a tar.gz file
-# e) generate the rpm files, based on kernel.spec
-# - Use /. to avoid tar packing just the symlink
-
-# Note that the rpm-pkg target cannot be used with KBUILD_OUTPUT,
-# but the binrpm-pkg target can; for some reason O= gets ignored.
-
-# Remove hyphens since they have special meaning in RPM filenames
 KERNELPATH := kernel-$(subst -,_,$(KERNELRELEASE))
 KDEB_SOURCENAME ?= linux-upstream
 KBUILD_PKG_ROOTCMD ?="fakeroot -u"
@@ -42,8 +21,7 @@ if test "$(objtree)" != "$(srctree)"; then \
        echo >&2; \
        echo >&2 "  ERROR:"; \
        echo >&2 "  Building source tarball is not possible outside the"; \
-       echo >&2 "  kernel source tree. Don't set KBUILD_OUTPUT, or use the"; \
-       echo >&2 "  binrpm-pkg target instead."; \
+       echo >&2 "  kernel source tree. Don't set KBUILD_OUTPUT"; \
        echo >&2; \
        false; \
 fi ; \
@@ -95,12 +73,10 @@ rpm-pkg: srcrpm-pkg
 # srcrpm-pkg
 # ---------------------------------------------------------------------------
 PHONY += srcrpm-pkg
-srcrpm-pkg:
-       $(MAKE) clean
+srcrpm-pkg: linux.tar.gz
        $(CONFIG_SHELL) $(MKSPEC) >$(objtree)/kernel.spec
-       $(call cmd,src_tar,$(KERNELPATH),kernel.spec)
-       +rpmbuild $(RPMOPTS) --target $(UTS_MACHINE)-linux -ts $(KERNELPATH).tar.gz \
-       --define='_smp_mflags %{nil}' --define='_srcrpmdir $(srctree)'
+       +rpmbuild $(RPMOPTS) --target $(UTS_MACHINE)-linux -bs kernel.spec \
+       --define='_smp_mflags %{nil}' --define='_sourcedir .' --define='_srcrpmdir .'
 
 # binrpm-pkg
 # ---------------------------------------------------------------------------
index 108c0cb95436202549ab5d12d3cd34b807cfc493..83a64d9d737202b63083e442a0e3ab4b6d56b0d2 100755 (executable)
@@ -47,7 +47,8 @@ sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
        Group: System Environment/Kernel
        Vendor: The Linux Community
        URL: https://www.kernel.org
-$S     Source: kernel-$__KERNELRELEASE.tar.gz
+$S     Source0: linux.tar.gz
+$S     Source1: .config
        Provides: $PROVIDES
 $S     BuildRequires: bc binutils bison dwarves
 $S     BuildRequires: (elfutils-libelf-devel or libelf-devel) flex
@@ -83,9 +84,8 @@ $S$M  This package provides kernel headers and makefiles sufficient to build modu
 $S$M   against the $__KERNELRELEASE kernel package.
 $S$M
 $S     %prep
-$S     %setup -q
-$S     rm -f scripts/basic/fixdep scripts/kconfig/conf
-$S     rm -f tools/objtool/{fixdep,objtool}
+$S     %setup -q -n linux
+$S     cp %{SOURCE1} .
 $S
 $S     %build
 $S     $MAKE %{?_smp_mflags} KERNELRELEASE=$KERNELRELEASE KBUILD_BUILD_VERSION=%{release}