On 2014-12-28 23.36, Randy J. Ray wrote:
> I use git on MacOS via homebrew (http://brew.sh/), and a custom Perl 
> installation built and managed via perlbrew (http://perlbrew.pl/). At some 
> point, commands like "git add -i" broke. I say "at some point", because I'm 
> not a git power-user and I only just noticed it this week.
> 
> I am running Git 2.2.1 with a perlbrew'd Perl 5.20.1. When I would run "git 
> add -i" (or "git add -p"), it would immediately die with a signal 11. Some 
> poking around showed that those git commands that are implemented as Perl 
> scripts run under /usr/bin/perl, and also prefix some directories to the 
> module search-path. The problem stems from the fact that, when you are using 
> perlbrew, you also have the PERL5LIB environment variable set. The contents 
> of it lay between the git-provided paths and the default contents of @INC. 
> When the Git module is loaded, it (eventually) triggers a load of List::Util, 
> whose C-level code fails to load because of a version mismatch; you got 
> List::Util from the paths in PERL5LIB, but it doesn't match the version of 
> perl from /usr/bin/perl.
> 
> After poking around and trying a few different things, I have found that 
> using the following line in place of "#!/usr/bin/perl" solves this problem:
> 
>     #!/usr/bin/env perl
> 
> This can be done by defaulting PERL_PATH to "/usr/bin/env perl" in Makefile.
> 
> I don't know enough about the overall git ecosystem to know if this would 
> have an adverse effect on anything else (in particular, Windows 
> compatibility, but then Windows probably isn't having this issue in the first 
> place).
> 
> I could just create and mail in the one-line patch for this, but I thought it 
> might be better to open it up for some discussion first?
> 
> Randy

Having problems with different perl installations is not an unknown problem
in Git, I would say.

And Git itself is prepared to handle this situation:

In Makefile I can read:
# Define PERL_PATH to the path of your Perl binary (usually /usr/bin/perl).

(What Git can not decide is which perl it should use, the one pointed out by 
$PATH or /usr/bin/perl.)

What does  
"type perl" say ?

And what happens when you build and install Git like this:
PERL_PATH=/XX/YY/perl make install

-----------
Are you thinking about changing
ifndef PERL_PATH
        PERL_PATH = /usr/bin/perl
endif
-- into --
ifndef PERL_PATH
        PERL_PATH = $(shell which perl)
endif
---

At first glance that could make sense, at least to me.





--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to