Compiling Greenstone

Greenstone Software, New Zealand Digital Library Project

These notes were written for gsdl-2.39, but probably apply to other versions as well. You might find a more up-to-date version on-line at http://www.greenstone.org/docs/compiling.html. Greenstone version 2.39 was released on the 10th March, 2003.

Table of contents:

Platforms

We have tested Greenstone on the following platforms: If you would like to add other platforms to this list, or inform us of any portability changes required, send mail to [email protected].

Unix Compilation notes

(we include cygwin here).

The "standard" commands of
$ ./configure
$ make all
$ make install
should (hopefully) be all that is required. Currently, Greenstone does not honour the `--prefix' flag, but the directories are self-contained, so should be able to be moved after installation.

You will probably need to use GNU make.

Version 2.38 of Greenstone compiles with gcc version 3.0 (as well as earlier versions of gcc). Earlier versions of Greenstone will require earlier versions of the compiler -- we have successfully used versions egcs-2.91.66 and gcc-2.95.

The Greenstone Librarian Interface (GLI) code is written in Java, and compiling it requires a suitable version of the Java Software Development Kit (version 1.4.0 or newer). To compile this source code, run makegli.sh from the gsdl/gli directory.


Note! - version 2.41 of Greenstone (released in December 2003) requires slight modification to compile cleanly with gcc version 3.x. The "Isis" package in greenstone's "packages" directory requires 3 files to be changed. You can download the 3 files from:
http://www.greenstone.org/tmp/isis-gdl-fixes.zip
which contains:
  isis-gdl/CRC32.cpp
  isis-gdl/IsisTypes.h
  isis-gdl/Master.cpp
If you copy these over the 3 files with the same name in gsdl/packages/isis-gdl then it should all compile ok with gcc 3.

The GDBM library and headers are needed - Linux distributions typically come with the library, but may or may not come standard with the header file. Darwin does not come with either. If it is not installed in /usr or /usr/local then you will have to specify where it is by using the configure flag --with-gdbm=/path/to/gdbm/dir.

The GDBM library can be downloaded from ftp://ftp.gnu.org/pub/gnu/gdbm/gdbm-1.8.3.tar.gz or a closer mirror.

The following configure flags add extra functionality to Greenstone:
--enable-corba Creates a CORBA server as well as the .cgi server. This is currently still developmental, and compilation hasn't been tested on many platforms. A java CORBA client is available through anonymous CVS (password anonymous) -
export CVSROOT=:pserver:[email protected]:2402/usr/local/global-cvs/gsdl-src
cvs login
cvs export -r HEAD java-client
--with-micodir Use an existing MICO compiler for the CORBA server instead of compiling our included version.
--enable-z3950 Enable rudimentary Z39.50 client support in the .cgi server.

Platform-Specific Issues

Cygwin

Greenstone does not currently compile under cygwin "out-of-the-box". We had to manually edit some of the Makefiles. More specifically, the packages/mg subtree needed "-ansi" in the CFLAGS, while some parts of the src/mgpp subtree fails with "-ansi", as their version of the standard header files don't include any (eg) POSIX or XPG/OPEN functions that aren't ANSI if -ansi is supplied, even if flags like "_XOPEN_SOURCE" are defined.

Also some of the third-party packages required some manual attention.

Make sure you have the gdbm package installed.

Darwin/Mac OS X

All compilation is currently done through a terminal.

Note that the default filesystem is case-insensitive.

Mac OS X uses a compiler based on gcc version 3, so read the above section on Unix Compilation Notes for changes required to the source code for greenstone version 2.41.

darwin doesn't come with gdbm, so:

  1. Download the gdbm source code from ftp.gnu.org into your home folder, as mentioned previously.
  2. Unpack it using the command "tar -zxf gdbm-1.8.3.tar.gz" (without quotes)
  3. If you used the older gdbm-1.8.0 (instead of 1.8.3), you will need to update some files that can't figure out what the system type is. Eg: "cp /usr/libexec/config.sub /usr/libexec/config.guess gdbm-1.8.3"
  4. Make (and install) the library:
    cd gdbm-1.8.3 && make all install
    (When we did this, we did not have permission to install in a system directory)
If the "make install" command fails to install libgdbm into the default "/usr/local" folder due to permissions:
  1. Remove the dynamic libraries, so that the Greenstone files are only linked using the "static" gdbm libraries using the following command (without the quotes):
    "rm ~/gdbm-1.8.3/.libs/*.dylib"
  2. when you configure Greenstone you should add --with-gdbm=/Users/<username>/gdbm-1.8.3 (or wherever you installed it to) to the command. Note that this means that the compile option in the CD-ROM distribution Install script will fail, since it will only look in the default locations (/lib, /usr/lib/ and /usr/local/lib)
Also see the OSX Install Notes page.

Issues

GNU/Linux

As mentioned above, version 2.38 of Greenstone compiles with gcc3. If you are using an earlier version of Greenstone, you will need to make sure you are using an older version of gcc, and not gcc2.96 or gcc3. Red Hat >= 7.0 comes with the newer versions of gcc by default.

You will need the gdbm.h header file. If you don't already have it, it is in the libgdbmg1-dev (debian) or gdbm-devel-1.8.0 (rpm) package.

We have had a couple of reports from SuSE users that one of our third-party packages (wget) fails to configure as it uses GNU msgfmt for translation catalogues - this is resolved by installing the gettext package. This seems to be already installed on other distributions.

Alpha architectures:
Well, the good news is that it compiles OK (for versions of gsdl >= 2.37 - earlier versions need updated config.sub files), the bad news is that it fails to build collections. One possibility is that mg (the backend code) doesn't like the 64-bit ints.

FreeBSD

Everything should go smoothly... you might need to install lib gdbm if it is not already installed.

Solaris

We no longer have solaris machines running in our department. However, Greenstone built and ran the last time I could log on (about version 2.33?), and we have reports of people getting current versions working, with minor changes.

Greenstone includes a perl module from CPAN, XML::Parser (+Expat), which has caused problems on some machines during the make. This is because perl uses it's own config file to get compiler settings, etc. We think we have worked around this. If you get compilation problems, you can do one of the following:

  1. After doing the toplevel ./configure, edit gsdl/packages/cpan/XML-Parser-2.27/Makefile and XML-Parser-2.27/Expat and change CC = cc to CC = gcc. (Assuming you are using gcc). Or:
  2. You could install the perl XML::Parser module manually, and comment out or remove any mention of the cpan/XML-Parser-2.27 directory from gsdl/packages/Makefile(.in).

You might need to manually install the gdbm library, and you probably need to use GNU's make. try setting the MAKE variable when you run the configure script, such as:
$ MAKE=gmake ./configure [options]
or

$ ./configure [options]
...
$ gmake all

Windows (Visual C++)

We have tested with versions 4.2 and 6.0. Our distribution includes a cut-down port of the gdbm library for windows.

We compile Greenstone from the Windows command prompt. You must manually unzip files in the gsdl\packages\crypt and gsdl\packages\gdbm directories. After setting up the VC++ environment, simply type nmake /f win32.mak and everything should compile OK. For us, setting up the environment requires running the vcvars32.bat script, found in the VC++ installation directory (for us this is in C:\Program Files\Microsoft Visual Studio\VC98\bin.)

The third-party packages (pdftohtml, wvWare, rtftohtml, xlhtml, etc) were compiled using cygwin.

The Greenstone Librarian Interface (GLI) code is written in Java, and compiling it requires a suitable version of the Java Software Development Kit (version 1.4.0 or newer). To compile this source code, run makegli.bat from the gsdl\gli directory.

Contact Us

If Greenstone doesn't work for you, please let us know! If you add information such as operating system and software tool versions to your request then it will help us to fix the problem.

If you have any updates or corrections to this documentation, then don't hesitate to send them to us.

Send mail to us at: greenstone@cs.waikato.ac.nz.

We also have 2 mailing lists, one aimed more at users and the other aimed more for developmental issues. You can subscribe by going to https://list.scms.waikato.ac.nz/mailman/listinfo/greenstone-users and/or https://list.scms.waikato.ac.nz/mailman/listinfo/greenstone-devel. Archives are available (using Greenstone of course!) at http://www.nzdl.org/cgi-bin/library?c=gsarch&p=about.

Last modified 20 April 2004 by John McPherson