gisle / tcl.pm

Tcl extension module for Perl
http://search.cpan.org/dist/Tcl
9 stars 8 forks source link

Fails to install on Windows 10 Perl v5.38.0, Strawberry Perl Portable #59

Closed fantinuoli closed 4 months ago

fantinuoli commented 10 months ago

Fails to install on Windows 10 Perl v5.38.0, Strawberry Perl Portable

cpanm (App::cpanminus) 1.7046 on perl 5.038000 built for MSWin32-x64-multi-thread
Work directory is C:\perl\data/.cpanm/work/1705263395.9132
You have make C:\perl\c\bin\gmake.exe
You have LWP 6.71
Falling back to Archive::Tar 3.02
Searching Tcl () on cpanmetadb ...
--> Working on Tcl
Fetching http://www.cpan.org/authors/id/V/VK/VKON/Tcl-1.32.tar.gz
-> OK
Unpacking Tcl-1.32.tar.gz
Entering Tcl-1.32
Checking configure dependencies from META.json
Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (7.70)
Configuring Tcl-1.32
Running Makefile.PL
tclsh=C:/ActiveTcl/bin/tclsh.exe
tclConfig.sh=C:/ActiveTcl/lib/tclConfig.sh
tcl_library=C:\tools\msys64\tmp\ActiveState-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\lib
tcl_version=8.6
Using config data in C:/ActiveTcl/lib/tclConfig.sh
LIBS   = -TC:\ActiveTcl\lib\tcl86t.lib -LC:\TEMP\ActiveState----------------------------------------please-run-the-install-script----------------------------------------\lib tclstub86.lib
INC    = -IC:\ActiveTcl\include
DEFINE =  -DUSE_TCL_STUBS -DTCL_LIB_FILE=\"tcl86t.dll\"
tclConfig.sh = 
Checking if your kit is complete...
Looks good
Warning (mostly harmless): No library found for -TC:/ActiveTcl/lib/tcl86t.lib
Warning (mostly harmless): No library found for tclstub86.lib
Generating a gmake-style Makefile
Writing Makefile for Tcl
Writing MYMETA.yml and MYMETA.json
-> OK
Checking dependencies from MYMETA.json ...
Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.70)
Building and testing Tcl-1.32
cp Tcl-hack.pod blib\lib\Tcl-hack.pod
cp Tcl.pm blib\lib\Tcl.pm
Running Mkbootstrap for Tcl ()
"C:\perl\perl\bin\perl.exe" -MExtUtils::Command -e chmod -- 644 "Tcl.bs"
"C:\perl\perl\bin\perl.exe" -MExtUtils::Command::MM -e cp_nonempty -- Tcl.bs blib\arch\auto\Tcl\Tcl.bs 644
"C:\perl\perl\bin\perl.exe" "C:\perl\perl\lib\ExtUtils/xsubpp"  -typemap C:\perl\perl\lib\ExtUtils\typemap -typemap C:\perl\data\.cpanm\work\1705263395.9132\Tcl-1.32\typemap  Tcl.xs > Tcl.xsc
"C:\perl\perl\bin\perl.exe" -MExtUtils::Command -e mv -- Tcl.xsc Tcl.c
gcc -c  -IC:\ActiveTcl\include -DWIN32 -DWIN64 -DPERL_TEXTMODE_SCRIPTS -DMULTIPLICITY -DPERL_IMPLICIT_SYS -DUSE_PERLIO -D__USE_MINGW_ANSI_STDIO -fwrapv -fno-strict-aliasing -mms-bitfields -Os   -DVERSION=\"1.32\" -DXS_VERSION=\"1.32\"  "-IC:\perl\perl\lib\CORE"  -DUSE_TCL_STUBS -DTCL_LIB_FILE=\"tcl86t.dll\" Tcl.c
"C:\perl\perl\bin\perl.exe" -MExtUtils::Mksymlists \
     -e "Mksymlists('NAME'=>\"Tcl\", 'DLBASE' => 'Tcl', 'DL_FUNCS' => {  }, 'FUNCLIST' => [], 'IMPORTS' => {  }, 'DL_VARS' => []);"
g++.exe Tcl.def -o blib\arch\auto\Tcl\Tcl.xs.dll -mdll -s -L"C:\perl\perl\lib\CORE" -L"C:\perl\c\lib" Tcl.o   "C:\perl\perl\lib\CORE\libperl538.a" "C:\perl\c\x86_64-w64-mingw32\lib\libmoldname.a" "C:\perl\c\x86_64-w64-mingw32\lib\libkernel32.a" "C:\perl\c\x86_64-w64-mingw32\lib\libuser32.a" "C:\perl\c\x86_64-w64-mingw32\lib\libgdi32.a" "C:\perl\c\x86_64-w64-mingw32\lib\libwinspool.a" "C:\perl\c\x86_64-w64-mingw32\lib\libcomdlg32.a" "C:\perl\c\x86_64-w64-mingw32\lib\libadvapi32.a" "C:\perl\c\x86_64-w64-mingw32\lib\libshell32.a" "C:\perl\c\x86_64-w64-mingw32\lib\libole32.a" "C:\perl\c\x86_64-w64-mingw32\lib\liboleaut32.a" "C:\perl\c\x86_64-w64-mingw32\lib\libnetapi32.a" "C:\perl\c\x86_64-w64-mingw32\lib\libuuid.a" "C:\perl\c\x86_64-w64-mingw32\lib\libws2_32.a" "C:\perl\c\x86_64-w64-mingw32\lib\libmpr.a" "C:\perl\c\x86_64-w64-mingw32\lib\libwinmm.a" "C:\perl\c\x86_64-w64-mingw32\lib\libversion.a" "C:\perl\c\x86_64-w64-mingw32\lib\libodbc32.a" "C:\perl\c\x86_64-w64-mingw32\lib\libodbccp32.a" "C:\perl\c\x86_64-w64-mingw32\lib\libcomctl32.a" -Wl,--enable-auto-image-base
C:/perl/c/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: Tcl.o:Tcl.c:(.data+0x0): undefined reference to `Tcl_InitStubs'
C:/perl/c/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: Tcl.o:Tcl.c:(.rdata$.refptr.tclStubsPtr[.refptr.tclStubsPtr]+0x0): undefined reference to `tclStubsPtr'
collect2.exe: error: ld returned 1 exit status
gmake: *** [makefile:480: blib\arch\auto\Tcl\Tcl.xs.dll] Error 1
-> FAIL Installing Tcl failed. See C:\perl\data\.cpanm\work\1705263395.9132\build.log for details. Retry with --force to force install it.
vadrer commented 10 months ago

please pay the attention to the

LIBS   = -TC:\ActiveTcl\lib\tcl86t.lib -LC:\TEMP\ActiveState----------------------------------------please-run-the-install-script----------------------------------------\lib tclstub86.lib

the tcl.pm module contains 8.4 stub library to have tcl.h and tclstub84.lib su building process will succeed, I prefer to not use module-supplied lib file,

let me know if you prefer to deal with such broken configs.

vadrer commented 10 months ago

I see that you're automating strawberry build process. This is very nice and cool. OTOH I have these items to comment:

fantinuoli commented 4 months ago

I manage to achieve my goal by dropping Activestate and using Magicsplat instead.

vadrer commented 4 months ago

hi Although there should be correct tclConfig.sh, rather often windows installers fail to provide this on Windows. Sometimes it is not found - in this case probably Makefile.PL should search few guesses related to the executed tclsh.exe.

But often the tclConfig.sh contains wrong values. Makefile.pl shows an error in this case, but this error remains unnoticed.

I think we should show dialog box message with the error in this particular case