Subject: | CPAN fails, possibly due to a gmake command line issue |
Date: | Mon, 9 Dec 2019 10:16:52 -0800 |
To: | Strawberry Perl Distribution <bug-Perl-Dist-Strawberry [...] rt.cpan.org> |
From: | Matthew Kidd <matt [...] triplesqueeze.com> |
I can't get CPAN to install any packages on Windows 7 (64-bit) using the
latest distribution:
C:\Users\matt\Documents> perl -v
This is perl 5, version 30, subversion 1 (v5.30.1) built for
MSWin32-x64-multi-thread
Here is an example when trying to install the POSIX::strptime package (a
dependency of Image::ExifTool package that I want to install):
C:\Users\matt\Documents> cpan POSIX::strptime
Loading internal logger. Log::Log4perl recommended for better logging
CPAN: CPAN::SQLite loaded ok (v0.217)
Database was generated on Mon, 09 Dec 2019 16:38:10 GMT
Running install for module 'POSIX::strptime'
CPAN: LWP::UserAgent loaded ok (v6.42)
Fetching with LWP:
http://cpan.strawberryperl.com/authors/id/G/GO/GOZER/POSIX-strptime-0.13.tar.gz
CPAN: YAML::XS loaded ok (v0.80)
CPAN: Digest::SHA loaded ok (v6.02)
Fetching with LWP:
http://cpan.strawberryperl.com/authors/id/G/GO/GOZER/CHECKSUMS
CPAN: Compress::Zlib loaded ok (v2.09)
Checksum for
C:\Perl64\cpan\sources\authors\id\G\GO\GOZER\POSIX-strptime-0.13.tar.gz
ok
CPAN: Archive::Tar loaded ok (v2.32)
CPAN: CPAN::Meta::Requirements loaded ok (v2.140)
CPAN: Parse::CPAN::Meta loaded ok (v2.150010)
CPAN: CPAN::Meta loaded ok (v2.150010)
CPAN: Module::CoreList loaded ok (v5.20191120)
Configuring G/GO/GOZER/POSIX-strptime-0.13.tar.gz with Makefile.PL
Checking if your kit is complete...
Looks good
Generating a gmake-style Makefile
Writing Makefile for POSIX::strptime
Writing MYMETA.yml and MYMETA.json
GOZER/POSIX-strptime-0.13.tar.gz
C:\Perl64\perl\bin\perl.exe Makefile.PL -- OK
Running make for G/GO/GOZER/POSIX-strptime-0.13.tar.gz
process_begin:
CreateProcess(C:\Users\matt\AppData\Loca\Temp\make5160-1.bat,
C:\Users\matt\AppData\Local\Temp\make5160-1.bat, ...) failed.
make (e=2): The system cannot find the file specified.
gmake: *** [Makefile:386: blibdirs] Error 2
GOZER/POSIX-strptime-0.13.tar.gz
C:\Perl64\c\bin\gmake.exe -- NOT OK
Stopping: 'install' failed for 'POSIX::strptime'.
I've investigated this problem a bit using the SysInterals (now
Microsoft) *procmon* tool. I think the CreateProcess() call flagged in
red fails because the bat file does not exist at this point. The
temporary directory is writeable (as expected) and *procmon* shows
*gmake.exe* creating a *make####-1.bat* file but quickly deleting it, 18
ms later.
Also, and rather bizarrely, I see two attempts by *gmake* to read the
following file:
C:\Windows\system32\cmd.exe;C:\Bin;C:\Program
Files\Intel\WiFi\bin\;C:\Program Files\Common
Files\Intel\WirelessCommon\ \c
C:\Users\matt\AppData\Loca\Temp\make5160-1.bat
This isn't a valid filename so the requests fail. The strange thing that
this "filename" consists of parts of the system wide PATH environment
variable (in red), "\c", and then the temporarily file (in blue). gmake
seems to be doing something strange.
- Matthew