[Monetdb-developers] MonetDB with Perl in windows

Steffen Goeldner sgoeldner at cpan.org
Wed May 16 11:30:21 CEST 2007

Romulo Goncalves wrote:

> Hello,
> My name is Romulo (INS-1) and I am trying to create a windows installer 
> with Perl. My colleagues told me that you are the Perl expert in MonetDB...
> To compile PERL I did:
> install perl in C:\perl_5\
> and unzip the sources in same directory as MonetDB SQL MONETDB5 ....
> (The same steps as we should do for php}
> In the MonetDB\conf\rules.msc I added:
> PERL_SRCDIR = $(TOPDIR)\..\..\perl-5.8.8
> PERL_INSTDIR = C:\perl-5
> # for these, also see configure.py
> Note: I am compiling for M5 and sql from cvs branch.
> For the compilation I set the flag HAVE_PERL=1.
> Everything compiled.
> Now I need to know which files I have to add to the installer.
> I was looking for a perl lib in cliens\NT\lib\ and It does not have such 
> lib.
> Could you help me a bit please?

First and foremost, let me admit that I did not find
time to implement the new protocol (8) yet - thus the
perl modules may not work for M5 (at least the pure
perl (MapiPP) client).

Anyway, this has nothing to do with the installation

In the spirit of Perl’s motto, "There’s More Than One Way
To Do It" (TMTOWTDI), there are many perl modules in

  - Mapi.pm is a simple pure perl client, maintained by CWI
    and works (AFAIK) with the current protocol

  - MapiLib (in Cimpl) is a wrapper around libMapi and you
    need SWIG to build it

  - The modules in MonetDB-CLI* are maintained by me:

    - MonetDB::CLI::MapiPP is pure perl
    - MonetDB::CLI::MapiLib is pure perl but uses MapiLib
    - MonetDB::CLI::MapiXS is a XS (that is: C) wrapper
      around libMapi
    - MonetDB::CLI is a simple loader for one of the
      MonetDB::CLI::* modules above

  - DBD::monetdb (in DBD) is a DBI client on top of MonetDB::CLI

In general, you install a perl module in the following way:

     perl Makefile.PL
     make test
     make install

In this way, perl saves you from all the drudgery.

Installing by hand is easy for pure perl modules (though
not recommended): simple copy all *.pm into your perl
lib directory. Example (MonetDB::CLI::MapiPP):

   MonetDB-CLI-MapiPP/MapiPP.pm -> /perl/site/lib/MonetDB/CLI/MapiPP.pm

(assuming /perl/site/lib is in the lib search path - try 'perl -V'
and look for @INC and PERL5LIB. Later, if you try to load
MonetDB::CLI::MapiPP, perl replaces '::' with '/', adds .pm and looks
in every path from @INC.)

However, installing an extension module (XS or SWIG) is difficult!
Perl builds additional files (e.g. .dll) which have to be installed
into different places. Best you call the standard 'make install' from
the installer or at least watch what 'make install' would do.


More information about the developers-list mailing list