On 05/10/2018 05:09 PM, Bill Cole wrote:
On 10 May 2018, at 3:21 (-0400), Axb wrote:
Why is this needed?
It is not possible to rely on /usr/bin/perl existing or being the
"right" perl on some platforms. Most obviously, Perl was removed long
ago from the FreeBSD base and the symlink at /usr/bin/perl was removed
from the perl5 port as of v5.20. On MacOS, /usr/bin/perl is Apple's
build of Perl, most recently v5.18, and historically it has been risky
business to make significant enhancements to that Perl world, so the
Perl installed for the purposes of SA might be in /usr/local,
/opt/local, /sw, or in a user homedir.
The shebang trick using /usr/bin/env is the simplest way to address the
issue of there being multiple interpreter worlds on a system for
different bespoke purposes. If $PATH is set correctly I don't see how it
is breaking on CentOS, although I guess it may be a consequence of
local::lib usage.
The less simple but more rigorous fix for the underlying issue is to
handle all scripts in the distribution in the same manner as the main SA
scripts: a .raw version in the source that gets run through
build/preprocessor with a suitable set of arguments. It is not clear to
me why we have a substantial collection of scripts (including the test
scripts) with a fixed interpreter path despite having a tool whose
functions include making that a build-time configurable. There are even
scripts which apparently are only ever run on sa-vm1 that have this
shebang line: #!/local/perl586/bin/perl
I see the point. Hopefully you can achieve that without breaking the
rest of us :)
RedHat compatible systems are used all over the place, so such breakage
can cause havoc.