Subject: Re: [PATCH] Allow PERL_PATH="/usr/bin/env perl"

From: "Shawn O. Pearce" <[email-masked]>
Date: Thu, 3 May 2007 17:26:18 -0400

Bryan Larsen <[email-masked]> wrote:
> The perl scripts start with "#!/usr/bin/perl".  There is a mechanism 
> PERL_PATH in the Makefile to change this, but it currently doesn't work 
> with PERL_PATH="/usr/bin/env perl".  This is causing problems in 
> MacPorts, where we wish to work with the MacPorts perl if it is 
> installed, but fall back to the system perl if it isn't.
> 
> Signed-off-by: Bryan Larsen <[email-masked]>
> ---
>  perl/Makefile |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/perl/Makefile b/perl/Makefile
> index 17d004e..2832cb4 100644
> --- a/perl/Makefile
> +++ b/perl/Makefile
> @@ -33,7 +33,7 @@ $(makfile): ../GIT-CFLAGS Makefile
>         echo '  echo $(instdir_SQ)' >> $@
>  else
>  $(makfile): Makefile.PL ../GIT-CFLAGS
> -       '$(PERL_PATH_SQ)' $< PREFIX='$(prefix_SQ)'
> +       $(PERL_PATH_SQ) $< PREFIX='$(prefix_SQ)'
>  endif

This will break if someone actually had ' in their PERL_PATH:

	PERL_PATH="/path'to'perl"

as PERL_PATH_SQ tries to close the single quoted string you don't
open anymore.  That is because it is defined to be PERL_PATH,
but with all ' replaced by '\''.

This change also breaks for anyone who had spaces in their PERL_PATH.

Can I ask why you can't just supply a small wrapper shellscript
with MacPorts

	cat >perl <<EOF
	#!/bin/sh
	exec env perl "$@"
	EOF
	chmod a+x perl

?  Or better yet, supply Git the correct Perl path?  If/when we ever
go to native Perl libraries again a Git Perl library compiled for
the system perl may not work later when the user installs a newer
MacPorts perl.  Switching automatically to the MacPorts perl without
recompiling the native extensions is a little evil...

-- 
Shawn.