From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id 0A7327F75C for ; Thu, 11 Sep 2014 09:54:00 +0200 (CEST) X-IronPort-AV: E=Sophos;i="5.04,504,1406584800"; d="scan'208";a="94084004" Received: from meleze.ens.fr (HELO [129.199.99.114]) ([129.199.99.114]) by mail2-relais-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES128-SHA; 11 Sep 2014 09:53:59 +0200 Message-ID: <54115517.9020209@inria.fr> Date: Thu, 11 Sep 2014 09:53:59 +0200 From: Francois Berenger User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0 MIME-Version: 1.0 To: caml-list@inria.fr References: <5410522E.3050207@inria.fr> <1410359012.3003.34.camel@thinkpad> <54106B6D.4040607@gmail.com> In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Caml-list] One build system to rule them all? On 09/10/2014 08:59 PM, Yotam Barnoy wrote: > Here's part of my motivation for starting this discussion now: I > recently experienced a hard-drive failure and had to switch to my backup > windows laptop. I was dismayed that opam is still not available for > Windows, and while wodi is available, it's not nearly as well developed, > and apparently requires many hacks for different packages. > > It seems to me that these hacks are some of the things that make > platform compatibility hard for opam. Each build system has different > requirements and methods of compilation, and making this approach > cross-platform compatible is difficult. Ideally, a build system will > abstract away the things that are not inter-platform compatible. This is > why I don't like people using makefiles. Makefiles are not available > natively on Windows, and they often contain other bits of shell code > that isn't available on all POSIX platforms, let alone on Windows. Not > to mention the fact that makefiles have a very tricky and sensitive syntax. > > I don't expect one build system to match everyone's requirements, but I > think if we get together, make a list of requirements, and try to get > over our personal biases, we can find something that works for most > people, and with some group effort, can work for even more people in > more use-cases. I'm not suggesting that we invent something new, but > that we take something good and make it better, as well as make an > effort to learn that tool and convert packages to use that tool. > > So here are some requirements I can think of (using some of the > suggestions that have been brought up): > - Easy to use, especially for small projects (large projects can afford > to put more time into their build systems) > - Abstract away platform considerations as much as possible. No > dependence on specific shells and POSIX utilities. > - Allows compilation of C files, which is quite common in ocaml packages. > - Scalable to many directories and files > - Uses ocamlfind to locate packages > - Handles camlp4 and ppx > - Parallel & incremental compilation > > About Jenga: I took a quick look at Jenga, and even though I'm impressed > by its capabilities, the amount of code needed to be written even for > simple projects is overwhelming. It's clearly a very flexible and > powerful tool, but I'd say it's too flexible for the mainstream. There's > always room for a build system that's integrated into ocaml itself (like > Shake), but I think declarative build systems tend to be easier to > comprehend for the average user. > > ocp-build actually looks very interesting. The manual (which is here: > http://github.com/OCamlPro/ocp-build/blob/master/docs/user-manual/user-manual.pdf?raw=true) > is incomplete, but contains a nice survey of the existing build tools, > and motivation for making ocp-build. Has anyone had experience with > ocp-build? Opam seems to be using it, but they also use a makefile > (why?) with a bunch of shell commands inside (which is precisely the > problem from my perspective). ocp-build is supposedly compatible with > Windows, too. Here is one thing I dislike in ocp-build: you have to explicitely list all the source files (and maybe same thing for Jenga). I am way too lazy to do that, especially since other tools are able to infer this list automatically (a library is just a list of modules, an executable has a single entry point, the main function in a single file). > Yotam > > > On Wed, Sep 10, 2014 at 11:17 AM, Leonardo Laguna Ruiz > wrote: > > My pick is ocamlbuild because: > > - It works the same way in all platforms that I work (linux,osx, > windows msvc port, cygwin) > - If I can compile ocaml, then I have ocamlbuild > - It does not require external libraries > > I have to say that I feel a little bit annoyed by the fact that some > other build systems or tools, do not work correctly in all the > platforms that I want to support. > > Leonardo > > > > On 9/10/2014 4:23 PM, Gerd Stolpmann wrote: > > Am Mittwoch, den 10.09.2014, 15:29 +0200 schrieb Francois Berenger: > > More seriously, concerning build systems, we clearly have > quite some > choice on the OCaml shelf: > - obuild > - ocamlbuild > - omake > - oasis (which in fact uses ocamlbuild, don't forget that) > > oasis is not a build system. It is a package description format that > describes how to invoke the build (and more). So far there is only > built-in knowledge for ocamlbuild, but this may change, and you can > already call any external tool, so you can wrap any build system you > want. The intention is here more to create a uniform API for > starting > the build, which may help packagers and other people who > routinely build > software. > > Gerd > > - jenga > - [...] > > My preffered is obuild > (https://github.com/ocaml-__obuild/obuild > ), > for the terseness, readability and centralization of its build > descriptions. I would love to see the user community of > obuild grow, > so that we can get rid of more bugs, be able to compile _any_ > OCaml project with it and implement even more cool features > (contributors are very welcome). > > I don't want a ring to rule them all, jut a ring that fits > _my_ finger. ;) > > -- > Regards, > Francois. > > > > -- > Caml-list mailing list. Subscription management and archives: > https://sympa.inria.fr/sympa/__arc/caml-list > > Beginner's list: http://groups.yahoo.com/group/__ocaml_beginners > > Bug reports: http://caml.inria.fr/bin/caml-__bugs > > > -- Regards, Francois.