Commit e0ca1674 authored by Masahiro Yamada's avatar Masahiro Yamada

kbuild: make perf-tar*-src-pkg work without relying on git

Currently, perf-tar*-src-pkg only uses 'git archive', but it is better
to make it work without relying on git.

The file, HEAD, which saves the commit hash, will be included in the
tarball only when the source tree is managed by git. The git tree is
more precisely checked; it has been copied from scripts/setlocalversion.
Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
parent e7853995
...@@ -50,10 +50,25 @@ quiet_cmd_tar = TAR $@ ...@@ -50,10 +50,25 @@ quiet_cmd_tar = TAR $@
tar-rootdir := $(srctree) tar-rootdir := $(srctree)
%.tar:
$(call cmd,tar)
%.tar.gz: private tar-compress-opt := -I $(KGZIP) %.tar.gz: private tar-compress-opt := -I $(KGZIP)
%.tar.gz: %.tar.gz:
$(call cmd,tar) $(call cmd,tar)
%.tar.bz2: private tar-compress-opt := -I $(KBZIP2)
%.tar.bz2:
$(call cmd,tar)
%.tar.xz: private tar-compress-opt := -I $(XZ)
%.tar.xz:
$(call cmd,tar)
%.tar.zst: private tar-compress-opt := -I $(ZSTD)
%.tar.zst:
$(call cmd,tar)
# Linux source tarball # Linux source tarball
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
...@@ -138,36 +153,52 @@ $(tar-pkgs): ...@@ -138,36 +153,52 @@ $(tar-pkgs):
$(MAKE) -f $(srctree)/Makefile $(MAKE) -f $(srctree)/Makefile
+$(CONFIG_SHELL) $(srctree)/scripts/package/buildtar $@ +$(CONFIG_SHELL) $(srctree)/scripts/package/buildtar $@
# perf-pkg - generate a source tarball with perf source # perf-tar*-src-pkg - generate a source tarball with perf source
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
perf-tar=perf-$(KERNELVERSION) perf-tar-src-pkg-tarball = perf-$(KERNELVERSION).$(1)
perf-tar-src-pkg-phony = perf-$(subst .,,$(1))-src-pkg
quiet_cmd_perf_tar = TAR
cmd_perf_tar = \ quiet_cmd_stage_perf_src = STAGE $@
git --git-dir=$(srctree)/.git archive --prefix=$(perf-tar)/ \ cmd_stage_perf_src = \
HEAD^{tree} $$(cd $(srctree); \ rm -rf $@; \
echo $$(cat tools/perf/MANIFEST)) \ mkdir -p $@; \
-o $(perf-tar).tar; \ tar -c -f - --exclude-from=$<_exclude -C $(srctree) --files-from=$(srctree)/tools/perf/MANIFEST | \
mkdir -p $(perf-tar); \ tar -x -f - -C $@
git --git-dir=$(srctree)/.git rev-parse HEAD > $(perf-tar)/HEAD; \
(cd $(srctree)/tools/perf; \ .tmp_perf: .tmp_filelist
util/PERF-VERSION-GEN $(CURDIR)/$(perf-tar)/); \ $(call cmd,stage_perf_src)
tar rf $(perf-tar).tar $(perf-tar)/HEAD $(perf-tar)/PERF-VERSION-FILE; \
rm -r $(perf-tar); \ filechk_perf_head = \
$(if $(findstring tar-src,$@),, \ if test -z "$(git -C $(srctree) rev-parse --show-cdup 2>/dev/null)" && \
$(if $(findstring bz2,$@),$(KBZIP2), \ head=$$(git -C $(srctree) rev-parse --verify HEAD 2>/dev/null); then \
$(if $(findstring gz,$@),$(KGZIP), \ echo $$head; \
$(if $(findstring xz,$@),$(XZ), \ else \
$(if $(findstring zst,$@),$(ZSTD), \ echo "not a git tree"; \
$(error unknown target $@))))) \ fi
-f -9 $(perf-tar).tar)
.tmp_perf/HEAD: .tmp_perf FORCE
perf-tar-pkgs := perf-tar-src-pkg perf-targz-src-pkg perf-tarbz2-src-pkg \ $(call filechk,perf_head)
perf-tarxz-src-pkg perf-tarzst-src-pkg
PHONY += $(perf-tar-pkgs) quiet_cmd_perf_version_file = GEN $@
$(perf-tar-pkgs): cmd_perf_version_file = cd $(srctree)/tools/perf; util/PERF-VERSION-GEN $(dir $(abspath $@))
$(call cmd,perf_tar)
# PERF-VERSION-FILE and HEAD are independent, but this avoids updating the
# timestamp of PERF-VERSION-FILE.
# The best is to fix tools/perf/util/PERF-VERSION-GEN.
.tmp_perf/PERF-VERSION-FILE: .tmp_perf/HEAD $(srctree)/tools/perf/util/PERF-VERSION-GEN
$(call cmd,perf_version_file)
define perf-tar-src-pkg-rule
PHONY += $(perf-tar-src-pkg-phony)
$(perf-tar-src-pkg-phony): $(perf-tar-src-pkg-tarball)
@:
$(perf-tar-src-pkg-tarball): private tar-rootdir := .tmp_perf
$(perf-tar-src-pkg-tarball): .tmp_filelist .tmp_perf/HEAD .tmp_perf/PERF-VERSION-FILE
endef
$(foreach x, tar tar.gz tar.bz2 tar.xz tar.zst, $(eval $(call perf-tar-src-pkg-rule,$(x))))
# Help text displayed when executing 'make help' # Help text displayed when executing 'make help'
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
...@@ -186,11 +217,11 @@ help: ...@@ -186,11 +217,11 @@ help:
@echo ' tarbz2-pkg - Build the kernel as a bzip2 compressed tarball' @echo ' tarbz2-pkg - Build the kernel as a bzip2 compressed tarball'
@echo ' tarxz-pkg - Build the kernel as a xz compressed tarball' @echo ' tarxz-pkg - Build the kernel as a xz compressed tarball'
@echo ' tarzst-pkg - Build the kernel as a zstd compressed tarball' @echo ' tarzst-pkg - Build the kernel as a zstd compressed tarball'
@echo ' perf-tar-src-pkg - Build $(perf-tar).tar source tarball' @echo ' perf-tar-src-pkg - Build the perf source tarball with no compression'
@echo ' perf-targz-src-pkg - Build $(perf-tar).tar.gz source tarball' @echo ' perf-targz-src-pkg - Build the perf source tarball with gzip compression'
@echo ' perf-tarbz2-src-pkg - Build $(perf-tar).tar.bz2 source tarball' @echo ' perf-tarbz2-src-pkg - Build the perf source tarball with bz2 compression'
@echo ' perf-tarxz-src-pkg - Build $(perf-tar).tar.xz source tarball' @echo ' perf-tarxz-src-pkg - Build the perf source tarball with xz compression'
@echo ' perf-tarzst-src-pkg - Build $(perf-tar).tar.zst source tarball' @echo ' perf-tarzst-src-pkg - Build the perf source tarball with zst compression'
PHONY += FORCE PHONY += FORCE
FORCE: FORCE:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment