From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.1 required=5.0 tests=AWL autolearn=disabled version=3.1.3 Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by yquem.inria.fr (Postfix) with ESMTP id F1892BC6C for ; Wed, 30 Jan 2008 13:38:53 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ao8CAIbrn0eWy9CN/2dsb2JhbACReZ4t X-IronPort-AV: E=Sophos;i="4.25,277,1199660400"; d="scan'208";a="6740952" Received: from riemann.rsise.anu.edu.au ([150.203.208.141]) by mail2-smtp-roc.national.inria.fr with ESMTP; 30 Jan 2008 13:38:52 +0100 Received: from localhost (localhost [127.0.0.1]) by riemann.rsise.anu.edu.au (Postfix) with ESMTP id 522086BA1C; Wed, 30 Jan 2008 23:38:49 +1100 (EST) X-Virus-Scanned: Debian amavisd-new at rsise.anu.edu.au Received: from riemann.rsise.anu.edu.au ([127.0.0.1]) by localhost (backend2.rsise.anu.edu.au [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CvOxQe99IUOi; Wed, 30 Jan 2008 23:37:06 +1100 (EST) Received: from pulp.rsise.anu.edu.au (pulp.rsise.anu.edu.au [150.203.208.49]) by riemann.rsise.anu.edu.au (Postfix) with ESMTP; Wed, 30 Jan 2008 23:37:05 +1100 (EST) Received: by pulp.rsise.anu.edu.au (Postfix, from userid 1560) id 9BFA3A0FFCC; Wed, 30 Jan 2008 23:37:05 +1100 (EST) Date: Wed, 30 Jan 2008 23:37:05 +1100 From: Pietro Abate To: caml-list@yquem.inria.fr, caml-list@inria.fr Subject: Re: [Caml-list] Re: [OSR] Ports-like package management system Message-ID: <20080130123705.GA21900@pulp.rsise.anu.edu.au> Mail-Followup-To: Pietro Abate , caml-list@yquem.inria.fr, caml-list@inria.fr References: <479F0664.2070706@exalead.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Operating-System: GNU/Linux X-Organization: Research School of Information Science and Engineering (Australian National University) User-Agent: Mutt/1.5.13 (2006-08-11) X-Spam: no; 0.00; berke:01 durak:01 berke:01 durak:01 foo:01 flags:01 dependencies:01 ocaml:01 makefile:01 byte:01 makefile:01 dependencies:01 tarballs:01 cpan:01 versioning:01 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 bar.org. You tell ocamlbuild by adding some tag such > > as > > > > : require(http://bar.org/repository/) > > > > And when you run ocamlbuild, it automatically checks out a copy of > > BAR, compiles and loads its myocamlbuild.ml 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(http://bar.org/repository/) 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. :) pietro -- ++ ++ "All great truths begin as blasphemies." -George Bernard Shaw ++ Please avoid sending me Word or PowerPoint attachments. See http://www.gnu.org/philosophy/no-word-attachments.html