> 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

Reply via email to