mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-24 04:34:08 +08:00
kbuild: srcrpm-pkg: create source package without cleaning
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>
This commit is contained in:
parent
1ec9bb704f
commit
6fc91752d7
@ -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
|
||||
# ---------------------------------------------------------------------------
|
||||
|
@ -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}
|
||||
|
Loading…
Reference in New Issue
Block a user