linux-kbuild.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [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).