From 4c6e00cffcd478a369b6fd0ba61f5b0f9643ff43 Mon Sep 17 00:00:00 2001 From: Bin Wang Date: Mon, 25 Feb 2013 11:05:24 +0800 Subject: scripts/package/Makefile: compare objtree with srctree instead of test KBUILD_OUTPUT KBUILD_OUTPUT is always empty here, so it is useless to test it. But while use O=.., objtree and srctree will be different. I compare them instead. Signed-off-by: Bin Wang Signed-off-by: Michal Marek --- scripts/package/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'scripts/package/Makefile') diff --git a/scripts/package/Makefile b/scripts/package/Makefile index 87bf08076b1..d7b328595a7 100644 --- a/scripts/package/Makefile +++ b/scripts/package/Makefile @@ -36,7 +36,7 @@ $(objtree)/kernel.spec: $(MKSPEC) $(srctree)/Makefile $(CONFIG_SHELL) $(MKSPEC) > $@ rpm-pkg rpm: $(objtree)/kernel.spec FORCE - @if test -n "$(KBUILD_OUTPUT)"; then \ + @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"; \ echo "binrpm-pkg target instead."; \ -- cgit v1.2.3-70-g09d2 From 6615d6c322a364be45324f553db57545a3b2e95f Mon Sep 17 00:00:00 2001 From: Michal Marek Date: Fri, 12 Apr 2013 14:12:50 +0200 Subject: rpm-pkg: Do not package the whole source directory 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_ALLDIRS variable in the top-level Makefile. The upside is that the behavior is more predictable. Signed-off-by: Michal Marek --- Makefile | 2 ++ scripts/package/Makefile | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'scripts/package/Makefile') diff --git a/Makefile b/Makefile index 5bd9f7700eb..84392dfa682 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 d7b328595a7..b70b33e67f3 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; \ -- cgit v1.2.3-70-g09d2 From 403d3cc47307c78597d75e420f091cf4a2e7a56a Mon Sep 17 00:00:00 2001 From: Michal Marek Date: Fri, 12 Apr 2013 14:22:46 +0200 Subject: rpm-pkg: Do not write to the parent directory 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 --- scripts/package/Makefile | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'scripts/package/Makefile') diff --git a/scripts/package/Makefile b/scripts/package/Makefile index b70b33e67f3..ab203c29991 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 -- cgit v1.2.3-70-g09d2 From 6501320311664e11ad5489fedb17ea1f817c2617 Mon Sep 17 00:00:00 2001 From: Michal Marek Date: Sat, 13 Apr 2013 21:21:15 +0200 Subject: rpm-pkg: Always regenerate the specfile 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 --- scripts/package/Makefile | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) (limited to 'scripts/package/Makefile') diff --git a/scripts/package/Makefile b/scripts/package/Makefile index ab203c29991..08e4e2fdf8c 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 # --------------------------------------------------------------------------- -- cgit v1.2.3-70-g09d2 From a0f9c6f202962d4ca8150730e55bc34021dfebcc Mon Sep 17 00:00:00 2001 From: Michal Marek Date: Mon, 15 Apr 2013 22:13:08 +0200 Subject: rpm-pkg: Remove pointless set -e statements Signed-off-by: Michal Marek --- scripts/package/Makefile | 4 ---- 1 file changed, 4 deletions(-) (limited to 'scripts/package/Makefile') diff --git a/scripts/package/Makefile b/scripts/package/Makefile index 08e4e2fdf8c..84a406070f6 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 \ -- cgit v1.2.3-70-g09d2