Skip to content

File-Find-1.39 (and later) breaks Module::Pluggable and Module::Find #19995

@sisyphus

Description

@sisyphus

Module:
File::Find
Version 1.37 (which shipped with perl-5.32.x) is ok. I can't find version 1.38 in any stable perl release.
The problem is arising only with version 1.39 (which shipped with perl-5.34.0) and later.

Description

Module::Pluggable and Module::Find fail tests because of the new changes wrt Win32 symlinks support in File::Find.
Both MSVC-built and MinGW-built perls are affected in the same way.

Steps to Reproduce

cpan -i Module::Pluggable
cpan -i Module::Find

The question is:
Should Module::Pluggable and Module::Find be patched to accommodate these recent changes to File::Find, or should File::Find be patched such that it doesn't break these 2 cpan modules in the first place ?

The Module-Pluggable bug report is at simonwistow/Module-Pluggable#24.
This patch to Module-Pluggable-Object.pm allows Module::Pluggable to build successfully against these problematic versions of File::Find:

--- Object.pm_orig	2022-07-25 11:42:24 +1000
+++ Object.pm	2022-07-25 12:12:02 +1000
@@ -66,6 +66,7 @@
     $self->{'on_instantiate_error'} ||= sub { my ($plugin, $err) = @_; carp "Couldn't instantiate $plugin: $err"; return 0 };
 
     # default whether to follow symlinks
+    $self->{'follow_symlinks'} = 0 if ($^O eq 'MSWin32' && !exists $self->{'follow_symlinks'});
     $self->{'follow_symlinks'} = 1 unless exists $self->{'follow_symlinks'};
 
     # check to see if we're running under test

There's a bug report for Module::Find at crenz/Module-Find#9 .
No patch for that one, yet, AFAIK.

I'm on a Windows 7 machine - which might be relevant.
I'm not sure which Windows version is being used by the others who have hit this issue.
As the latest Strawberry Perl is still at 5.32.1 (File-Find-1.37), the number of these "others" is probably quite small.

Perl configuration

Summary of my perl5 (revision 5 version 36 subversion 0) configuration:

  Platform:
    osname=MSWin32
    osvers=6.1.7601
    archname=MSWin32-x64-multi-thread
    uname=''
    config_args='undef'
    hint=recommended
    useposix=true
    d_sigaction=undef
    useithreads=define
    usemultiplicity=define
    use64bitint=define
    use64bitall=undef
    uselongdouble=undef
    usemymalloc=n
    default_inc_excludes_dot=define
  Compiler:
    cc='gcc'
    ccflags =' -DWIN32 -DWIN64 -D_WIN32_WINNT=0x0601 -fdiagnostics-color=never -
DPERL_TEXTMODE_SCRIPTS -DMULTIPLICITY -DPERL_IMPLICIT_SYS -DUSE_PERLIO -D__USE_M
INGW_ANSI_STDIO -fwrapv -fno-strict-aliasing -mms-bitfields'
    optimize='-O2'
    cppflags='-DWIN32'
    ccversion=''
    gccversion='11.3.0'
    gccosandvers=''
    intsize=4
    longsize=4
    ptrsize=8
    doublesize=8
    byteorder=12345678
    doublekind=3
    d_longlong=define
    longlongsize=8
    d_longdbl=define
    longdblsize=16
    longdblkind=3
    ivtype='long long'
    ivsize=8
    nvtype='double'
    nvsize=8
    Off_t='long long'
    lseeksize=8
    alignbytes=8
    prototype=define
  Linker and Libraries:
    ld='g++'
    ldflags ='-s -L"C:\perl-5.36.0\lib\MSWin32-x64-multi-thread\CORE" -L"C:\_64\
winlibs-gcc-1130\mingw64\lib" -L"C:\_64\winlibs-gcc-1130\mingw64\x86_64-w64-ming
w32\lib" -L"C:\_64\winlibs-gcc-1130\mingw64\lib\gcc\x86_64-w64-mingw32\11.3.0"'
    libpth=C:\_64\winlibs-gcc-1130\mingw64\lib C:\_64\winlibs-gcc-1130\mingw64\x
86_64-w64-mingw32\lib C:\_64\winlibs-gcc-1130\mingw64\lib\gcc\x86_64-w64-mingw32
\11.3.0 C:\_64\msys_1130\1.0\local\lib
    libs= -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi3
2 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversio
n -lodbc32 -lodbccp32 -lcomctl32
    perllibs= -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladv
api32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lve
rsion -lodbc32 -lodbccp32 -lcomctl32
    libc=
    so=dll
    useshrplib=true
    libperl=libperl536.a
    gnulibc_version='10.0.0'
  Dynamic Linking:
    dlsrc=dl_win32.xs
    dlext=dll
    d_dlsymun=undef
    ccdlflags=' '
    cccdlflags=' '
    lddlflags='-shared -s -L"C:\perl-5.36.0\lib\MSWin32-x64-multi-thread\CORE" -
L"C:\_64\winlibs-gcc-1130\mingw64\lib" -L"C:\_64\winlibs-gcc-1130\mingw64\x86_64
-w64-mingw32\lib" -L"C:\_64\winlibs-gcc-1130\mingw64\lib\gcc\x86_64-w64-mingw32\
11.3.0"'


Characteristics of this binary (from libperl):
  Compile-time options:
    HAS_TIMES
    HAVE_INTERP_INTERN
    MULTIPLICITY
    PERLIO_LAYERS
    PERL_COPY_ON_WRITE
    PERL_DONT_CREATE_GVSV
    PERL_IMPLICIT_SYS
    PERL_MALLOC_WRAP
    PERL_OP_PARENT
    PERL_PRESERVE_IVUV
    USE_64_BIT_INT
    USE_ITHREADS
    USE_LARGE_FILES
    USE_LOCALE
    USE_LOCALE_COLLATE
    USE_LOCALE_CTYPE
    USE_LOCALE_NUMERIC
    USE_LOCALE_TIME
    USE_PERLIO
    USE_PERL_ATOF
  Built under MSWin32
  Compiled at May 28 2022 11:14:45
  @INC:
    C:/perl-5.36.0/site/lib/MSWin32-x64-multi-thread
    C:/perl-5.36.0/site/lib
    C:/perl-5.36.0/lib/MSWin32-x64-multi-thread
    C:/perl-5.36.0/lib

Metadata

Metadata

Assignees

No one assigned

    Labels

    ext-File-Findissues in the blead-only File-Find distribution

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions