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


in reply to Re^3: Problem Installing DBD::Informix on Windows 7 using AS Perl 5.8.9
in thread Problem Installing DBD::Informix on Windows 7 using AS Perl 5.8.9

use "nmake -n install" or "nmake -n all" http://msdn.microsoft.com/en-us/library/afyyse50.aspx and look at the output. Its the first step in repairing the makefile. There might be Makefile.PL code generating incompatible make syntax designed for a different make program in your module (I dont know anything specific about DBD::Informix).
  • Comment on Re^4: Problem Installing DBD::Informix on Windows 7 using AS Perl 5.8.9

Replies are listed 'Best First'.
Re^5: Problem Installing DBD::Informix on Windows 7 using AS Perl 5.8.9
by Anonymous Monk on Aug 17, 2012 at 22:17 UTC

    I have already worked through the...

    Well, I did see that :)

    The error I'm getting is because an invalid line is being generated (i.e., INFORMIXC='C:\Perl\bin\perl.exe esqlld' ESQLLD=..) which is not a valid command. I need to find out where/how this line is generated and how to correct it.

    You noticed that? Have you heard of grep/ack? http://search.cpan.org/grep?cpanid=JOHNL&release=DBD-Informix-2011.0612&string=INFORMIXC&i=1&n=1&C=0

    Makefile.PL 282: which recognizes the INFORMIXC environment variable. 637: $EV = [ "INFORMIXC=$Config{perlpath} esqlcc", "ESQLCC=$Con +fig{cc}" ]; 681:# INFORMIXC to define the loader and the LDDLFLAGS via the back do +or. 699:$opts{LD} = "INFORMIXC='\$(FULLPERL) esqlld' " . 936: ESQL_CC = INFORMIXC="$(FULLPERL) esqlcc" ESQLCC="$(CC) +" $(ESQL) 1006:# the INFORMIXC environment variable. 1016: if (/^CC=/o && !/INFORMIXC/o) 1018: print LOCAL "# INFORMIXC added by Makefile.PL for $pk +g.\n"; 1022: $_ = 'CC="${INFORMIXC:-' . $_ . "}\"\n";

    Now you know, its in Makefile.PL

Re^5: Problem Installing DBD::Informix on Windows 7 using AS Perl 5.8.9
by roho (Bishop) on Aug 17, 2012 at 22:19 UTC
    Thanks for the suggestion. I'm fairly sure that (like you said) Makefile.PL is generating invalid Makefile code for nmake. I'm just not sure what nmake is expecting instead of "INFORMIXC=...".

    "Its not how hard you work, its how much you get done."

      I'm just not sure what nmake is expecting instead of "INFORMIXC=...".

      Do you know what that line is supposed to do?

      What happens when you execute it manually?

        It runs Perl program esqlld, which defaults the compiler name to "cc", which of course is not found. I changed the default compiler name to "cl" in esqlld (to get it to run) and got the following output:

        C:\Perl\bin\perl.exe esqlld ESQLLD='link -dll -nologo -nodefaultlib -d +ebug -opt:ref,icf -libpath:"C:/Perl/lib/CORE" -machine:x86' -out:b +lib/arch/auto/DBD/Informix/Informix.dll -dll -nologo -nodefaultlib -d +ebug -opt:ref,icf -libpath:"C:/Perl/lib/CORE" -machine:x86 Informix +.obj dbdimp.obj dbdattr.obj sqltoken.obj sqltype.obj ixblob.obj odbct +ype.obj kludge.obj link.obj esqlcver.obj esqlc_v6.obj /LIBPATH:C:/PRO +GRA~2/IBM/Informix/11.70/lib /LIBPATH:C:/PROGRA~2/IBM/Informix/11.70/ +lib/esql "C:/PROGRA~2/IBM/Informix/11.70/lib/isqlt09a.lib" "C:/ +PROGRA~2/IBM/Informix/11.70/lib/igl4n304.lib" "C:/PROGRA~2/IBM/Inform +ix/11.70/lib/iglxn304.lib" "C:/PROGRA~2/IBM/Informix/11.70/lib/igo4n3 +04.lib" netapi32.lib wsock32.lib user32.lib winmm.lib advapi32.lib C +:/Perl/lib/CORE/perl58.lib oldnames.lib kernel32.lib user32.lib gdi32 +.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib ol +eaut32.lib netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib versi +on.lib odbc32.lib odbccp32.lib msvcrt.lib -def:Informix.def cl : Command line warning D9035 : option 'o' has been deprecated and w +ill be removed in a future release cl : Command line warning D9035 : option 'o' has been deprecated and w +ill be removed in a future release cl : Command line warning D9035 : option 'o' has been deprecated and w +ill be removed in a future release cl : Command line warning D9002 : ignoring unknown option '-dll' cl : Command line warning D9002 : ignoring unknown option '-nodefaultl +ib' cl : Command line warning D9002 : ignoring unknown option '-debug' cl : Command line warning D9002 : ignoring unknown option '-libpath:C: +/Perl/lib/CORE' cl : Command line warning D9002 : ignoring unknown option '-machine:x8 +6'' cl : Command line warning D9002 : ignoring unknown option '-dll' cl : Command line warning D9002 : ignoring unknown option '-nodefaultl +ib' cl : Command line warning D9002 : ignoring unknown option '-debug' cl : Command line warning D9002 : ignoring unknown option '-libpath:C: +/Perl/lib/CORE' cl : Command line warning D9002 : ignoring unknown option '-machine:x8 +6' cl : Command line warning D9002 : ignoring unknown option '/LIBPATH:C: +/PROGRA~2/IBM/Informix/11.70/lib' cl : Command line warning D9002 : ignoring unknown option '/LIBPATH:C: +/PROGRA~2/IBM/Informix/11.70/lib/esql' cl : Command line warning D9002 : ignoring unknown option '-def:Inform +ix.def' cl : Command line warning D9002 : ignoring unknown option '-lc' cl : Command line warning D9024 : unrecognized source file type 'ESQLL +D='link', object file assumed LINK : fatal error LNK1181: cannot open input file 'ESQLLD='link.obj'

        It doesn't like the way the command line is set up. It's treating 'ESQLLD='link.obj' is an input file. This is quickly getting way beyond my pay grade. :) Now I remember why I wince every time I'm faced with installing a CPAN mdule that is not pure Perl. I'm not giving up, but I'm going to sleep on it and take another look tomorrow.

        "Its not how hard you work, its how much you get done."