On Thu, Apr 06, 2023 at 10:19:03AM +0200, Patrick Steinhardt wrote: > > 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. OK, that is good if there is nothing left to fix. :) Let us know if any of the others pop up again. I also built the docs, which seems to use PERL_PATH as appropriate, though one thing that did trip me up is that: make PERL_PATH=/my/actual/perl cd Documentation make does not pick up the earlier PERL_PATH. Which is not surprising if you think about it. It's just that we shove some knobs into GIT-BUILD-OPTIONS and then pick them out later (but only in shell scripts, not in the Makefile), which created a false expectation. > > Subject: [PATCH] t/lib-httpd: pass PERL_PATH to CGI scripts Reposting verbatim with a Cc and a catchier subject to get the maintainer's attention. -- >8 -- Subject: 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@xxxxxxxx> --- 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