[mapguide-internals] Re: OEM libraries was: 2.1.0 Final Windows Installer

Gabriele Monfardini gabrimonfa at gmail.com
Fri Nov 27 07:52:20 EST 2009


> SOURCE COPIES
> As with most other projects I have worked with, the used OSS libraries are
> simply copied to the repository and build from there.
> Although this prohibites the advantages of the OSS that somebody else might
> have fixed a bug in the meanwhile,
> integration and debugging are largely simplified, thats why its a popular
> approach.

I'm not denying that "include-all" approach can be used.

Moreover, we're not speaking about a project that "uses OSS libraries".
MapguideOS IS an OSS project.

  svn co http://svn.osgeo.org/mapguide/branches/2.1/MgDev/ MgDev
  => disk space 1.7GB (not considering FDO that is a separate project).

  of which
  MgDev/Oem            1,4G
  MgDev/Doc              77M
  MgDev/BuildTools     7.3M


Thus mapguideOS code is about 220M of which 150M in MgDev/UnitTest.
Thus it is around 70M.

Who is interested in mapguideOS has probably already installed (and
maybe compiled from source!) a lot of these libraries.
They are used everywhere in OSS GIS projects.

Let's have a look on how a somewhat similar project, mapserver, deal
with similar OSS libraries.

  svn co http://svn.osgeo.org/mapserver/branches/branch-5-4/mapserver/ mapserver
  => disk space 19MB

./configure --help

  --with-PACKAGE[=ARG]      use PACKAGE [ARG usually point to the PACKAGE home]

examples:

  --with-geos[=PATH]      Include GEOS support (PATH is path to
geos-config)
  --with-ogr[=PATH]       Include OGR support (PATH is path to
gdal-config).
  --with-gdal[=PATH]      Include GDAL support (PATH is path to gdal-config)
  --with-postgis[=ARG]    Include PostGIS Support (ARG=yes/path to
pg_config)
  --with-mygis[=ARG]      Include MyGIS Support (ARG=yes/path to
mysql_config)
  --with-oraclespatial[=ARG] Include OracleSpatial Support
(ARG=yes/path to Oracle home)

Configure checks if external libraries are available and use them, as
instructed by the arguments.

And how to build it on windows?

>From http://svn.osgeo.org/mapserver/branches/branch-5-4/mapserver/README.WIN32

--------------------------------------------------------------------------
For the developers using MSVC++, a NMAKE makefile (Makefile.vc + nmake.opt)
to build the MapServer library and executable programs is included with
the distribution.

To build the package using the Makefile.vc and NMAKE:

 - Edit nmake.opt to select (or deselect) optional components of
   the MapServer.  Please read the notes below about each component
   before you move ahead with the compilation.
-------------------------------------------------------------------------

I admit that compiling on Windows is not so easy for an unexperienced user.
But how many unexperienced users on Windows will build the code from
the source instead of using a binary, or even a nightly build?


> VERSION CHECKING
> to configure the build system to use a library from somewhere else is not so easy.

IMHO, it is not needed.
As a first step let's have a symlink that links MgDev/Oem/php to
<somewhereelse>/php

> I think this would have to start with adding code to the DLL loader
> so it can be configured with permissible library versions.
> This seems to be a paramount requirement for such endeavor.

I think we can also stick with current library versions.
The important is to decouple the build process and make it a bit more
configurable.
PHP 5.2.5 source code is available for download at php.net

> Already some svn external links are used for some other sub projects, so this is one way to go.

I fully agree. It's a good first step in the right direction.

> First of all I would strongly suggest to first get the continous integration (CI) system
> going before changing the build environment.
> A previous attempt in this already exposed some of the issues which stem
> from little incompatibilities between project structures.
> As MapGuide is multi-platform development changing the build that it works
> everywhere is hard.
> Without a working CI system such a task is painful and inefficient.

I agree also on this.
It would be useful, after setting up properly CI on Windows build
machines, also try to set this up for GNU/Linux.
The difficulties solved while setting it up would ease the build and
you'll have also binaries to distribute.

> CLASSIFICATION ATTEMPT
Thank you very much.

Regards,

Gabriele


More information about the mapguide-internals mailing list