All of lore.kernel.org
 help / color / mirror / Atom feed
From: Patrick Steinhardt <ps@pks.im>
To: Jeff King <peff@peff.net>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] global: resolve Perl executable via PATH
Date: Thu, 6 Apr 2023 10:19:03 +0200	[thread overview]
Message-ID: <ZC6AdylF4TI41vnX@ncase> (raw)
In-Reply-To: <20230406032647.GA2092142@coredump.intra.peff.net>

[-- Attachment #1: Type: text/plain, Size: 4317 bytes --]

On Wed, Apr 05, 2023 at 11:26:47PM -0400, Jeff King wrote:
> On Wed, Apr 05, 2023 at 12:10:10PM +0200, Patrick Steinhardt wrote:
> 
> > The majority of Perl scripts we carry in Git have a `#!/usr/bin/perl`
> > shebang. This is not a portable location for the Perl interpreter and
> > may thus break on some systems that have the interpreter installed in a
> > different location. One such example is NixOS, where the only executable
> > installed in `/usr/bin` is env(1).
> > 
> > Convert the shebangs to resolve the location of the Perl interpreter via
> > env(1) to make these scripts more portable. While the location of env(1)
> > is not guaranteed by any standard either, in practice all distributions
> > including NixOS have it available at `/usr/bin/env`. We're also already
> > using this idiom in a small set of other scripts, and until now nobody
> > complained about them.
> > 
> > This makes the test suite pass on NixOS.
> 
> Can you tell us more about which tests failed?
> 
> Skimming over the list of files here, the first few examples:
> 
> >  Documentation/build-docdep.perl                    | 2 +-
> >  Documentation/cat-texi.perl                        | 2 +-
> >  Documentation/cmd-list.perl                        | 3 ++-
> >  Documentation/fix-texi.perl                        | 4 +++-
> >  Documentation/lint-fsck-msgids.perl                | 2 +-
> 
> will not be affected by your patch, because we never use their shebang
> lines at all (we say "$PERL_PATH cmd-list.perl" in the Makefile).
> 
> I did try removing /usr/bin/perl completely (and thus likewise had no
> perl in my path), setting PERL_PATH, and got a few broken tests, which
> could be fixed as below.
> 
> Does this fix the cases you saw, or are there others?

You know, let's just go with your patch. With PERL_PATH set it fixes all
the issues I have observed. At some point in time I saw more issues than
the one you fix here, but that's because my `config.mak` got lost
without me noticing. Oops, embarassing.

Thanks!

Patrick

> -- >8 --
> Subject: [PATCH] t/lib-httpd: pass PERL_PATH to CGI scripts
> 
> As discussed in t/README, tests should aim to use PERL_PATH rather than
> straight "perl". We usually do this automatically with a "perl" function
> in test-lib.sh, but a few cases need to be handled specially.
> 
> One such case is the apply-one-time-perl.sh CGI, which invokes plain
> "perl". It should be using $PERL_PATH, but to make that work, we must
> also instruct Apache to pass through the variable.
> 
> Prior to this patch, doing:
> 
>   mv /usr/bin/perl /usr/bin/my-perl
>   make PERL_PATH=/usr/bin/my-perl test
> 
> would fail t5702, t5703, and t5616. After this it passes. This is a
> pretty extreme case, as even if you install perl elsewhere, you'd likely
> still have it in your $PATH. A more realistic case is that you don't
> want to use the perl in your $PATH (because it's older, broken, etc) and
> expect PERL_PATH to consistently override that (since that's what it's
> documented to do). Removing it completely is just a convenient way of
> completely breaking it for testing purposes.
> 
> Signed-off-by: Jeff King <peff@peff.net>
> ---
>  t/lib-httpd/apache.conf            | 2 ++
>  t/lib-httpd/apply-one-time-perl.sh | 2 +-
>  2 files changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/t/lib-httpd/apache.conf b/t/lib-httpd/apache.conf
> index f43a25c1f10..9e6892970de 100644
> --- a/t/lib-httpd/apache.conf
> +++ b/t/lib-httpd/apache.conf
> @@ -101,6 +101,8 @@ PassEnv LC_ALL
>  Alias /dumb/ www/
>  Alias /auth/dumb/ www/auth/dumb/
>  
> +SetEnv PERL_PATH ${PERL_PATH}
> +
>  <LocationMatch /smart/>
>  	SetEnv GIT_EXEC_PATH ${GIT_EXEC_PATH}
>  	SetEnv GIT_HTTP_EXPORT_ALL
> diff --git a/t/lib-httpd/apply-one-time-perl.sh b/t/lib-httpd/apply-one-time-perl.sh
> index 09a0abdff7c..d7f9fed6aee 100644
> --- a/t/lib-httpd/apply-one-time-perl.sh
> +++ b/t/lib-httpd/apply-one-time-perl.sh
> @@ -13,7 +13,7 @@ then
>  	export LC_ALL
>  
>  	"$GIT_EXEC_PATH/git-http-backend" >out
> -	perl -pe "$(cat one-time-perl)" out >out_modified
> +	"$PERL_PATH" -pe "$(cat one-time-perl)" out >out_modified
>  
>  	if cmp -s out out_modified
>  	then
> -- 
> 2.40.0.824.g7b678b1f643
> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2023-04-06  8:19 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-05 10:10 [PATCH] global: resolve Perl executable via PATH Patrick Steinhardt
2023-04-05 13:35 ` Felipe Contreras
2023-04-05 14:48   ` Patrick Steinhardt
2023-04-05 14:42 ` Todd Zullinger
2023-04-05 14:52   ` Patrick Steinhardt
2023-04-05 15:54     ` Todd Zullinger
2023-04-05 17:09       ` Felipe Contreras
2023-04-05 17:35       ` Patrick Steinhardt
2023-04-05 18:44         ` Junio C Hamano
2023-04-06  2:27           ` Felipe Contreras
2023-04-05 16:54     ` Jeff King
2023-04-05 17:32       ` Patrick Steinhardt
2023-04-05 18:15         ` Jeff King
2023-04-06  2:18           ` Felipe Contreras
2023-04-06  3:35             ` Jeff King
2023-04-06  8:03               ` Ævar Arnfjörð Bjarmason
2023-04-18  8:59                 ` Felipe Contreras
2023-04-06  8:07           ` Patrick Steinhardt
2023-04-05 18:28 ` Kristoffer Haugsbakk
2023-04-05 21:30 ` Eric Wong
2023-04-06  2:16   ` Felipe Contreras
2023-04-06  8:05   ` Ævar Arnfjörð Bjarmason
2023-04-06  3:26 ` Jeff King
2023-04-06  8:19   ` Patrick Steinhardt [this message]
2023-04-06  9:36     ` [PATCH] t/lib-httpd: pass PERL_PATH to CGI scripts Jeff King
2023-04-06 16:34       ` Junio C Hamano
2023-04-18  9:04       ` Felipe Contreras

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZC6AdylF4TI41vnX@ncase \
    --to=ps@pks.im \
    --cc=git@vger.kernel.org \
    --cc=peff@peff.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.