Re: [PATCH] global: resolve Perl executable via PATH

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux