ingydotnet / inline-c-pm

10 stars 19 forks source link

Windows | tests fail when generated path exceeds system limit #103

Open shawnlaffan opened 1 year ago

shawnlaffan commented 1 year ago

If Inline::C is built and tested in a directory with a long name then several of the tests will fail.

Reproduced using Strawberry perl 5.36 (dev) and 5.28. More details and diagnosis are in https://github.com/StrawberryPerl/Perl-Dist-Strawberry/issues/95

t/31include_dirs_angle_brackets.t .. Uncaught exception from user code:
        gmake[1]: Entering directory 'C:/user/git/STRAWB~1/SP536_~1/data/.cpanm/work/1682132243.19840/Inline-C-0.82/_Inline_31include_dirs_angle_brackets.2200/build/_31include_dirs_angle_brackets_t_8984'
        Running Mkbootstrap for _31include_dirs_angle_brackets_t_8984 ()
        "C:\user\git\strawberry\sp536_202320a\perl\bin\perl.exe" -MExtUtils::Command -e chmod -- 644 "_31include_dirs_angle_brackets_t_8984.bs"
        "C:\user\git\strawberry\sp536_202320a\perl\bin\perl.exe" -MExtUtils::Command::MM -e cp_nonempty -- _31include_dirs_angle_brackets_t_8984.bs blib\arch\auto\_31include_dirs_angle_brackets_t_8984\_31include_dirs_angle_brackets_t_8984.bs 644
        "C:\user\git\strawberry\sp536_202320a\perl\bin\perl.exe" "C:\user\git\strawberry\sp536_202320a\perl\lib\ExtUtils/xsubpp"  -typemap "C:\user\git\strawberry\sp536_202320a\perl\lib\ExtUtils\typemap" -typemap "C:\user\git\STRAWB~1\SP536_~1\data\.cpanm\work\1682132243.19840\Inline-C-0.82\t\typemap"   _31include_dirs_angle_brackets_t_8984.xs > _31include_dirs_angle_brackets_t_8984.xsc
        "C:\user\git\strawberry\sp536_202320a\perl\bin\perl.exe" -MExtUtils::Command -e mv -- _31include_dirs_angle_brackets_t_8984.xsc _31include_dirs_angle_brackets_t_8984.c
        gcc -c  -iquote"C:/user/git/STRAWB~1/SP536_~1/data/.cpanm/work/1682132243.19840/Inline-C-0.82/t" -I"C:/user/git/STRAWB~1/SP536_~1/data/.cpanm/work/1682132243.19840/Inline-C-0.82/t/test_header" -DWIN32 -DWIN64 -D__USE_MINGW_ANSI_STDIO -DPERL_TEXTMODE_SCRIPTS -DMULTIPLICITY -DPERL_IMPLICIT_SYS -DUSE_PERLIO -D__USE_MINGW_ANSI_STDIO -fwrapv -fno-strict-aliasing -mms-bitfields -Os   -DVERSION=\"0.00\" -DXS_VERSION=\"0.00\"  "-IC:\user\git\strawberry\sp536_202320a\perl\lib\CORE"   _31include_dirs_angle_brackets_t_8984.c
        "C:\user\git\strawberry\sp536_202320a\perl\bin\perl.exe" -MExtUtils::Mksymlists \
             -e "Mksymlists('NAME'=>\"_31include_dirs_angle_brackets_t_8984\", 'DLBASE' => '_31include_dirs_angle_brackets_t_8984', 'DL_FUNCS' => {  }, 'FUNCLIST' => [], 'IMPORTS' => {  }, 'DL_VARS' => []);"
        g++.exe _31include_dirs_angle_brackets_t_8984.def -o blib\arch\auto\_31include_dirs_angle_brackets_t_8984\_31include_dirs_angle_brackets_t_8984.xs.dll -mdll -s -L"C:\user\git\strawberry\sp536_202320a\perl\lib\CORE" -L"C:\user\git\strawberry\sp536_202320a\c\lib" _31include_dirs_angle_brackets_t_8984.o   "C:\user\git\strawberry\sp536_202320a\perl\lib\CORE\libperl536.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:/user/git/strawberry/sp536_202320a/c/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot open output file blib\arch\auto\_31include_dirs_angle_brackets_t_8984\_31include_dirs_angle_brackets_t_8984.xs.dll: No such file or directory
        collect2.exe: error: ld returned 1 exit status
        gmake[1]: *** [makefile:473: blib\arch\auto\_31include_dirs_angle_brackets_t_8984\_31include_dirs_angle_brackets_t_8984.xs.dll] Error 1
        gmake[1]: Leaving directory 'C:/user/git/STRAWB~1/SP536_~1/data/.cpanm/work/1682132243.19840/Inline-C-0.82/_Inline_31include_dirs_angle_brackets.2200/build/_31include_dirs_angle_brackets_t_8984'

        A problem was encountered while attempting to compile and install your Inline
        C code. The command that failed was:
          "gmake > out.make 2>&1" with error code 2

        The build directory was:
        C:\user\git\STRAWB~1\SP536_~1\data\.cpanm\work\1682132243.19840\Inline-C-0.82\_Inline_31include_dirs_angle_brackets.2200\build\_31include_dirs_angle_brackets_t_8984

        To debug the problem, cd to the build directory, and inspect the output files.

         at t/31include_dirs_angle_brackets.t line 18.
                ...propagated at C:\user\git\STRAWB~1\SP536_~1\data\.cpanm\work\1682132243.19840\Inline-C-0.82\blib\lib/Inline/C.pm line 888.
        BEGIN failed--compilation aborted at t/31include_dirs_angle_brackets.t line 18.
t/31include_dirs_angle_brackets.t .. Dubious, test returned 2 (wstat 512, 0x200)
Failed 1/1 subtests
t/32include_dirs_double_quotes.t ... Uncaught exception from user code:
        gmake[1]: Entering directory 'C:/user/git/STRAWB~1/SP536_~1/data/.cpanm/work/1682132243.19840/Inline-C-0.82/_Inline_32include_dirs_double_quotes.14568/build/_32include_dirs_double_quotes_t_058c'
        Running Mkbootstrap for _32include_dirs_double_quotes_t_058c ()
        "C:\user\git\strawberry\sp536_202320a\perl\bin\perl.exe" -MExtUtils::Command -e chmod -- 644 "_32include_dirs_double_quotes_t_058c.bs"
        "C:\user\git\strawberry\sp536_202320a\perl\bin\perl.exe" -MExtUtils::Command::MM -e cp_nonempty -- _32include_dirs_double_quotes_t_058c.bs blib\arch\auto\_32include_dirs_double_quotes_t_058c\_32include_dirs_double_quotes_t_058c.bs 644
        "C:\user\git\strawberry\sp536_202320a\perl\bin\perl.exe" "C:\user\git\strawberry\sp536_202320a\perl\lib\ExtUtils/xsubpp"  -typemap "C:\user\git\strawberry\sp536_202320a\perl\lib\ExtUtils\typemap" -typemap "C:\user\git\STRAWB~1\SP536_~1\data\.cpanm\work\1682132243.19840\Inline-C-0.82\t\typemap"   _32include_dirs_double_quotes_t_058c.xs > _32include_dirs_double_quotes_t_058c.xsc
        "C:\user\git\strawberry\sp536_202320a\perl\bin\perl.exe" -MExtUtils::Command -e mv -- _32include_dirs_double_quotes_t_058c.xsc _32include_dirs_double_quotes_t_058c.c
        gcc -c  -iquote"C:/user/git/STRAWB~1/SP536_~1/data/.cpanm/work/1682132243.19840/Inline-C-0.82/t" -DWIN32 -DWIN64 -D__USE_MINGW_ANSI_STDIO -DPERL_TEXTMODE_SCRIPTS -DMULTIPLICITY -DPERL_IMPLICIT_SYS -DUSE_PERLIO -D__USE_MINGW_ANSI_STDIO -fwrapv -fno-strict-aliasing -mms-bitfields -Os   -DVERSION=\"0.00\" -DXS_VERSION=\"0.00\"  "-IC:\user\git\strawberry\sp536_202320a\perl\lib\CORE"   _32include_dirs_double_quotes_t_058c.c
        "C:\user\git\strawberry\sp536_202320a\perl\bin\perl.exe" -MExtUtils::Mksymlists \
             -e "Mksymlists('NAME'=>\"_32include_dirs_double_quotes_t_058c\", 'DLBASE' => '_32include_dirs_double_quotes_t_058c', 'DL_FUNCS' => {  }, 'FUNCLIST' => [], 'IMPORTS' => {  }, 'DL_VARS' => []);"
        g++.exe _32include_dirs_double_quotes_t_058c.def -o blib\arch\auto\_32include_dirs_double_quotes_t_058c\_32include_dirs_double_quotes_t_058c.xs.dll -mdll -s -L"C:\user\git\strawberry\sp536_202320a\perl\lib\CORE" -L"C:\user\git\strawberry\sp536_202320a\c\lib" _32include_dirs_double_quotes_t_058c.o   "C:\user\git\strawberry\sp536_202320a\perl\lib\CORE\libperl536.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:/user/git/strawberry/sp536_202320a/c/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot open output file blib\arch\auto\_32include_dirs_double_quotes_t_058c\_32include_dirs_double_quotes_t_058c.xs.dll: No such file or directory
        collect2.exe: error: ld returned 1 exit status
        gmake[1]: *** [makefile:474: blib\arch\auto\_32include_dirs_double_quotes_t_058c\_32include_dirs_double_quotes_t_058c.xs.dll] Error 1
        gmake[1]: Leaving directory 'C:/user/git/STRAWB~1/SP536_~1/data/.cpanm/work/1682132243.19840/Inline-C-0.82/_Inline_32include_dirs_double_quotes.14568/build/_32include_dirs_double_quotes_t_058c'

        A problem was encountered while attempting to compile and install your Inline
        C code. The command that failed was:
          "gmake > out.make 2>&1" with error code 2

        The build directory was:
        C:\user\git\STRAWB~1\SP536_~1\data\.cpanm\work\1682132243.19840\Inline-C-0.82\_Inline_32include_dirs_double_quotes.14568\build\_32include_dirs_double_quotes_t_058c

        To debug the problem, cd to the build directory, and inspect the output files.

         at t/32include_dirs_double_quotes.t line 21.
                ...propagated at C:\user\git\STRAWB~1\SP536_~1\data\.cpanm\work\1682132243.19840\Inline-C-0.82\blib\lib/Inline/C.pm line 888.
        BEGIN failed--compilation aborted at t/32include_dirs_double_quotes.t line 21.
t/32include_dirs_double_quotes.t ... Dubious, test returned 2 (wstat 512, 0x200)
No subtests run