* [PATCH 1/4] rpm-pkg: Do not package the whole source directory
@ 2013-04-15 20:35 Michal Marek
2013-04-15 20:35 ` [PATCH 2/4] rpm-pkg: Do not write to the parent directory Michal Marek
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Michal Marek @ 2013-04-15 20:35 UTC (permalink / raw)
To: linux-kbuild; +Cc: jkosina, linux-kernel
The source tree can contain lots of uninteresting data like tag or
cscope files, packaging which slows down make rpm needlessly. It can
also break the build, if the tree contains an unrelated file named
*.spec. The downside of this change is that new subdirectories have to
be added to the KBUILD_ALLDIR variable in the top-level Makefile. The
upside is that the behavior is more predictable.
Signed-off-by: Michal Marek <mmarek@suse.cz>
---
Makefile | 2 ++
scripts/package/Makefile | 6 +++++-
2 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/Makefile b/Makefile
index 5bd9f770..84392df 100644
--- a/Makefile
+++ b/Makefile
@@ -756,6 +756,8 @@ export KBUILD_VMLINUX_INIT := $(head-y) $(init-y)
export KBUILD_VMLINUX_MAIN := $(core-y) $(libs-y) $(drivers-y) $(net-y)
export KBUILD_LDS := arch/$(SRCARCH)/kernel/vmlinux.lds
export LDFLAGS_vmlinux
+# used by scripts/pacmage/Makefile
+export KBUILD_ALLDIRS := $(sort $(filter-out arch/%,$(vmlinux-alldirs)) arch Documentation include samples scripts tools virt)
vmlinux-deps := $(KBUILD_LDS) $(KBUILD_VMLINUX_INIT) $(KBUILD_VMLINUX_MAIN)
diff --git a/scripts/package/Makefile b/scripts/package/Makefile
index d7b3285..b70b33e 100644
--- a/scripts/package/Makefile
+++ b/scripts/package/Makefile
@@ -27,6 +27,10 @@ RPM := $(shell if [ -x "/usr/bin/rpmbuild" ]; then echo rpmbuild; \
# Remove hyphens since they have special meaning in RPM filenames
KERNELPATH := kernel-$(subst -,_,$(KERNELRELEASE))
+# Include only those top-level files that are needed by make, plus the GPL copy
+TAR_CONTENT := $(KBUILD_ALLDIRS) kernel.spec .config .scmversion Makefile \
+ Kbuild Kconfig COPYING $(wildcard localversion*)
+TAR_CONTENT := $(addprefix $(KERNELPATH)/,$(TAR_CONTENT))
MKSPEC := $(srctree)/scripts/package/mkspec
PREV := set -e; cd -P ..;
@@ -45,7 +49,7 @@ rpm-pkg rpm: $(objtree)/kernel.spec FORCE
$(MAKE) clean
$(PREV) ln -sf $(srctree) $(KERNELPATH)
$(CONFIG_SHELL) $(srctree)/scripts/setlocalversion --save-scmversion
- $(PREV) tar -cz $(RCS_TAR_IGNORE) -f $(KERNELPATH).tar.gz $(KERNELPATH)/.
+ $(PREV) tar -cz $(RCS_TAR_IGNORE) -f $(KERNELPATH).tar.gz $(TAR_CONTENT)
$(PREV) rm $(KERNELPATH)
rm -f $(objtree)/.scmversion
set -e; \
--
1.7.3.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/4] rpm-pkg: Do not write to the parent directory
2013-04-15 20:35 [PATCH 1/4] rpm-pkg: Do not package the whole source directory Michal Marek
@ 2013-04-15 20:35 ` Michal Marek
2013-04-15 20:35 ` [PATCH 3/4] rpm-pkg: Always regenerate the specfile Michal Marek
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Michal Marek @ 2013-04-15 20:35 UTC (permalink / raw)
To: linux-kbuild; +Cc: jkosina, linux-kernel
Now that we only package explicitly listed files to the tarball, there
is no need to abuse the parent directory.
Signed-off-by: Michal Marek <mmarek@suse.cz>
---
scripts/package/Makefile | 12 +++++-------
1 files changed, 5 insertions(+), 7 deletions(-)
diff --git a/scripts/package/Makefile b/scripts/package/Makefile
index b70b33e..ab203c2 100644
--- a/scripts/package/Makefile
+++ b/scripts/package/Makefile
@@ -32,7 +32,6 @@ TAR_CONTENT := $(KBUILD_ALLDIRS) kernel.spec .config .scmversion Makefile \
Kbuild Kconfig COPYING $(wildcard localversion*)
TAR_CONTENT := $(addprefix $(KERNELPATH)/,$(TAR_CONTENT))
MKSPEC := $(srctree)/scripts/package/mkspec
-PREV := set -e; cd -P ..;
# rpm-pkg
# ---------------------------------------------------------------------------
@@ -47,18 +46,17 @@ rpm-pkg rpm: $(objtree)/kernel.spec FORCE
false; \
fi
$(MAKE) clean
- $(PREV) ln -sf $(srctree) $(KERNELPATH)
+ ln -sf $(srctree) $(KERNELPATH)
$(CONFIG_SHELL) $(srctree)/scripts/setlocalversion --save-scmversion
- $(PREV) tar -cz $(RCS_TAR_IGNORE) -f $(KERNELPATH).tar.gz $(TAR_CONTENT)
- $(PREV) rm $(KERNELPATH)
+ tar -cz $(RCS_TAR_IGNORE) -f $(KERNELPATH).tar.gz $(TAR_CONTENT)
+ rm $(KERNELPATH)
rm -f $(objtree)/.scmversion
set -e; \
$(CONFIG_SHELL) $(srctree)/scripts/mkversion > $(objtree)/.tmp_version
set -e; \
mv -f $(objtree)/.tmp_version $(objtree)/.version
-
- $(RPM) $(RPMOPTS) --target $(UTS_MACHINE) -ta ../$(KERNELPATH).tar.gz
- rm ../$(KERNELPATH).tar.gz
+ $(RPM) $(RPMOPTS) --target $(UTS_MACHINE) -ta $(KERNELPATH).tar.gz
+ rm $(KERNELPATH).tar.gz
clean-files := $(objtree)/kernel.spec
--
1.7.3.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 3/4] rpm-pkg: Always regenerate the specfile
2013-04-15 20:35 [PATCH 1/4] rpm-pkg: Do not package the whole source directory Michal Marek
2013-04-15 20:35 ` [PATCH 2/4] rpm-pkg: Do not write to the parent directory Michal Marek
@ 2013-04-15 20:35 ` Michal Marek
2013-04-15 20:35 ` [PATCH 4/4] rpm-pkg: Remove pointless set -e statements Michal Marek
2013-04-18 13:00 ` [PATCH 1/4] rpm-pkg: Do not package the whole source directory Michal Marek
3 siblings, 0 replies; 5+ messages in thread
From: Michal Marek @ 2013-04-15 20:35 UTC (permalink / raw)
To: linux-kbuild; +Cc: jkosina, linux-kernel
The *pkg targets are always run, so it makes no sense to cache the
generated specfile. This also fixes build errors when the specfile
becomes out of date, without the Makefile noticing it:
$ make rpm
works
$ echo yadadada >localversion-test
$ make rpm
fails, because kernel.spec assumes the old kernel release string
Signed-off-by: Michal Marek <mmarek@suse.cz>
---
scripts/package/Makefile | 19 ++++++-------------
1 files changed, 6 insertions(+), 13 deletions(-)
diff --git a/scripts/package/Makefile b/scripts/package/Makefile
index ab203c2..08e4e2f 100644
--- a/scripts/package/Makefile
+++ b/scripts/package/Makefile
@@ -35,10 +35,7 @@ MKSPEC := $(srctree)/scripts/package/mkspec
# rpm-pkg
# ---------------------------------------------------------------------------
-$(objtree)/kernel.spec: $(MKSPEC) $(srctree)/Makefile
- $(CONFIG_SHELL) $(MKSPEC) > $@
-
-rpm-pkg rpm: $(objtree)/kernel.spec FORCE
+rpm-pkg rpm: FORCE
@if test "$(objtree)" != "$(srctree)"; then \
echo "Building source + binary RPM is not possible outside the"; \
echo "kernel source tree. Don't set KBUILD_OUTPUT, or use the"; \
@@ -47,6 +44,7 @@ rpm-pkg rpm: $(objtree)/kernel.spec FORCE
fi
$(MAKE) clean
ln -sf $(srctree) $(KERNELPATH)
+ $(CONFIG_SHELL) $(MKSPEC) >$(objtree)/kernel.spec
$(CONFIG_SHELL) $(srctree)/scripts/setlocalversion --save-scmversion
tar -cz $(RCS_TAR_IGNORE) -f $(KERNELPATH).tar.gz $(TAR_CONTENT)
rm $(KERNELPATH)
@@ -56,17 +54,13 @@ rpm-pkg rpm: $(objtree)/kernel.spec FORCE
set -e; \
mv -f $(objtree)/.tmp_version $(objtree)/.version
$(RPM) $(RPMOPTS) --target $(UTS_MACHINE) -ta $(KERNELPATH).tar.gz
- rm $(KERNELPATH).tar.gz
-
-clean-files := $(objtree)/kernel.spec
+ rm $(KERNELPATH).tar.gz kernel.spec
# binrpm-pkg
# ---------------------------------------------------------------------------
-$(objtree)/binkernel.spec: $(MKSPEC) $(srctree)/Makefile
- $(CONFIG_SHELL) $(MKSPEC) prebuilt > $@
-
-binrpm-pkg: $(objtree)/binkernel.spec FORCE
+binrpm-pkg: FORCE
$(MAKE) KBUILD_SRC=
+ $(CONFIG_SHELL) $(MKSPEC) prebuilt > $(objtree)/binkernel.spec
set -e; \
$(CONFIG_SHELL) $(srctree)/scripts/mkversion > $(objtree)/.tmp_version
set -e; \
@@ -74,8 +68,7 @@ binrpm-pkg: $(objtree)/binkernel.spec FORCE
$(RPM) $(RPMOPTS) --define "_builddir $(objtree)" --target \
$(UTS_MACHINE) -bb $<
-
-clean-files += $(objtree)/binkernel.spec
+ rm binkernel.spec
# Deb target
# ---------------------------------------------------------------------------
--
1.7.3.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 4/4] rpm-pkg: Remove pointless set -e statements
2013-04-15 20:35 [PATCH 1/4] rpm-pkg: Do not package the whole source directory Michal Marek
2013-04-15 20:35 ` [PATCH 2/4] rpm-pkg: Do not write to the parent directory Michal Marek
2013-04-15 20:35 ` [PATCH 3/4] rpm-pkg: Always regenerate the specfile Michal Marek
@ 2013-04-15 20:35 ` Michal Marek
2013-04-18 13:00 ` [PATCH 1/4] rpm-pkg: Do not package the whole source directory Michal Marek
3 siblings, 0 replies; 5+ messages in thread
From: Michal Marek @ 2013-04-15 20:35 UTC (permalink / raw)
To: linux-kbuild; +Cc: jkosina, linux-kernel
Signed-off-by: Michal Marek <mmarek@suse.cz>
---
scripts/package/Makefile | 4 ----
1 files changed, 0 insertions(+), 4 deletions(-)
diff --git a/scripts/package/Makefile b/scripts/package/Makefile
index 08e4e2f..84a4060 100644
--- a/scripts/package/Makefile
+++ b/scripts/package/Makefile
@@ -49,9 +49,7 @@ rpm-pkg rpm: FORCE
tar -cz $(RCS_TAR_IGNORE) -f $(KERNELPATH).tar.gz $(TAR_CONTENT)
rm $(KERNELPATH)
rm -f $(objtree)/.scmversion
- set -e; \
$(CONFIG_SHELL) $(srctree)/scripts/mkversion > $(objtree)/.tmp_version
- set -e; \
mv -f $(objtree)/.tmp_version $(objtree)/.version
$(RPM) $(RPMOPTS) --target $(UTS_MACHINE) -ta $(KERNELPATH).tar.gz
rm $(KERNELPATH).tar.gz kernel.spec
@@ -61,9 +59,7 @@ rpm-pkg rpm: FORCE
binrpm-pkg: FORCE
$(MAKE) KBUILD_SRC=
$(CONFIG_SHELL) $(MKSPEC) prebuilt > $(objtree)/binkernel.spec
- set -e; \
$(CONFIG_SHELL) $(srctree)/scripts/mkversion > $(objtree)/.tmp_version
- set -e; \
mv -f $(objtree)/.tmp_version $(objtree)/.version
$(RPM) $(RPMOPTS) --define "_builddir $(objtree)" --target \
--
1.7.3.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/4] rpm-pkg: Do not package the whole source directory
2013-04-15 20:35 [PATCH 1/4] rpm-pkg: Do not package the whole source directory Michal Marek
` (2 preceding siblings ...)
2013-04-15 20:35 ` [PATCH 4/4] rpm-pkg: Remove pointless set -e statements Michal Marek
@ 2013-04-18 13:00 ` Michal Marek
3 siblings, 0 replies; 5+ messages in thread
From: Michal Marek @ 2013-04-18 13:00 UTC (permalink / raw)
To: linux-kbuild; +Cc: jkosina, linux-kernel
On 15.4.2013 22:35, Michal Marek wrote:
> The source tree can contain lots of uninteresting data like tag or
> cscope files, packaging which slows down make rpm needlessly. It can
> also break the build, if the tree contains an unrelated file named
> *.spec. The downside of this change is that new subdirectories have to
> be added to the KBUILD_ALLDIR variable in the top-level Makefile. The
> upside is that the behavior is more predictable.
I merged this and the other three patches to kbuild.git#misc.
Michal
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2013-04-18 13:00 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-15 20:35 [PATCH 1/4] rpm-pkg: Do not package the whole source directory Michal Marek
2013-04-15 20:35 ` [PATCH 2/4] rpm-pkg: Do not write to the parent directory Michal Marek
2013-04-15 20:35 ` [PATCH 3/4] rpm-pkg: Always regenerate the specfile Michal Marek
2013-04-15 20:35 ` [PATCH 4/4] rpm-pkg: Remove pointless set -e statements Michal Marek
2013-04-18 13:00 ` [PATCH 1/4] rpm-pkg: Do not package the whole source directory Michal Marek
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).