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

Re: [PATCH] t0090: mark add-interactive test with PERL prerequisite

From
Jeff King <peff@peff.net>
Date
Nov 18, 2014, 17:43 UTC
Message-ID
<20141118174309.GB31672@peff.net>
In-Reply-To
<20141118172231.GA16387@peff.net>
On Tue, Nov 18, 2014 at 12:22:31PM -0500, Jeff King wrote:
Show 13 quoted lines
> The add-interactive system is built in perl. If you build
> with NO_PERL, running "git commit --interactive" will exit
> with an error and the test will fail.
> 
> Signed-off-by: Jeff King <peff@peff.net>
> ---
> Noticed by Michael while working around gitweb failures by setting
> NO_PERL. :)
> 
> It didn't reproduce for me in my existing build directory, presumably
> because I had an old git-add--interactive build product lying around.
> But running the tests in a clean clone with NO_PERL set reproduces
> easily.

I don't think fixing this is really a high priority. You can't ever be free of odd interactions with previous build artifacts. After all, you might have a built "git-foo" from a previous version of git (or one from the future, or even an alternate reality from another branch), and our Makefile should not have to know about every previous version you may have built in the path. That is what "git clean" is for (or just using a clean build directory).

But fixing this one in particular is pretty easy (and we _do_ know about the wrongly-built file; our dependencies are just incomplete):

-- >8 --
Subject: Makefile: have perl scripts depend on NO_PERL setting

If NO_PERL is not set, our perl scripts are built as usual. If it is set, then we build "dummy" versions that tell you git was built without perl support and exit gracefully.

However, if you switch to NO_PERL in a directory with existing build artifacts, we do not notice that the files need rebuilt. We see only that they are newer than the "unimplemented.sh" wrapper and assume they are done. So doing:

  make
  make NO_PERL=Nope

would result in a git-add--interactive script that uses perl (and running the test suite would make use of it).

Instead, we should trigger a rebuild of the perl scripts anytime NO_PERL changes.

Signed-off-by: Jeff King <peff@peff.net>
---
 Makefile | 3 +++
 1 file changed, 3 insertions(+)
diff --git a/Makefile b/Makefile
index 827006b..0fa02ff 100644
--- a/Makefile
+++ b/Makefile
@@ -1676,6 +1676,9 @@ git.res: git.rc GIT-VERSION-FILE
 	  $(join -DMAJOR= -DMINOR=, $(wordlist 1,2,$(subst -, ,$(subst ., ,$(GIT_VERSION))))) \
 	  -DGIT_VERSION="\\\"$(GIT_VERSION)\\\"" $< -o $@
 
+# This makes sure we depend on the NO_PERL setting itself.
+$(patsubst %.perl,%,$(SCRIPT_PERL)): GIT-BUILD-OPTIONS
+
 ifndef NO_PERL
 $(patsubst %.perl,%,$(SCRIPT_PERL)): perl/perl.mak
 
-- 
2.1.2.596.g7379948
Previous: Jeff KingNext: Jonathan Nieder
Message 5 of 11 in “t0090: mark add-interactive test with PERL prerequisite”
  1. t0090: mark add-interactive test with PERL prerequisiteJeff King, Nov 18, 2014
  2. t960[34]: mark cvsimport tests as requiring perlJeff King, Nov 18, 2014
  3. Jonathan NiederNov 18, 2014
  4. Jeff KingNov 18, 2014
  5. Jeff KingNov 18, 2014
  6. Jonathan NiederNov 18, 2014
  7. Jonathan NiederNov 18, 2014
  8. Jeff KingNov 18, 2014
  9. Pete WyckoffNov 18, 2014
  10. Jeff KingNov 18, 2014
  11. Jonathan NiederNov 18, 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.