On Wed, Apr 5, 2023 at 11:31 AM Todd Zullinger <tmz@xxxxxxxxx> wrote: > > Patrick Steinhardt wrote: > > On Wed, Apr 05, 2023 at 10:42:52AM -0400, Todd Zullinger wrote: > >> Is there a reason to not set PERL_PATH, which is the > >> documented method to handle this? From the Makefike: > >> > >> # Define PERL_PATH to the path of your Perl binary (usually /usr/bin/perl). > > > > Setting PERL_PATH helps with a subset of invocations where the Makefile > > either executes Perl directly or where it writes the shebang itself. But > > the majority of scripts I'm touching have `#!/usr/bin/perl` as shebang, > > and that path is not adjusted by setting PERL_PATH. > > Ahh. I wonder if that's intentional? I haven't dug into > the history, so I'm not sure. It seems like an oversight, > as an initial reaction. Generally the people interested in setting PERL_PATH are packagers, and it's so the installed scripts have the desired hardcoded path. So a script that is never installed isn't considered. > > I'd be happy to amend the patch series to only fix up shebangs which > > would not be helped by setting PERL_PATH. But if we can make it work > > without having to set PERL_PATH at all I don't quite see the point. > > It's certainly debatable whether using /path/to/env perl is > better than hard-coding it at build time (forgetting about > the usage of RUNTIME_PREFIX). [Debatable in a friendly > sense, of course.] It's better because it allows the user to choose another version dynamically, for example: PATH=/opt/perl7/bin:$PATH script > As a distribution packager, I prefer to set the path at > build time to help ensure that an end user can't easily > break things by installing a different perl in PATH. And as a user I would rather packagers don't treat me like a child. I decide how to use *my* system. And BTW, newer generations of developers use all kinds of version managers like RVM and nvm, and perl has one as well: perlbrew [1]. Not to mention docker, for which the Perl official image installs into /usr/local/bin/perl. > The Fedora build system will munge /path/to/env perl > shebangs to /usr/bin/perl and it won't effect us much. So you can override '#!/usr/bin/env perl' instead of overriding `#!/usr/bin/perl`, which the Git Makefile does by default anyway. What's the difference to you? > That may not be true for other distributions and they may > care more if they want to keep using a hard-coded path to > perl. Arch Linux does whatever upstream does by default. > I don't know how it may affects the Windows folks either, who are > further askew from our other, more UNIX-like targets. Windows doesn't use shebangs, you have to do `perl script`. > I don't know what the right choice is for upstream Git, it > can easily be argued in either direction. :) I don't think it matters to packagers how people developing Git run the internal scripts. Cheers. [1] https://metacpan.org/pod/perlbrew -- Felipe Contreras