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