perf tools: Stop depending on .git files for building PERF-VERSION-FILE
This essentially reverts commitc72e3f04b4
("tools/perf/build: Speed up git-version test on re-make") and commit4e666cdb06
("perf tools: Fix dependency for version file creation") In commitc72e3f04b4
("tools/perf/build: Speed up git-version test on re-make"), a makefile dependency on .git/HEAD was added. The background is that running PERF-VERSION-FILE is relatively slow, and commands like "git describe" are particularly slow. In commit4e666cdb06
("perf tools: Fix dependency for version file creation"), an additional dependency on .git/ORIG_HEAD was added, as .git/HEAD may not change for "git reset --hard HEAD^" command. However, depending on whether we're on a branch or not, a "git cherry-pick" may not lead to the version being updated. As discussed with the git community in [0], using git internal files for dependencies is not reliable. Commit4e666cdb06
also breaks some build scenarios [1]. As mentioned,c72e3f04b4
("tools/perf/build: Speed up git-version test on re-make") was added to speed up the build. However in commit7572733b84
("perf tools: Fix version kernel tag") we removed the call to "git describe", so just revert Makefile.perf back to same as prec72e3f04b4
("tools/perf/build: Speed up git-version test on re-make") and the build should not be so slow, as below: Pre 7572733b8499: $> time util/PERF-VERSION-GEN PERF_VERSION = 5.17.rc8.g4e666cdb06ee real 0m0.110s user 0m0.091s sys 0m0.019s Post 7572733b8499: $> time util/PERF-VERSION-GEN PERF_VERSION = 5.17.rc8.g7572733b8499 real 0m0.039s user 0m0.036s sys 0m0.007s [0] https://lore.kernel.org/git/87wngkpddp.fsf@igel.home/T/#m4a4dd6de52fdbe21179306cd57b3761eb07f45f8 [1] https://lore.kernel.org/linux-perf-users/20220329093120.4173283-1-matthieu.baerts@tessares.net/T/#u Committer testing: After a fresh rebuild using 'make -C tools/perf O=/tmp/build/perf install-bin': $ perf -v perf version 5.17.g162f9db407b6 $ git log --oneline -1 162f9db407b6a6e5 (HEAD -> perf/core) perf tools: Stop depending on .git files for building PERF-VERSION-FILE $ Now using a detached tarball, i.e. outside the kernel source tree: $ ls -la perf*tar ls: cannot access 'perf*tar': No such file or directory $ make perf-tar-src-pkg TAR PERF_VERSION = 5.17.g31d10b3ef133 $ ls -la perf*tar -rw-r--r--. 1 acme acme 22241280 Mar 30 13:26 perf-5.17.0.tar $ mv perf-5.17.0.tar /tmp $ cd /tmp $ tar xf perf-5.17.0.tar $ cd perf-5.17.0/ $ make -C tools/perf |& tail CC util/pmu.o CC util/pmu-flex.o CC util/expr-flex.o CC util/expr.o LD util/scripting-engines/perf-in.o LD util/intel-pt-decoder/perf-in.o LD util/perf-in.o LD perf-in.o LINK perf make: Leaving directory '/tmp/perf-5.17.0/tools/perf' $ tools/perf/perf -v perf version 5.17.g31d10b3ef133 $ pwd /tmp/perf-5.17.0 $ cat PERF-VERSION-FILE #define PERF_VERSION "5.17.g31d10b3ef133" $ Fixes:4e666cdb06
("perf tools: Fix dependency for version file creation") Reported-by: Matthieu Baerts <matthieu.baerts@tessares.net> Signed-off-by: John Garry <john.garry@huawei.com> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Tested-by: Matthieu Baerts <matthieu.baerts@tessares.net> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Ian Rogers <irogers@google.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: John Garry <john.garry@huawei.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: https://lore.kernel.org/r/1648635774-14581-1-git-send-email-john.garry@huawei.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
5ced812435
commit
d4ff926592
|
@ -691,9 +691,8 @@ $(OUTPUT)common-cmds.h: $(wildcard Documentation/perf-*.txt)
|
||||||
$(SCRIPTS) : % : %.sh
|
$(SCRIPTS) : % : %.sh
|
||||||
$(QUIET_GEN)$(INSTALL) '$@.sh' '$(OUTPUT)$@'
|
$(QUIET_GEN)$(INSTALL) '$@.sh' '$(OUTPUT)$@'
|
||||||
|
|
||||||
$(OUTPUT)PERF-VERSION-FILE: ../../.git/HEAD ../../.git/ORIG_HEAD
|
$(OUTPUT)PERF-VERSION-FILE: .FORCE-PERF-VERSION-FILE
|
||||||
$(Q)$(SHELL_PATH) util/PERF-VERSION-GEN $(OUTPUT)
|
$(Q)$(SHELL_PATH) util/PERF-VERSION-GEN $(OUTPUT)
|
||||||
$(Q)touch $(OUTPUT)PERF-VERSION-FILE
|
|
||||||
|
|
||||||
# These can record PERF_VERSION
|
# These can record PERF_VERSION
|
||||||
perf.spec $(SCRIPTS) \
|
perf.spec $(SCRIPTS) \
|
||||||
|
@ -1139,21 +1138,12 @@ else
|
||||||
@echo "FEATURE-DUMP file available in $(OUTPUT)FEATURE-DUMP"
|
@echo "FEATURE-DUMP file available in $(OUTPUT)FEATURE-DUMP"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
#
|
|
||||||
# Trick: if ../../.git does not exist - we are building out of tree for example,
|
|
||||||
# then force version regeneration:
|
|
||||||
#
|
|
||||||
ifeq ($(wildcard ../../.git/HEAD),)
|
|
||||||
GIT-HEAD-PHONY = ../../.git/HEAD ../../.git/ORIG_HEAD
|
|
||||||
else
|
|
||||||
GIT-HEAD-PHONY =
|
|
||||||
endif
|
|
||||||
|
|
||||||
FORCE:
|
FORCE:
|
||||||
|
|
||||||
.PHONY: all install clean config-clean strip install-gtk
|
.PHONY: all install clean config-clean strip install-gtk
|
||||||
.PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell
|
.PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell
|
||||||
.PHONY: $(GIT-HEAD-PHONY) TAGS tags cscope FORCE prepare
|
.PHONY: .FORCE-PERF-VERSION-FILE TAGS tags cscope FORCE prepare
|
||||||
.PHONY: libtraceevent_plugins archheaders
|
.PHONY: libtraceevent_plugins archheaders
|
||||||
|
|
||||||
endif # force_fixdep
|
endif # force_fixdep
|
||||||
|
|
Loading…
Reference in New Issue