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

Re: make profile issue on Git 2.1.0

From
Jeff King <peff@peff.net>
Date
Aug 19, 2014, 06:12 UTC
Message-ID
<20140819061203.GA14924@peff.net>
In-Reply-To
<CAOUWSGA+6gX8ZBv3Wo8FgUdyd99TYWOybTwGT6ADv_HtNFsFMQ@mail.gmail.com>
On Sun, Aug 17, 2014 at 09:35:29PM -0500, Andrés Sicard-Ramírez wrote:
Show 22 quoted lines
> I have the following issue on Git 2.1.0:
> 
> $ make prefix=/some-directory profile
> ...
> make[2]: Entering directory `/home/asr/src/git/git-2.1.0/t/perf'
> rm -rf test-results
> ./run
> === Running 9 tests in this tree ===
> error: No $GIT_PERF_REPO defined, and your build directory is not a repo
> error: No $GIT_PERF_REPO defined, and your build directory is not a repo
> error: No $GIT_PERF_REPO defined, and your build directory is not a repo
> error: No $GIT_PERF_REPO defined, and your build directory is not a repo
> error: No $GIT_PERF_REPO defined, and your build directory is not a repo
> error: No $GIT_PERF_REPO defined, and your build directory is not a repo
> error: No $GIT_PERF_REPO defined, and your build directory is not a repo
> error: No $GIT_PERF_REPO defined, and your build directory is not a repo
> error: No $GIT_PERF_REPO defined, and your build directory is not a repo
> cannot open test-results/p0000-perf-lib-sanity.subtests: No such file
> or directory at ./aggregate.perl line 77.
> make[2]: *** [perf] Error 2
> 
> I hadn't issues running the same command on Git 2.0.2.

This is because v2.1.0 started using "make perf" to feed the profile builds, but it doesn't work on tarballs.

Maybe we should do this:
-- >8 --
Subject: Makefile: make perf tests optional for profile build

The perf tests need a repository to operate on; if none is defined, we fall back to the repository containing our build directory. That fails, though, for an exported tarball of git.git, which has no repository.

Since 5d7fd6d we run the perf tests as part of "make profile". Therefore "make profile" fails out of the box on released tarballs of v2.1.0.

We can fix this by making the perf tests optional; if they are skipped, we still run the regular test suite, which should give a lot of profile data (and is what we used to do prior to 5d7fd6d anyway).

Signed-off-by: Jeff King <peff@peff.net>
---
As a side note, while testing this I noticed that the "make perf" run
goes a lot faster if you set GIT_PERF_REPEAT_COUNT=1. This is bad for
actually measuring things, but probably fine for profile feedback. I
don't use the profile builds myself, though, so I will leave it to
somebody who cares more to investigate whether such a change would be a
good idea.
 Makefile | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index 2320de5..9f984a9 100644
--- a/Makefile
+++ b/Makefile
@@ -1659,7 +1659,11 @@ endif
 profile:: profile-clean
 	$(MAKE) PROFILE=GEN all
 	$(MAKE) PROFILE=GEN -j1 test
-	$(MAKE) PROFILE=GEN -j1 perf
+	@if test -n "$$GIT_PERF_REPO" || test -d .git; then \
+		$(MAKE) PROFILE=GEN -j1 perf; \
+	else \
+		echo "Skipping profile of perf tests..."; \
+	fi
 	$(MAKE) PROFILE=USE all
 
 profile-fast: profile-clean
-- 
2.1.0.346.ga0367b9
Previous: Andrés Sicard-RamírezNext: Andi Kleen
Message 2 of 4 in “make profile issue on Git 2.1.0”
  1. Andrés Sicard-RamírezAug 18, 2014
  2. Jeff KingAug 19, 2014
  3. Andi KleenAug 19, 2014
  4. Andrés Sicard-RamírezAug 19, 2014

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.