Win32::Pipe build failure under 5.42.2
sp5.42
This is building a patched 0.025 version from strawberryperl.com but the same error occurs with the latest release on CPAN (0.026).
It does not occur with SP 5.42.0.1.
```
cpanm -v http://strawberryperl.com/package/kmx/perl-modules-patched/Win32-Pipe-0.025_patched.tar.gz
```
Failing build (in-prep SP 5.42.2.1)
```
Running Mkbootstrap for Pipe ()
"C:\strawberry\perl\bin\perl.exe" -MExtUtils::Command -e chmod -- 644 "Pipe.bs"
"C:\strawberry\perl\bin\perl.exe" -MExtUtils::Command::MM -e cp_nonempty -- Pipe.bs blib\arch\auto\Win32\Pipe\Pipe.bs 644
gcc -c -std=c99 -DWIN32 -DWIN64 -DPERL_TEXTMODE_SCRIPTS -DMULTIPLICITY -DPERL_IMPLICIT_SYS -DUSE_PERLIO -D__USE_MINGW_ANSI_STDIO -fwrapv -fno-strict-aliasing -mms-bitfields -O2 -DVERSION=\"0.025\" -DXS_VERSION=\"0.025\" "-IC:\strawberry\perl\lib\CORE" Cpipe.cpp
cc1plus.exe: warning: command-line option '-std=c99' is valid for C/ObjC but not for C++
"C:\strawberry\perl\bin\perl.exe" -IC:\strawberry\perl\lib -IC:\strawberry\perl\lib "C:\strawberry\perl\lib\ExtUtils/xsubpp" -noprototypes -typemap C:\strawberry\perl\lib\ExtUtils\typemap Pipe.xs >xstmp.c && "C:\strawberry\perl\bin\perl.exe" -MExtUtils::Command -e mv -- xstmp.c Pipe.cpp
Didn't find a 'MODULE ... PACKAGE ... PREFIX' line
gcc -c -std=c99 -DWIN32 -DWIN64 -DPERL_TEXTMODE_SCRIPTS -DMULTIPLICITY -DPERL_IMPLICIT_SYS -DUSE_PERLIO -D__USE_MINGW_ANSI_STDIO -fwrapv -fno-strict-aliasing -mms-bitfields -O2 -DVERSION=\"0.025\" -DXS_VERSION=\"0.025\" "-IC:\strawberry\perl\lib\CORE" Pipe.cpp
cc1plus.exe: warning: command-line option '-std=c99' is valid for C/ObjC but not for C++
"C:\strawberry\perl\bin\perl.exe" -MExtUtils::Mksymlists \
-e "Mksymlists('NAME'=>\"Win32::Pipe\", 'DLBASE' => 'Pipe', 'DL_FUNCS' => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' => []);"
g++ Pipe.def -o blib\arch\auto\Win32\Pipe\Pipe.xs.dll -shared -s -L"C:\strawberry\perl\lib\CORE" -L"C:\strawberry\c\lib" -L"C:\strawberry\c\x86_64-w64-mingw32\lib" -L"C:\strawberry\c\lib\gcc\x86_64-w64-mingw32\13.2.0" Cpipe.o Pipe.o "C:\strawberry\perl\lib\CORE\libperl542.a" -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32 -Wl,--enable-auto-image-base
C:/strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot export boot_Win32__Pipe: symbol not defined
collect2.exe: error: ld returned 1 exit status
gmake: *** [makefile:479: blib\arch\auto\Win32\Pipe\Pipe.xs.dll] Error 1
! Installing https://strawberryperl.com/package/kmx/perl-modules-patched/Win32-Pipe-0.025_patched.tar.gz failed. See C:\strawberry_build\env\AppDataRoaming\.cpanm\work\1775110601.15916\build.log for details. Retry with --force to force install it.
```
Passing build (SP 5.42.0.1)
```
Running Mkbootstrap for Pipe ()
"C:\perls\5.42.0.1_PDL\perl\bin\perl.exe" -MExtUtils::Command -e chmod -- 644 "Pipe.bs"
"C:\perls\5.42.0.1_PDL\perl\bin\perl.exe" -MExtUtils::Command::MM -e cp_nonempty -- Pipe.bs blib\arch\auto\Win32\Pipe\Pipe.bs 644
gcc -c -std=c99 -DWIN32 -DWIN64 -DPERL_TEXTMODE_SCRIPTS -DMULTIPLICITY -DPERL_IMPLICIT_SYS -DUSE_PERLIO -D__USE_MINGW_ANSI_STDIO -fwrapv -fno-strict-aliasing -mms-bitfields -O2 -DVERSION=\"0.025\" -DXS_VERSION=\"0.025\" "-IC:\perls\5.42.0.1_PDL\perl\lib\CORE" Cpipe.cpp
cc1plus.exe: warning: command-line option '-std=c99' is valid for C/ObjC but not for C++
"C:\perls\5.42.0.1_PDL\perl\bin\perl.exe" -IC:\perls\5.42.0.1_PDL\perl\lib -IC:\perls\5.42.0.1_PDL\perl\lib "C:\perls\5.42.0.1_PDL\perl\lib\ExtUtils/xsubpp" -typemap C:\perls\5.42.0.1_PDL\perl\lib\ExtUtils\typemap Pipe.xs >xstmp.c && "C:\perls\5.42.0.1_PDL\perl\bin\perl.exe" -MExtUtils::Command -e mv -- xstmp.c Pipe.cpp
Didn't find a 'MODULE ... PACKAGE ... PREFIX' line
gcc -c -std=c99 -DWIN32 -DWIN64 -DPERL_TEXTMODE_SCRIPTS -DMULTIPLICITY -DPERL_IMPLICIT_SYS -DUSE_PERLIO -D__USE_MINGW_ANSI_STDIO -fwrapv -fno-strict-aliasing -mms-bitfields -O2 -DVERSION=\"0.025\" -DXS_VERSION=\"0.025\" "-IC:\perls\5.42.0.1_PDL\perl\lib\CORE" Pipe.cpp
cc1plus.exe: warning: command-line option '-std=c99' is valid for C/ObjC but not for C++
In file included from Pipe.xs:45:
Pipe.xs: In function 'void XS_WIN32__Pipe_Create(PerlInterpreter*, CV*)':
cpipe.hpp:7:34: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
7 | #define ERROR_NAME_TOO_LONG 100, "Pipe Name is too long"
| ^~~~~~~~~~~~~~~~~~~~~~~
Pipe.xs:173:23: note: in expansion of macro 'ERROR_NAME_TOO_LONG'
173 | Error(ERROR_NAME_TOO_LONG);
| ^~~~~~~~~~~~~~~~~~~
Pipe.xs: In function 'void boot_Win32__Pipe(PerlInterpreter*, CV*)':
Pipe.xs:429:22: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
429 | char* file = __FILE__;
| ^~~~~~~~
In function 'int Error(int, char*)',
inlined from 'void XS_WIN32__Pipe_Create(PerlInterpreter*, CV*)' at Pipe.xs:173:8:
Pipe.xs:147:35: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=]
147 | gszError[ERROR_TEXT_SIZE] = '\0';
| ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
Pipe.xs: In function 'void XS_WIN32__Pipe_Create(PerlInterpreter*, CV*)':
Pipe.xs:48:6: note: at offset 128 into destination object 'gszError' of size 128
48 | char gszError[ERROR_TEXT_SIZE];
| ^~~~~~~~
Pipe.xs: In function 'int Error(int, char*)':
Pipe.xs:147:35: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=]
147 | gszError[ERROR_TEXT_SIZE] = '\0';
| ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
Pipe.xs:48:6: note: at offset 128 into destination object 'gszError' of size 128
48 | char gszError[ERROR_TEXT_SIZE];
| ^~~~~~~~
"C:\perls\5.42.0.1_PDL\perl\bin\perl.exe" -MExtUtils::Mksymlists \
-e "Mksymlists('NAME'=>\"Win32::Pipe\", 'DLBASE' => 'Pipe', 'DL_FUNCS' => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' => []);"
g++.exe Pipe.def -o blib\arch\auto\Win32\Pipe\Pipe.xs.dll -mdll -s -L"C:\perls\5.42.0.1_PDL\perl\lib\CORE" -L"C:\perls\5.42.0.1_PDL\c\lib" Cpipe.o Pipe.o "C:\perls\5.42.0.1_PDL\perl\lib\CORE\libperl542.a" -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32 -Wl,--enable-auto-image-base
"C:\perls\5.42.0.1_PDL\perl\bin\perl.exe" -MExtUtils::Command -e chmod -- 755 blib\arch\auto\Win32\Pipe\Pipe.xs.dll
C:\perls\5420~1.1_P\data\.cpanm\work\1775172931.48444\Win32-Pipe-0.025_patched>gmake test
"C:\perls\5.42.0.1_PDL\perl\bin\perl.exe" -MExtUtils::Command::MM -e cp_nonempty -- Pipe.bs blib\arch\auto\Win32\Pipe\Pipe.bs 644
```
关闭于 2026-04-03 27 条评论