Re: automake-1.17 fails with latest Perl (5.41.8) - Possible precedence problem between ! and numeric eq (==)
Jacob Bachmeyer <[email protected]> Fri, 31 Jan 2025 22:22:09 -0600
| Newsgroups | gmane.comp.sysutils.automake.general |
|---|---|
| Message-ID | <[email protected]> |
On 1/31/25 13:34, Zack Weinberg wrote:
> [...]
> There was actually a concrete reason why I put FATAL => 'all' in there:
> I wanted it to be a hard error *during development* when new Perl warnings
> show up, so that they get fixed promptly rather than going neglected,
> trickling into releases, and spamming end users who probably don't care.
>
> Since that is clearly also causing problems for end users, I suggest we
> should find a way to keep the FATAL => 'all' for automake and autoconf
> running out of git (and in particular for our own test suites), but
> downgrade it to non-fatal upon 'make install'.
The testsuite should be able to do that by adding '-Mwarnings=FATAL,all'
to the $PERL command line, although that will require invoking perl
directly instead of relying on #! as the installed programs do. You
might also be able to put that in the PERL5OPT environment variable.
Making warnings fatal when running normally from a Git working tree is
harder, since warnings.pm is a lexical pragma. You should be able to do
something like:
BEGIN { warnings->import(FATAL => 'all') if running_development() }
Implementing "sub running_development" depends on how, exactly, you want
to detect a development environment. Simply using the command line
might be a better option for the testsuite.
Also note that the documentation for the "warnings" pragma (`perldoc
warnings`) says that using "FATAL => 'all'" is a bad idea and directly
risks forwards compatibility.
-- Jacob