Обсуждение: pgindent fails with perl 5.40
I get this error when running pgindent with perl 5.40:
Attempt to call undefined import method with arguments ("devnull") via package "File::Spec" (Perhaps you forgot to
loadthe package?) at src/tools/pgindent/pgindent line 10.
BEGIN failed--compilation aborted at src/tools/pgindent/pgindent line 10.
It definitely worked with perl 5.38 before. Not sure if something's
wrong on my side. Is anybody else already using 5.40? For the moment,
I just changed the File::Spec import to make it work:
diff --git a/src/tools/pgindent/pgindent b/src/tools/pgindent/pgindent
index 48d83bc434..028d057ea4 100755
--- a/src/tools/pgindent/pgindent
+++ b/src/tools/pgindent/pgindent
@@ -7,7 +7,7 @@ use warnings FATAL => 'all';
use Cwd qw(abs_path getcwd);
use File::Find;
-use File::Spec qw(devnull);
+use File::Spec;
use File::Temp;
use IO::Handle;
use Getopt::Long;
--
Erik
I wrote:
> I get this error when running pgindent with perl 5.40:
>
> Attempt to call undefined import method with arguments ("devnull") via package "File::Spec" (Perhaps you forgot
toload the package?) at src/tools/pgindent/pgindent line 10.
> BEGIN failed--compilation aborted at src/tools/pgindent/pgindent line 10.
>
> It definitely worked with perl 5.38 before. Not sure if something's
> wrong on my side.
Ah, it's intentional:
https://metacpan.org/release/HAARG/perl-5.40.0/view/pod/perldelta.pod#Calling-the-import-method-of-an-unknown-package-produces-a-warning
> Calling the import method of an unknown package produces a warning
> [...]
> It will also detect cases where a user passes an argument when using a
> package that does not provide its own import
> [...]
Because we use fatal warnings, pgindent fails.
--
Erik
> On 8 Oct 2024, at 03:50, Erik Wienhold <ewie@ewie.name> wrote: >> Calling the import method of an unknown package produces a warning >> [...] >> It will also detect cases where a user passes an argument when using a >> package that does not provide its own import >> [...] > > Because we use fatal warnings, pgindent fails. I'm far from fluent in Perl, but my reading of this is that File::Spec doesn't provide an import() function so explicitly listing devnull does nothing here. Your diff should thus be a safe fix. The devnull function existed already in 3.00 which was released just a hair over 2 decades ago so I think we can safely assume any File::Spec we use to have it. -- Daniel Gustafsson
On 2024-10-08 Tu 5:26 AM, Daniel Gustafsson wrote: >> On 8 Oct 2024, at 03:50, Erik Wienhold <ewie@ewie.name> wrote: >>> Calling the import method of an unknown package produces a warning >>> [...] >>> It will also detect cases where a user passes an argument when using a >>> package that does not provide its own import >>> [...] >> Because we use fatal warnings, pgindent fails. > I'm far from fluent in Perl, but my reading of this is that File::Spec doesn't > provide an import() function so explicitly listing devnull does nothing here. > Your diff should thus be a safe fix. The devnull function existed already in > 3.00 which was released just a hair over 2 decades ago so I think we can safely > assume any File::Spec we use to have it. The patch looks fine, and should be backpatched. Looks like this is a 12 year old thinko. AFAICT File::Spec doesn't export anything. cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com
> On 8 Oct 2024, at 22:24, Andrew Dunstan <andrew@dunslane.net> wrote: > > On 2024-10-08 Tu 5:26 AM, Daniel Gustafsson wrote: >>> On 8 Oct 2024, at 03:50, Erik Wienhold <ewie@ewie.name> wrote: >>>> Calling the import method of an unknown package produces a warning >>>> [...] >>>> It will also detect cases where a user passes an argument when using a >>>> package that does not provide its own import >>>> [...] >>> Because we use fatal warnings, pgindent fails. >> I'm far from fluent in Perl, but my reading of this is that File::Spec doesn't >> provide an import() function so explicitly listing devnull does nothing here. >> Your diff should thus be a safe fix. The devnull function existed already in >> 3.00 which was released just a hair over 2 decades ago so I think we can safely >> assume any File::Spec we use to have it. > > The patch looks fine, and should be backpatched. Looks like this is a 12 year old thinko. AFAICT File::Spec doesn't exportanything. Thanks for confirming, I'll go do that in the morning when I've had coffee unless you beat me to it. -- Daniel Gustafsson
> On 8 Oct 2024, at 22:56, Daniel Gustafsson <daniel@yesql.se> wrote: > >> On 8 Oct 2024, at 22:24, Andrew Dunstan <andrew@dunslane.net> wrote: >> The patch looks fine, and should be backpatched. Looks like this is a 12 year old thinko. AFAICT File::Spec doesn't exportanything. > > Thanks for confirming, I'll go do that in the morning when I've had coffee > unless you beat me to it. Done, thanks for the report! -- Daniel Gustafsson
On 2024-10-09 09:52 +0200, Daniel Gustafsson wrote: > Done, thanks for the report! Thanks for pushing! -- Erik