> but we do have these lines I Makefile.PL now: > > ... > $incpath = $tclcfg{TCL_INCLUDE_SPEC}; > > # https://www.cpantesters.org/cpan/report/18397198-6bf4-1014-85e5-4e79f459b9c5 > # Tcl.xs:32:10: fatal error: tcl.h: No such file or directory > if ($incpath) { > my @tclh = grep {-f "$_/tcl.h"} $incpath=~/-I(\S+)/g; > if ($#tclh==-1) { > _die "incpath $incpath from your tclconfig $tclconfig does not provide tcl.h" > } > } else {_die "can not figure out incpath from your tclconfig $tclconfig"} > > How come this happen to avoid my otherwise perfect check??
Hi, I got some try on Strawberry Perl. I got similar result without installing any tcl binary distribution. ---------- C:\strawberry\cpan\build\Tcl-1.16-0>perl Makefile.PL 'tclsh' is not recognized as an internal or external command, operable program or batch file. Use of uninitialized value $tclcfg{"tcl_library"} in pattern match (m//) at Makefile.PL line 164. Use of uninitialized value $tclver in substitution (s///) at Makefile.PL line 171. Use of uninitialized value $tclver in concatenation (.) or string at Makefile.PL line 182. LIBS = -ltcl Use of uninitialized value $incpath in concatenation (.) or string at Makefile.PL line 190. INC = DEFINE = tclConfig.sh = Use of uninitialized value $incpath in string at Makefile.PL line 208. Checking if your kit is complete... Looks good Warning (mostly harmless): No library found for -ltcl Generating a dmake-style Makefile Writing Makefile for Tcl Writing MYMETA.yml and MYMETA.json C:\strawberry\cpan\build\Tcl-1.16-0>dmake cp Tcl.pm blib\lib\Tcl.pm Running Mkbootstrap for Tcl () "C:\strawberry\perl\bin\perl.exe" -MExtUtils::Command -e chmod -- 644 "Tcl.bs" "C:\strawberry\perl\bin\perl.exe" -MExtUtils::Command::MM -e cp_nonempty -- Tcl.bs blib\arch\auto\Tcl\Tcl.bs 644 "C:\strawberry\perl\bin\perl.exe" "C:\strawberry\perl\lib\ExtUtils\xsubpp" -typemap C:\strawberry\perl\lib\ExtUtils\typemap -typema p C:\strawberry\cpan\build\Tcl-1.16-0\typemap Tcl.xs > Tcl.xsc Please specify prototyping behavior for Tcl.xs (see perlxs manual) "C:\strawberry\perl\bin\perl.exe" -MExtUtils::Command -e mv -- Tcl.xsc Tcl.c gcc -c -s -O2 -DWIN32 -DWIN64 -DCONSERVATIVE -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fwrapv -f no-strict-aliasing -mms-bitfields -s -O2 -DVERSION=\"1.16\" -DXS_VERSION=\"1.16\" "-IC:\strawberry\perl\lib\CORE" Tcl .c Tcl.xs:32:17: fatal error: tcl.h: No such file or directory #include <tcl.h> ^ compilation terminated. dmake: Error code 129, while making 'Tcl.o' ---------- The key is why it can pass the check Makefile.PL. In Strawberry Perl, the following code got a weird result (Tcl.pm 1.16): C:\strawberry\cpan\build\Tcl-1.16-0>perl -E "open(FH, 'foo |') or die; say 'I am still alive';" I am still alive 'foo' is not recognized as an internal or external command, operable program or batch file. It seems open() with pipe returns true even if there is no 'foo' program existed. I my Cygwin environment, the same program gets following result % perl -E "open(FH, 'foo |') or die; say 'I am still alive';" Died at -e line 1. The Strawberry Perl I use is 5.24.4 x86_64 version in Win7. The result in Tcl.pm 1.18 http://matrix.cpantesters.org/?dist=Tcl%201.18;os=mswin32;perl=5.28.0;reports=1 seems to be caused from the same issue. SJ