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
[OSR] Ports-like package management system
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2008-01-30 (12:38)
From: Pietro Abate <Pietro.Abate@a...>
Subject: Re: [Caml-list] Re: [OSR] Ports-like package management system
Hi all

On Wed, Jan 30, 2008 at 09:06:29AM +0000, Sylvain Le Gall wrote:
> On 29-01-2008, Berke Durak <> wrote:
> > Assume you are writing a program FOO and want to use a package BAR
> > available from  You tell ocamlbuild by adding some tag such
> > as
> >
> >    <mytarget.native>: require(
> >
> > And when you run ocamlbuild, it automatically checks out a copy of
> > BAR, compiles and loads its module which adds the
> > required flags.  Of course it should be possible to specify a
> > particular revision...  And if BAR has itself dependencies, those too
> > would be checked out.

My two cents here:

I'd like to follow the lead from the idea above. I've the impression we
are not converging. I think if we want to succeed in this packaging
revolution we need to proceed is small steps. 

The basic and foremost important requirement we have is to try to
standardize the way ocaml libraries/applications are built. One of the
main problem package maintainers have is that everybody seems to write
their own build system and to follow different rules in their projects.
We have a plethora of building system, but in the end what we really
need is an interface to use them. Using a simple makefile for example
with make {opt,byte,install,clean} and to agree to what these rules do
would be a huge step forward. I'm not saying everybody must use make,
but that all projects should ship a makefile with these 4 rules. What is
then effectively used to build the package is not my problem (except for
building dependencies with exotic tools). In the future we might think
of proposing a standard building tool for everybody as ocamlbuild... but
I think this is premature now.

Ok, at this point we have the package, and we know how to build it. Next
step is to have one place to upload all tarballs. Godi has its own
repository, debian has its own repository on alioth. Here I'm thinking
something like CPAN, with a light weight registration and upload
mechanism based on pgp (Register, sign the package, upload the package).
The infrastructure to build this kind of service is not rocket science.
We could even imagine some king of validation process. This way all
developer could just work as they do, using whatever vcs they like,
adding just one simple step whan they want to release a new package into
the wild. Dependencies could be addressed at this level or at the next.
Anyway a complex project with many dependencies must find a way to
resolve these dependencies somehow: either in their makefile (see
require( as above) or just by assuming that all
dependencies are already satisfied and leave the burden to Package
maintainers (as it is at the moment).

>From this point on the sky. Debian, godi, fedora,... can just keep going
as they do with their system but using a single upstream repository with
standardized build system. People with other needs could use a system as
describe above with ocamlbuild. In the future we can even think to some
kind of convergence of different distributions to handle dependencies,
versioning, etc ...

In this way I tried to chance as small as possible of the current
infrastructure, still trying to give people the possibility of easily
recompiling their projects and all dependencies.

Maybe this view it too naive, but it might be a good way to start.


++ "All great truths begin as blasphemies." -George Bernard Shaw
++ Please avoid sending me Word or PowerPoint attachments.