[Monetdb-developers] MonetDB with Perl in windows

Steffen Goeldner sgoeldner at cpan.org
Wed May 16 16:02:37 CEST 2007


Romulo Goncalves wrote:

> I am using visual studio 2003 with service pack 1.
> 
> To compile I did:
> nmake NEED_MX=1 HAVE_JAVA=1 HAVE_PYTHON=1 HAVE_PYTHON_SWIG=1 HAVE_PHP=1 
> HAVE_PERL=1 HAVE_PERL_DEVEL=1 HAVE_PERL_SWIG=1 HAVE_PEAR=1 NO_MONETDB4=1 
> HAVE_MONETDB5=1
> 
> And I got the following error:
>         if exist libMonetODBC.dll.manifest mt -nologo -manifest 
> libMonetODBC.dll.manifest -outputresource:libMonetODBC.dll;2
>         if not exist "samples" mkdir "samples"
>         copy ".\..\..\..\src\odbc\samples\Makefile.msc" "samples\Makefile"
>         1 file(s) copied.
>         cd "samples" && nmake /nologo 
> "prefix=C:\cygwin\home\goncalve\MonetDB\MonetDB_SQL\clients\NT" all
>         if not exist "python" mkdir "python"
>         copy ".\..\..\..\src\odbc\python\Makefile.msc" "python\Makefile"
>         1 file(s) copied.
>         cd "python" && nmake /nologo 
> "prefix=C:\cygwin\home\goncalve\MonetDB\MonetDB_SQL\clients\NT" all
>         if not exist "perl" mkdir "perl"
>         copy ".\..\..\src\perl\Makefile.msc" "perl\Makefile"
>         1 file(s) copied.
>         cd "perl" && nmake /nologo 
> "prefix=C:\cygwin\home\goncalve\MonetDB\MonetDB_SQL\clients\NT" all
> NMAKE : warning U4004: too many rules for target 'HAVE_PERL_DEVEL-dir'
> NMAKE : warning U4004: too many rules for target 'HAVE_PERL_DEVEL-dir'
> NMAKE : warning U4004: too many rules for target 'HAVE_PERL_DEVEL-dir'
>         if not exist "MonetDB-CLI-MapiPP" mkdir "MonetDB-CLI-MapiPP"
> NMAKE : warning U4004: too many rules for target 'HAVE_PERL_DEVEL-Makefile'
> NMAKE : warning U4004: too many rules for target 'HAVE_PERL_DEVEL-Makefile'
> NMAKE : warning U4004: too many rules for target 'HAVE_PERL_DEVEL-Makefile'
>         copy ".\..\..\..\src\perl\MonetDB-CLI-MapiPP\Makefile.msc" 
> "MonetDB-CLI-MapiPP\Makefile"
>         1 file(s) copied.
> NMAKE : warning U4004: too many rules for target 'HAVE_PERL_DEVEL-all'
> NMAKE : warning U4004: too many rules for target 'HAVE_PERL_DEVEL-all'
> NMAKE : warning U4004: too many rules for target 'HAVE_PERL_DEVEL-all'
>         cd "MonetDB-CLI-MapiPP" && nmake /nologo 
> "prefix=C:\cygwin\home\goncalve\MonetDB\MonetDB_SQL\clients\NT" all
>         if not exist "Cimpl" mkdir "Cimpl"
>         copy ".\..\..\..\src\perl\Cimpl\Makefile.msc" "Cimpl\Makefile"
>         1 file(s) copied.
>         cd "Cimpl" && nmake /nologo 
> "prefix=C:\cygwin\home\goncalve\MonetDB\MonetDB_SQL\clients\NT" all
>         cl -GF -W3 -wd4273 -wd4102 -MD -nologo -Zi -Ox -I. -I.\..\..\.. 
> "-IC:\Pthreads\include" -I.\..\..\..\..\src\perl\Cimp
>  "-I..\..\mapilib" 
> -I"C:\cygwin\home\goncalve\MonetDB\MonetDB_SQL\MonetDB\NT\include" 
> -I"C:\cygwin\home\goncalve\MonetDB\Mone
> DB_SQL\MonetDB\NT\include\common" 
> -I"C:\cygwin\home\goncalve\MonetDB\MonetDB_SQL\MonetDB\NT\include\gdk" 
> -LD -FeMapiLib.dll
> /link ..\..\mapilib\libMapi.lib
> cl : Command line error D2003 : missing source filename
> NMAKE : fatal error U1077: 'cl' : return code '0x2'
> Stop.
> NMAKE : fatal error U1077: 'cd' : return code '0x2'
> Stop.
> NMAKE : fatal error U1077: 'cd' : return code '0x2'
> Stop.
> NMAKE : fatal error U1077: 'cd' : return code '0x2'
> Stop.
> NMAKE : fatal error U1077: '"E:\Visual Studio .NET 
> 2003\VC7\BIN\nmake.exe"' : return code '0x2'
> Stop.
> 
> C:\cygwin\home\goncalve\MonetDB\MonetDB_SQL\clients\NT>cd
> C:\cygwin\home\goncalve\MonetDB\MonetDB_SQL\clients\NT
> C:\cygwin\home\goncalve\MonetDB\MonetDB_SQL\clients\NT>
> 
> Did I forget something or it is an error from your part?

Aah, I think I understand. What I described:

     perl Makefile.PL
     nmake
     nmake test
     nmake install

is completely unrelated to the MonetDB build. You can try this e.g. in
clients/src/perl/MonetDB-CLI-MapiPP - I'm sure it works. 'perl Makefile.PL'
will generate a 'Makefile', which is used by nmake. But again, this is all
in perl space and has nothing to do with the MonetDB build.

Now to the MonetDB build. It uses a similar approach as 'perl Makefile.PL'.
Here, 'python autogen.py' generates 'Makefile.msc', which is used by nmake.
However, I never tried this to build the perl modules. AFAICS, it work on
UNIX (somehow) for Mapi and MapiLib, but (IMHO) it's a difficult and risky
way. I think it would be easier to teach autogen how to generate a Makefile
which calls 'perl Makefile.PL && make'. Unfortunately, I'm not familar with
autogen - but hey, it's a python script; who if not the kind people at CWI
can solve this?
Two small problems come into my mind:

  1. the generated Makefiles may clash on some platforms, if no file
     extension is used.
  2. For Cimpl, SWIG needs to be in the path and a rule for .i files known


Regards,
Steffen




More information about the developers-list mailing list