git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 1/2] perf-lib.sh: make "./run <revisions>" use the correct gits

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
May 6, 2019, 23:23 UTC
Message-ID
<20190506232309.28538-2-avarab@gmail.com>
In-Reply-To
<20190506202451.GA19850@sigill.intra.peff.net>

Fix a really bad regression in 0baf78e7bc ("perf-lib.sh: rely on test-lib.sh for --tee handling", 2019-03-15). Since that change all runs of different <revisions> of git have used the git found in the user's $PATH, e.g. /usr/bin/git instead of the <revision> we just built and wanted to performance test.

The problem starts with GIT_TEST_INSTALLED not working like our non-perf tests with the "run" script. I.e. you can't run performance tests against a given installed git. Instead we expect to use it ourselves to point GIT_TEST_INSTALLED to the <revision> we just built.

However, we had been relying on '$(cd "$GIT_TEST_INSTALLED" && pwd)' to resolve that relative $GIT_TEST_INSTALLED to an absolute path *before* test-lib.sh was loaded, in cases where it was e.g. "build/<rev>/bin-wrappers" and we wanted "<abs_path>build/...".

This change post-dates another proposed solution by a few days[1], I didn't notice that version when I initially wrote this. I'm doing the most minimal thing to solve the regression here, a follow-up change will move this result prefix selection logic entirely into the "run" script.

This makes e.g. these cases all work:
    ./run . $PWD/../../ origin/master origin/next HEAD -- <tests>
As well as just a plain one-off:
    ./run <tests>

And, since we're passing down the new GIT_PERF_DIR_MYDIR_REL we make sure the bug relating to aggregate.perl not finding our files as described in 0baf78e7bc doesn't happen again.

What *doesn't* work is setting GIT_TEST_INSTALLED to a relative path, this will subtly fail in test-lib.sh. This has always been the case even before 0baf78e7bc, and as documented in t/README the GIT_TEST_INSTALLED variable should be set to an absolute path (needs to be set "to the bindir", which is always absolute). Perhaps that should be dealt with in the future, but I'm leaving that alone for now.

1. https://public-inbox.org/git/20190502222409.GA15631@sigill.intra.peff.net/
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
 t/perf/perf-lib.sh | 4 ++++
 t/perf/run         | 8 ++++++--
 2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/t/perf/perf-lib.sh b/t/perf/perf-lib.sh
index 169f92eae3..b15ee1d262 100644
--- a/t/perf/perf-lib.sh
+++ b/t/perf/perf-lib.sh
@@ -32,6 +32,10 @@ TEST_NO_MALLOC_CHECK=t
 if test -z "$GIT_TEST_INSTALLED"; then
 	perf_results_prefix=
 else
+	if test -n "$GIT_PERF_DIR_MYDIR_REL"
+	then
+		GIT_TEST_INSTALLED=$GIT_PERF_DIR_MYDIR_REL
+	fi
 	perf_results_prefix=$(printf "%s" "${GIT_TEST_INSTALLED%/bin-wrappers}" | tr -c "[a-zA-Z0-9]" "[_*]")"."
 	GIT_TEST_INSTALLED=$ABSOLUTE_GIT_TEST_INSTALLED
 fi
diff --git a/t/perf/run b/t/perf/run
index 9aaa733c77..0a7c8744ab 100755
--- a/t/perf/run
+++ b/t/perf/run
@@ -91,10 +91,14 @@ run_dirs_helper () {
 	if test "$mydir" = .; then
 		unset GIT_TEST_INSTALLED
 	else
-		GIT_TEST_INSTALLED="$mydir/bin-wrappers"
+		GIT_PERF_DIR_MYDIR_REL=$mydir
+		GIT_PERF_DIR_MYDIR_ABS=$(cd $mydir && pwd)
+		export GIT_PERF_DIR_MYDIR_REL GIT_PERF_DIR_MYDIR_ABS
+
+		GIT_TEST_INSTALLED="$GIT_PERF_DIR_MYDIR_ABS/bin-wrappers"
 		# Older versions of git lacked bin-wrappers; fallback to the
 		# files in the root.
-		test -d "$GIT_TEST_INSTALLED" || GIT_TEST_INSTALLED=$mydir
+		test -d "$GIT_TEST_INSTALLED" || GIT_TEST_INSTALLED=$GIT_PERF_DIR_MYDIR_ABS
 		export GIT_TEST_INSTALLED
 	fi
 	run_one_dir "$@"
-- 
2.21.0.593.g511ec345e18
Previous: Ævar Arnfjörð BjarmasonNext: Jeff King
Message 21 of 38 in “What's cooking in git.git (Apr 2019, #05; Thu, 25)”
  1. Junio C HamanoApr 25, 2019
  2. Elijah NewrenApr 25, 2019
  3. js/partial-clone-connectivity-check (was: What's cooking in git.git (Apr 2019, #05; Thu, 25))Josh Steadmon, Apr 25, 2019
  4. Jeff KingMay 2, 2019
  5. Josh SteadmonMay 2, 2019
  6. Jeff KingMay 2, 2019
  7. Jeff KingMay 2, 2019
  8. perf-lib.sh: make "./run <revisions>" use the correct gitsÆvar Arnfjörð Bjarmason, May 6, 2019
  9. Jeff KingMay 6, 2019
  10. 0/2 perf-lib.sh: fix 0baf78e7bc regression, refactor & fix bugsÆvar Arnfjörð Bjarmason, May 6, 2019
  11. Jeff KingMay 7, 2019
  12. 1/6 perf README: correct docs for 3c8f12c96c regressionÆvar Arnfjörð Bjarmason, May 7, 2019
  13. 3/6 perf-lib.sh: make "./run <revisions>" use the correct gitsÆvar Arnfjörð Bjarmason, May 7, 2019
  14. 2/6 perf aggregate: remove GIT_TEST_INSTALLED from --codespeedÆvar Arnfjörð Bjarmason, May 7, 2019
  15. 4/6 perf-lib.sh: remove GIT_TEST_INSTALLED from perf-lib.shÆvar Arnfjörð Bjarmason, May 7, 2019
  16. 5/6 perf tests: add "bindir" prefix to git tree test resultsÆvar Arnfjörð Bjarmason, May 7, 2019
  17. 0/6 perf-lib.sh: fix 0baf78e7bc regression, refactor & fix bugsÆvar Arnfjörð Bjarmason, May 7, 2019
  18. Jeff KingMay 7, 2019
  19. Junio C HamanoMay 8, 2019
  20. 6/6 perf-lib.sh: forbid the use of GIT_TEST_INSTALLEDÆvar Arnfjörð Bjarmason, May 7, 2019
  21. 1/2 perf-lib.sh: make "./run <revisions>" use the correct gitsÆvar Arnfjörð Bjarmason, May 6, 2019
  22. Jeff KingMay 7, 2019
  23. 2/2 perf-lib.sh: remove GIT_TEST_INSTALLED from perf-lib.shÆvar Arnfjörð Bjarmason, May 6, 2019
  24. Jeff KingMay 7, 2019
  25. Ævar Arnfjörð BjarmasonMay 7, 2019
  26. Jeff KingMay 7, 2019
  27. Taylor BlauApr 26, 2019
  28. Junio C HamanoApr 26, 2019
  29. Taylor BlauApr 26, 2019
  30. Junio C HamanoApr 26, 2019
  31. Kaartic SivaraamApr 26, 2019
  32. Junio C HamanoApr 27, 2019
  33. Kaartic SivaraamApr 27, 2019
  34. Jeff KingMay 2, 2019
  35. js/macos-gettext-build, was Re: What's cooking in git.git (Apr 2019, #05; Thu, 25)Johannes Schindelin, Apr 29, 2019
  36. Junio C HamanoMay 5, 2019
  37. Duy NguyenMay 6, 2019
  38. Junio C HamanoMay 7, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.