Skip Menu |

This queue is for tickets about the Tcl CPAN distribution.

Report information
The Basics
Id: 128649
Status: new
Priority: 0/
Queue: Tcl

People
Owner: Nobody in particular
Requestors: CAC [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in: (no value)



Subject: Path to tclsh cannot contain spaces
Using ActivePerl 5.24 (dmake 4.11 and gcc 4.6.3); I still have not tried Strawberry Perl. I installed Magicsplat 8.6.9 system-wide on my Windows 10 x64 machine, which puts tclsh.exe somewhere like "C:\Program Files\Tcl86\bin" by default, but it is on the PATH.
 
Tcl.pm's Makefile.PL can detect tclsh on the PATH (I am not specifying --tclsh), but it does not appear to be saving where it is correctly in the compiler args in the generated Makefile. This causes an error:
 
GitHub\tcl.pm> dmake
Skip blib\lib\Tcl.pm (unchanged)
Running Mkbootstrap for Tcl ()
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e chmod -- 644 "Tcl.bs"
"C:\Perl64\bin\perl.exe" -MExtUtils::Command::MM -e cp_nonempty -- Tcl.bs blib\arch\auto\Tcl\Tcl.bs 644
C:\Perl64\site\bin\gcc.exe -c  -Itcl-core/include       -s -O2 -DWIN32 -DWIN64 -DCONSERVATIVE -DPERL_TEXTMODE_SCRIPTS -DUSE_SITECUSTOMIZE -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fwrapv -fno-strict-aliasing -mms-bitfields -s -O2     -DVERSION=\"1.27\"    -DXS_VERSION=\"1.27\"  "-IC:\Perl64\lib\CORE"  -DUSE_TCL_STUBS -DTCLSH_PATH=\"C:/Program Files/Tcl86/bin\" Tcl.c
gcc.exe: error: Files/Tcl86/bin": No such file or directory
dmake.exe:  Error code 129, while making 'Tcl.o'
 
My guess is that line 119 of Makefile.PL should instead use:
 
$defs .= " -DTCLSH_PATH=\"\\\"".([$tclcfg{tclsh}=~m/^(.*)\//]->[0])."\\\"\""
 
rather than
 
$defs .= " -DTCLSH_PATH=\\\"".([$tclcfg{tclsh}=~m/^(.*)\//]->[0])."\\\""
 
This puts one final pair of unescaped quotes around the path. I admit I don't know much about Makefiles and when to escape backslashes or quotes in them; maybe I am wrong to assume they follow the same rules as shell scripts here.
 
Similar issues and improvements might apply to the include path (if not using stubs) and lib path.