Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
[Caml-list] GODI news
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2004-04-28 (12:38)
From: Gerd Stolpmann <info@g...>
Subject: [Caml-list] GODI news
Hi list,

here is my report about the progress of the GODI system. A lot of things
have happened since the last "GODI news", so this is quite long.

We have two release lines, one is the "stable" release, in the sense
that the GODI core does not change during its lifetime, the other is the
"development" release, where exactly this happens. Of course, there is
also development in the stable release, as lots of new packages have
been added.

*** The stable release ***

You get the stable release when you download and install GODI using the
instructions as explained at, and
as detailed in the README file in the bootstrap tarball. It is known to
run on Linux, Solaris, and FreeBSD.

The stable release includes 24 libraries beyond those coming with the
core O'Caml distribution. It has 50 packages in total.

Recent additions include:

- expat: bindings for the popular XML parser
- getopt: parsing of command-line arguments
- zip: Compression
- cduce: XML transformation language
- ocamlsdl: bindings for SDL
- ocamlodbc: bindings for ODBC
- headache: manage headers of source code files
- godiva: the GODI Verpacken Assistant (read more below)

Most packaging was done by Alain Frisch, thank you very much.

The stable release already includes godi_console, the frontend
application to update, install, and delete packages. It is menu-based
and quite simple to use. One of the key features is that it can download
updates from the GODI server, so when new packages or upgrades are
available, it is very easy to get them installed. Btw, this is not done
using cvs or other configuration management, but by plain http. I
explain the reasons below.

*** The development release ***

This is also some kind of release, although only announced in godi-list.
See below how to install it. The current version should work on Linux,
Solaris, FreeBSD, NetBSD, MacOSX, and Cygwin. Development focuses on
getting it running on further platforms.

The changes illustrate this:

- One of the things where the platforms differ is the handling
  of shared libraries. I do not mean creating them, but rather
  using them. The GODI framework was extended to allow the integration
  of non-ELF based systems.

- The bootstrap script is more intelligent regarding finding
  executables in PATH. This is a bit tricky, as for some OS one
  should _not_ look certain utilities up by PATH to get the right
  versions, but on the other hand, extending PATH is the usual
  way of pointing to non-standard locations. Finding the right way
  was explored by lots of experiments.

- Especially for Cygwin, new ways of installing packages had to
  be explored. The problem is that Windows locks running executables,
  such that you cannot replace them. A workaround was found.

- Of course, there are also many smaller fixes.

I want to thank Eugene Kotlyarov for help on the Cygwin port, and
Matthew Backes for giving me access to his Macintosh.

Of course, one can only port GODI to a certain platform when there is a
development machine for it. If you would like to get GODI running on
your platform, and you have such a machine, you are more than welcome.

How to get the dev release:

- Download this bootstrap archive:

- After unpacking, run ./bootstrap --prefix XXX as usual.

- IMPORTANT: Now change in <prefix>/etc/godi.conf:

  Otherwise you get the stable GODI version.

- Finally, run ./boostrap_stage2

When everything works well, the dev release becomes the new stable
release. I expect that this happens in one or two weeks.

*** GODIVA ***

GODI, and implicitly the BSD port system on which it bases, was
criticized as being too complicated for packagers. (Well, I would say it
is quite simple, but this is the impression some people have.) Owen
Gunden and William Lovas developed a tool for GODI that simplifies
packaging, namely GODIVA:

You only need to write a small specfile like

Package: godi-foolib
Version: 2.0
Revision: 0
Depends: godi-ocaml (>= 3.06)
Build-Depends: conf-foo, godi-findlib (>= 0.8.1)
Maintainer: Owen Gunden <>
Options: configure, opt
Description: O'Caml bindings for the foo library.
Foolib provides bindings for the foo library using the leetness
of labls!  It's a lot of fun.

(taken from the web site). However, GODIVA requires that the source code
follows a policy (e.g. that "make all" creates the bytecode version of
the software, and "make opt" creates the native code version), so the
downside is less flexibility. I think it is a good starting point to get
familiar with the GODI packaging system.

*** The GODI server ***

GODI also has a server infrastructure:

- is web space I bought from a
  commercial provider. Nowadays, web space is cheap, fortunately. It is 
  http only, no scripts, no databases. Includes several gigabytes of
  transfer volume per month.

- is the small box left to my desk. It is
  connected with a DSL line, so bandwidth is very limited, but
  I can install what I want. It is currently running Debian-3.0.

For obvious reasons, the "main" thing must happen on, as this server can cope with high download
volume. For development, is the better choice.

There are currently the following services:

- is the homepage
- is the directory with
  the "build instructions", i.e. the small tarballs that explain
  GODI how to install software
- contains copies
  of the source tarballs. There is a mirror of this directory
  at, thanks
  Henri Dubois-Ferriere.
- is the home of the
  mailing lists godi-list and godi-commits
- is the home of the Subversion
- is the home of the bug tracker
- is the GODI administration
  tool for developers. This is a web application allowing the
  developers to release their packages without my help. The
  packages must already be checked in to the repository. The
  source tarballs are checked for availability. Finally, the
  tool manages that the right tarballs are uploaded to
  the godi-build and godi-backup directories.

Recently, the tracker and godi_admin were set up.

When a GODI user tries to update the installation, GODI looks into and checks whether there are
new versions of the packages. If so, these are downloaded. These are the
so-called build instructions, mainly containing a Makefile explaining
how to do the rest. The software as such is downloaded from the original
web server, if possible, and from, or the mirror as fallback

Only HTTP is involved. For the users, it has the advantage that
firewalls do not block the downloads. For GODI, the advantage is that
cheap web space can be used to serve the requests.

*** LINKS ***

The most important links again:

- explains how to install the
  stable version of GODI

- is the GODI mailing
  list. Archives can be found at

Gerd Stolpmann * Viktoriastr. 45 * 64293 Darmstadt * Germany

To unsubscribe, mail Archives:
Bug reports: FAQ:
Beginner's list: