Re: [PATCH] Allow PERL_PATH="/usr/bin/env perl"
- From
Shawn O. Pearce <spearce@spearce.org>
- Date
- May 3, 2007, 21:26 UTC
- Message-ID
- <20070503212618.GC16538@spearce.org>
- In-Reply-To
- <463A472D.5000007@larsen.st>
Bryan Larsen <bryan@larsen.st> wrote:
Show 22 quoted lines
> 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 <bryan@larsen.st> > --- > 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.