http://www.perlmonks.org?node_id=1025470


in reply to perl.exe Makefile.PL fails to create makefile

Thanks for your reply. I really cannot install any module, either using cpan module or cpanp or directly or perl -MCPAN or shell. As far as I can tell, there is no Linux-like configure equivalent for Windows, I simply used nmake /f Makefile , as per instructions found in README file

Output of cpan look YAML

U:\.cpan\build\YAML-0.84-q_8Aj2>C:\path\to\perl\bin\perl.exe Makefile. +PL Checking if your kit is complete... Looks good Writing Makefile for YAML JSON 2.5 is required for $ENV{PERL_JSON_BACKEND} = 'JSON::XS' at C:/path/to/perl/lib/CPAN/Meta/Converter.pm line 23. at C:/path/to/perl/lib/ExtUtils/MM_Any.pm line 1335. END failed--call queue aborted.
But it won't let me install JSON or JSON::XS when I try that. I have JSON::PP 2.53 in the perl/lib directory, which it does show in @INC.

Output of perl -V

Summary of my perl5 (revision 5 version 16 subversion 0) configuration +: Platform: osname=MSWin32, osvers=6.1, archname=MSWin32-x86-multi-thread uname='' config_args='undef' hint=recommended, useposix=true, d_sigaction=undef useithreads=define, usemultiplicity=define useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=und +ef use64bitint=undef, use64bitall=undef, uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cl', ccflags ='-nologo -GF -W3 -MD -Zi -DNDEBUG -O1 -DWIN32 -D +_CONSOLE - DNO_STRICT -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DP +ERL_TEXTMO DE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO', optimize='-MD -Zi -DNDEBUG -O1', cppflags='-DWIN32' ccversion='15.00.30729.01', gccversion='', gccosandvers='' intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234 d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=8 ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='__int64 +', lseeksi ze=8 alignbytes=8, prototype=define Linker and Libraries: ld='link', ldflags ='-nologo -nodefaultlib -debug -opt:ref,icf -l +ibpath:"C: \path\to\perl\lib\CORE" -machine:x86 "/manifestdependency:type='Win32 +' name=' Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitec +ture='*' p ublicKeyToken='6595b64144ccf1df' language='*'"' libpth=\lib libs=oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib +comdlg32.l ib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid. +lib ws2_32 .lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.l +ib msvcrt. lib perllibs=oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.l +ib comdlg 32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib u +uid.lib ws 2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl +32.lib msv crt.lib libc=msvcrt.lib, so=dll, useshrplib=true, libperl=perl516.lib gnulibc_version='' Dynamic Linking: dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' ' cccdlflags=' ', lddlflags='-dll -nologo -nodefaultlib -debug -opt: +ref,icf - libpath:"C:\path\to\perl\lib\CORE" -machine:x86 "/manifestdependency: +type='Wi n32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' proces +sorArchite cture='*' publicKeyToken='6595b64144ccf1df' language='*'"' Characteristics of this binary (from libperl): Compile-time options: HAS_TIMES HAVE_INTERP_INTERN MULTIPLICITY PERLIO_LAYERS PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS PERL_MALLOC_WRAP PERL_PRESERVE_IVUV PL_OP_SLAB +_ALLOC USE_ITHREADS USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_PERLIO USE_PERL_ATOF Built under MSWin32 Compiled at Mar 20 2013 13:27:17 %ENV: PERL_JSON_BACKEND="JSON::XS" PERL_YAML_BACKEND="YAML" @INC: C:/path/to/perl/site/lib C:/path/to/perl/lib .

Output of perl -MData::Dumper -e " print Dumper(\%ENV) "

perl -MData::Dumper -e " print Dumper(\%ENV) " $VAR1 = { 'USERPROFILE' => 'C:\\Users\\rahul', 'USERDNSDOMAIN' => 'MY_COMPANY.COM', 'HOMEDRIVE' => 'U:', 'VS90COMNTOOLS' => 'c:\\Program Files\\Microsoft Visual Stud +io 9.0\\Co mmon7\\Tools\\', 'CLIENTNAME' => 'My_Computer_name', 'COMMONPROGRAMFILES' => 'C:\\Program Files\\Common Files', 'WINDOWS_TRACING_FLAGS' => '3', 'APPDATA' => 'C:\\Users\\rahul\\AppData\\Roaming', 'PROGRAMFILES' => 'C:\\Program Files', 'OS' => 'Windows_NT', 'LOCALAPPDATA' => 'C:\\Users\\rahul\\AppData\\Local', 'PATHEXT' => '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.W +SH;.MSC', 'PROMPT' => '$P$G', 'NUMBER_OF_PROCESSORS' => '1', 'FP_NO_HOST_CHECK' => 'NO', 'HOMEPATH' => '\\', 'PATH' => 'C:\\Windows\\system32;C:\\Windows;C:\\Windows\\Sy +stem32\\Wb em;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;c:\\Program Files\ +\Microsoft SQL Server\\90\\Tools\\binn\\;C:\\Program Files\\Microsoft Visual Stu +dio 9.0\\V C\\bin', 'PERL_YAML_BACKEND' => 'YAML', 'USERDOMAIN' => 'MY_DOMAIN', 'PROGRAMDATA' => 'C:\\ProgramData', 'TERM' => 'dumb', 'PROCESSOR_ARCHITECTURE' => 'x86', 'PSMODULEPATH' => 'C:\\Windows\\system32\\WindowsPowerShell\ +\v1.0\\Mod ules\\', 'PERL_JSON_BACKEND' => 'JSON::XS', 'TEMP' => 'C:\\Users\\rahul\\AppData\\Local\\Temp', 'WINDOWS_TRACING_LOGFILE' => 'C:\\BVTBin\\Tests\\installpack +age\\csilo gfile.log', 'PROCESSOR_REVISION' => '1a05', 'SYSTEMDRIVE' => 'C:', 'SYSTEMROOT' => 'C:\\Windows', 'COMSPEC' => 'C:\\Windows\\system32\\cmd.exe', 'HOMESHARE' => '\\\\servername\\users\\rahul', 'LOGONSERVER' => '\\\\SERVER', 'SESSIONNAME' => 'RDP-Tcp#0', 'WINDIR' => 'C:\\Windows', 'FTP_PASSIVE' => '1', 'PROCESSOR_LEVEL' => '6', 'PUBLIC' => 'C:\\Users\\Public', 'USERNAME' => 'rahul', 'PROCESSOR_IDENTIFIER' => 'x86 Family 6 Model 26 Stepping 5, + GenuineIn tel', 'VS80COMNTOOLS' => 'C:\\Program Files\\Microsoft Visual Stud +io 8\\Comm on7\\Tools\\', 'ALLUSERSPROFILE' => 'C:\\ProgramData', 'COMPUTERNAME' => 'VMWIN-7', 'TMP' => 'C:\\Users\\rahul\\AppData\\Local\\Temp' };

Replies are listed 'Best First'.
Re^2: perl.exe Makefile.PL fails to create makefile
by Corion (Patriarch) on Mar 26, 2013 at 09:39 UTC

    Why do you have $ENV{PERL_JSON_BACKEND} set if your Perl does not have JSON::XS installed?

      I'm not sure, I haven't set/changed anything , I referred to README.Win32 file in the source. Perhaps it's because of the Strawberry Perl installed. Let me see if I can remove/clean it.

Re^2: perl.exe Makefile.PL fails to create makefile
by Anonymous Monk on Mar 26, 2013 at 10:17 UTC

    But it won't let me install JSON or JSON::XS when I try that.

    Well OK, YAML Makefile.PL aborting because JSON isn't installed won't exactly tell us whats wrong with getting JSON installed :), so copy/paste the failed JSON/JSON::XS install message, please

    OTOH, what corion asked ;)

      Corion's hint seems to be the one! Thanks, Corion. Now install progresses to running the tests, but fails at :

      'C:\Program' is not recognized as an internal or external command,oper +able program or batch file.
      I suppose the string needs to be put in quotes someplace - which place ? Is it in MyConfig.pm file in .cpan ?

        Progress : put the C:\Program File\....\nmake.exe string in quotes , in MyConfig.pm file , now installed YAML successfully.

        Trying JSON::XS, which throws error :

        'pl2bat.bat' is not recognized as an internal or external command,oper +able program or batch file.
        Trying with bin dir appended to %PATH%

        UPDATE: JSON::XS and JSON installed successfully.

        Summary : 1. Strawberry perl had set environment variables which affected my instance of perl. 2. MyConfig.pm file isn't set right by default for Windows paths which often contain spaces. Need to put such path strings in quotes. 3. Need to run vcvars32.bat and ensure perl/bin is in %PATH%

        Thanks to all monks!

        I suppose the string needs to be put in quotes someplace - which place ? Is it in MyConfig.pm file in .cpan ?

        Well, I've seen that before in a few , but I don't recall from memory off the top of my head where/what/how

        Maybe  cpan[1]> o conf or whatever

        Maybe update %userprofile% and other vars to use shortnames if you've got that configured

        Maybe patch path in pl2bat ... Re: exec not working?

        OTOH, I don't think cpanp will have problem with it, I prefer cpanp