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

Re: [PATCH 0/6] Create Git/Packet.pm

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Oct 25, 2017, 23:10 UTC
Message-ID
<alpine.DEB.2.21.1.1710260008270.37495@virtualbox>
In-Reply-To
<20171019123030.17338-1-chriscool@tuxfamily.org>
Hi Christian,
On Thu, 19 Oct 2017, Christian Couder wrote:
>   Add Git/Packet.pm from parts of t0021/rot13-filter.pl
> 
>  perl/Git/Packet.pm      | 118 ++++++++++++++++++++++++++++++++++++++++++++++++

This change, together with forcing t0021/rot13-filter.pl to use Git/Packet.pm, breaks the test suite on Windows:

	https://travis-ci.org/git/git/jobs/292461846
There are actually two problems, one of which is fixed by
-- snip --
diff --git a/perl/Makefile b/perl/Makefile
index 15d96fcc7a5..f657de20e39 100644
--- a/perl/Makefile
+++ b/perl/Makefile
@@ -30,6 +30,7 @@ instdir_SQ = $(subst ','\'',$(prefix)/lib)
 modules += Git
 modules += Git/I18N
 modules += Git/IndexInfo
+modules += Git/Packet
 modules += Git/SVN
 modules += Git/SVN/Memoize/YAML
 modules += Git/SVN/Fetcher
-- snap --

You will want to pick this up in the next iteration. (You simply did not
notice because you did not build with NO_PERL_MAKEMAKER.)

However, that *still* does not fix the test for me: note how in the
verbose output recorded in Travis (see the link above), Perl fails to find
the Perl modules and then says:

Can't locate Git/Packet.pm in @INC (you may need to install the Git::Packet module) (@INC contains: C \BuildAgent\_work\5\s\perl\blib\lib;C \BuildAgent\_work\5\s\perl\blib\arch\auto\Git /usr/lib/perl5/site_perl [..]

Note that the correct blib path starts with `C:\BuildAgent\_work` and
the line

	use lib (split(/:/, $ENV{GITPERLLIB}));

splits off the drive letter from the rest of the path. Obviously, this
fails to Do The Right Thing, and simply points to Yet Another Portability
Problem with Git's reliance on Unix scripting.

But why is it a Windows path in the first place? We take pains at using
only Unix-style paths in Git's test suite after all.

Well, this one is easy. We call git.exe, which is a pure Win32 executable
(i.e. it *wants* Windows paths, even in the environment passed to it) and
git.exe in turn calls Perl to interpret rot13-filter.pl. So on the way to
git.exe, GITPERLLIB is converted by the MSYS2 runtime into a Windows-style
path list. And then it is not converted back when we call Perl.

As a workaround, I used a trick to exclude GITPERLLIB from being converted
by MSYS2: setting the environment variable MSYS2_ENV_CONV_EXCL=GITPERLLIB
"fixed" the test for me (with above patch thrown in). I also set the test
in the Visual Studio Team Services build definition that runs those tests
triggered by Travis.

If your patch makes it into Git's `master`, we may have to hardcode that
MSYS2_ENV_CONV_EXCL=GITPERLLIB (or augment any existing
MSYS2_ENV_CONV_EXCL), so that other Windows developers do not have to
stumble over the same thing and then spend 3 hours to debug it.

Ciao,
Dscho
Previous: Jeff KingNext: Junio C Hamano
Message 23 of 32 in “Create Git/Packet.pm”
  1. 0/6 Create Git/Packet.pmChristian Couder, Oct 19, 2017
  2. 1/6 t0021/rot13-filter: refactor packet reading functionsChristian Couder, Oct 19, 2017
  3. Stefan BellerOct 19, 2017
  4. Junio C HamanoOct 22, 2017
  5. Christian CouderNov 5, 2017
  6. 3/6 t0021/rot13-filter: improve error messageChristian Couder, Oct 19, 2017
  7. 5/6 t0021/rot13-filter: add capability functionsChristian Couder, Oct 19, 2017
  8. Junio C HamanoOct 22, 2017
  9. Christian CouderNov 4, 2017
  10. Junio C HamanoNov 5, 2017
  11. 6/6 Add Git/Packet.pm from parts of t0021/rot13-filter.plChristian Couder, Oct 19, 2017
  12. Stefan BellerOct 19, 2017
  13. 2/6 t0021/rot13-filter: improve 'if .. elsif .. else' styleChristian Couder, Oct 19, 2017
  14. 4/6 t0021/rot13-filter: add packet_initialize()Christian Couder, Oct 19, 2017
  15. Junio C HamanoOct 22, 2017
  16. Junio C HamanoOct 27, 2017
  17. Christian CouderOct 27, 2017
  18. Lars SchneiderOct 28, 2017
  19. Junio C HamanoOct 29, 2017
  20. Junio C HamanoOct 22, 2017
  21. Philip OakleyOct 23, 2017
  22. Jeff KingOct 30, 2017
  23. Johannes SchindelinOct 25, 2017
  24. Junio C HamanoOct 26, 2017
  25. Jacob KellerOct 26, 2017
  26. Bryan TurnerOct 26, 2017
  27. Bryan TurnerOct 26, 2017
  28. Johannes SchindelinOct 27, 2017
  29. Johannes SchindelinOct 27, 2017
  30. Junio C HamanoOct 30, 2017
  31. Christian CouderOct 30, 2017
  32. Johannes SchindelinOct 30, 2017

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.