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 mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id 3A8687F75C for ; Wed, 10 Sep 2014 21:57:09 +0200 (CEST) Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of sebastien.mondet@gmail.com) identity=pra; client-ip=74.125.82.177; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="sebastien.mondet@gmail.com"; x-sender="sebastien.mondet@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of sebastien.mondet@gmail.com designates 74.125.82.177 as permitted sender) identity=mailfrom; client-ip=74.125.82.177; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="sebastien.mondet@gmail.com"; x-sender="sebastien.mondet@gmail.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-we0-f177.google.com) identity=helo; client-ip=74.125.82.177; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="sebastien.mondet@gmail.com"; x-sender="postmaster@mail-we0-f177.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AkIBAOurEFRKfVKxm2dsb2JhbABfg2BbgnixITKEApAKgWuHSwGBCggWEAEBAQEBBgsLCRQqhAMBAQECAQESBgsdARsSDAMBCwYFCw0NHQICIgERAQUBChIGExIQiAsBAwkIDZ1Ka4swgXKDEIh6ChknAwpmhXIBEQEFDo5nVAuCeYFTBYULBY06gy+HA4FfkWgYKYJ5gjUhL4EGgUkBAQE X-IPAS-Result: AkIBAOurEFRKfVKxm2dsb2JhbABfg2BbgnixITKEApAKgWuHSwGBCggWEAEBAQEBBgsLCRQqhAMBAQECAQESBgsdARsSDAMBCwYFCw0NHQICIgERAQUBChIGExIQiAsBAwkIDZ1Ka4swgXKDEIh6ChknAwpmhXIBEQEFDo5nVAuCeYFTBYULBY06gy+HA4FfkWgYKYJ5gjUhL4EGgUkBAQE X-IronPort-AV: E=Sophos;i="5.04,501,1406584800"; d="scan'208";a="78486655" Received: from mail-we0-f177.google.com ([74.125.82.177]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/RC4-SHA; 10 Sep 2014 21:57:08 +0200 Received: by mail-we0-f177.google.com with SMTP id u57so5395859wes.22 for ; Wed, 10 Sep 2014 12:57:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type; bh=pFkwQQ8abLDUkFB1roZLsXpCAbHO9sJhX3qdgNTLE7s=; b=Tz9ZX+KDmNzH41l0pVaY/pEBGCJXZrBfFFOoCTChdBXHymQWE85dnPmfc7F/H2VCUZ GctYGmvlHpd+eE/AL/yUrczmExlBsp/cjcxEfxK/UFO+94huU599mZn5b0jiihEqk9Cc JQafr3KJcnNk6BcVFoi4o+oLSCkdp0iqWgzTQlqNkl2NEMn6s3uhiZQt5YBtHX1GwRFZ YzUcS6/eNHaGTPOKNK/1mVAxaIx6zs8N+TzxPqw4nHI8+yck0NFmJLWeqiKh9WutN62F zLnll1SmCFvLPc5wXi5dnNHds2J8q9VJfly9ZhLeRuOSO0zQYiZrtj+7xuKMGXjzl4+P VRqg== X-Received: by 10.194.5.162 with SMTP id t2mr21628795wjt.97.1410379027976; Wed, 10 Sep 2014 12:57:07 -0700 (PDT) MIME-Version: 1.0 Received: by 10.216.203.6 with HTTP; Wed, 10 Sep 2014 12:56:47 -0700 (PDT) In-Reply-To: References: <5410522E.3050207@inria.fr> <1410359012.3003.34.camel@thinkpad> <54106B6D.4040607@gmail.com> From: Sebastien Mondet Date: Wed, 10 Sep 2014 15:56:47 -0400 Message-ID: To: Ocaml Mailing List Content-Type: multipart/alternative; boundary=047d7b5d30bef63a2e0502bb7495 Subject: Re: [Caml-list] One build system to rule them all? --047d7b5d30bef63a2e0502bb7495 Content-Type: text/plain; charset=UTF-8 On Wed, Sep 10, 2014 at 3:16 PM, Peter Zotov wrote: > On 2014-09-10 22:59, Yotam Barnoy wrote: > >> 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 >> [2]) 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. >> > > Every single time I had to use ocp-build, it broke in an odd and hard to > fix way. It was so bad that eventually I just ported the ocp-build-using > projects (ocp-index and its dependencies) to OASIS. Most worryingly it has > some strange requirement to ship bytecode, which ties it to a released > OCaml > version; no other buildsystem needs that. > > Yes ocp-build is broken for many corner cases, I've been trying to push it to its maximum; look at that ugly shell script: https://github.com/hammerlab/ketrew/blob/master/please.sh that even has to create a yojson library out of the one in ~/.opam to please ocp-build's assumptions. Also, like every build system based on flat files (oasis, obuild), it is fundamentally broken. You'll always need a programming language to extended your build (adding targets, like build documentation/websites, special tests, .merlin files, code generation...). - omake did that with yet another obscure and weird language (I guess the goal was to "look" like `make` but with even more broken string escaping). - ocamlbuild and jenga picked the right language. - ocamlbuild's API is very limited, there is not even a clear way to replace all the crazy small files required everywhere (_tags, mllib, ...) with function calls within a myocamlbuild.ml plugin. It is also painfully slow. - Jenga is not for "normal" projects. It takes half-an-hour to build jenga itself, and it's dependency tree is not very portable. The API is very convoluted even for simple projects. Look at https://github.com/samoht/assemblage/ certainly going to in the right direction. > -- > Peter Zotov > > > -- > 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 > --047d7b5d30bef63a2e0502bb7495 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


On Wed, Sep 10, 2014 at 3:16 PM, Peter Zotov <whitequark@white= quark.org> wrote:
On 2014-09-10 22:59, Yotam Barnoy wrote:
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=3Dtrue
[2]) is incomplete, but contains a nice survey of the existing build<= br> 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.

Every single time I had to use ocp-build, it broke in an odd and hard to
fix way. It was so bad that eventually I just ported the ocp-build-using
projects (ocp-index and its dependencies) to OASIS. Most worryingly it has<= br> some strange requirement to ship bytecode, which ties it to a released OCam= l
version; no other buildsystem needs that.


Yes ocp-build is broken for many co= rner cases, I've been trying to push=20 it to its maximum; look at that ugly shell script:=20 https://github.com/hammerlab/ketrew/blob/master/please.sh = that even has=20 to create a yojson library out of the one in ~/.opam to please ocp-build= 9;s assumptions.

Also, like every build system based on f= lat files (oasis, obuild), it is fundamentally broken. You'll always ne= ed a programming language to extended your build (adding targets, like buil= d documentation/websites, special tests, .merlin files, code generation...)= .

- omake did that with yet another obscure an= d weird language (I guess the goal was to "look" like `make` but = with even more broken string escaping).
- ocamlbuild and jeng= a picked the right language.
=C2=A0=C2=A0=C2=A0 - ocamlbuild&= #39;s API is very limited, there is not even a clear way to replace all the= crazy small files required everywhere (_tags, mllib, ...) with function ca= lls within a myocamlbu= ild.ml plugin. It is also painfully slow.
=C2=A0=C2=A0=C2= =A0 - Jenga is not for "normal" projects. It takes half-an-hour t= o build jenga itself, and it's dependency tree is not very portable. Th= e API is very convoluted even for simple projects.

Look a= t https://github.com/samo= ht/assemblage/ certainly going to in the right direction.




=C2=A0
--
Peter Zotov

--047d7b5d30bef63a2e0502bb7495--