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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html