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 2 days ago

fantinuoli commented 5 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 5 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 5 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 2 days ago

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