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 405267FACD for ; Fri, 19 Sep 2014 17:03:27 +0200 (CEST) Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of yminsky@janestreet.com) identity=pra; client-ip=38.105.200.229; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="yminsky@janestreet.com"; x-sender="yminsky@janestreet.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of yminsky@janestreet.com designates 38.105.200.229 as permitted sender) identity=mailfrom; client-ip=38.105.200.229; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="yminsky@janestreet.com"; x-sender="yminsky@janestreet.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@mxout3.mail.janestreet.com) identity=helo; client-ip=38.105.200.229; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="yminsky@janestreet.com"; x-sender="postmaster@mxout3.mail.janestreet.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Am8CAGpFHFQmacjlnGdsb2JhbABgg2BXBIJ9tTWRQYdNAXoIFgERAQEBAQEGFgk+hAQBAQQSER0BASoCCAMBDwsLDQICCR0CAiEBEgEFAQoSBhMSAgcHiAgDEQMKoFRtijh4hQIBBYltAwqHLgERBgqBIohugzqBejMHgniBU4RgMgIDkHqENkGCEIFhhWuHQIRQGCmFLFCCSgEBAQ X-IPAS-Result: Am8CAGpFHFQmacjlnGdsb2JhbABgg2BXBIJ9tTWRQYdNAXoIFgERAQEBAQEGFgk+hAQBAQQSER0BASoCCAMBDwsLDQICCR0CAiEBEgEFAQoSBhMSAgcHiAgDEQMKoFRtijh4hQIBBYltAwqHLgERBgqBIohugzqBejMHgniBU4RgMgIDkHqENkGCEIFhhWuHQIRQGCmFLFCCSgEBAQ X-IronPort-AV: E=Sophos;i="5.04,555,1406584800"; d="scan'208";a="96670559" Received: from mxout3.mail.janestreet.com ([38.105.200.229]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-SHA; 19 Sep 2014 17:03:25 +0200 Received: from tot-oib-smtp1 ([172.27.22.15] helo=tot-smtp) by mxout3.mail.janestreet.com with esmtps (UNKNOWN:DHE-RSA-AES256-GCM-SHA384:256) (Exim 4.82) (envelope-from ) id 1XUziW-0006J2-9N for caml-list@inria.fr; Fri, 19 Sep 2014 11:03:24 -0400 Received: from [172.27.229.230] (helo=mxgoog1.mail.janestreet.com) by tot-smtp with esmtps (UNKNOWN:AES256-GCM-SHA384:256) (Exim 4.72) (envelope-from ) id 1XUziW-0007Jy-6V for caml-list@inria.fr; Fri, 19 Sep 2014 11:03:24 -0400 Received: from mail-lb0-f178.google.com ([209.85.217.178]) by mxgoog1.mail.janestreet.com with esmtps (TLSv1:RC4-SHA:128) (Exim 4.72) (envelope-from ) id 1XUziV-0007SP-SC for caml-list@inria.fr; Fri, 19 Sep 2014 11:03:24 -0400 Received: by mail-lb0-f178.google.com with SMTP id z12so765112lbi.37 for ; Fri, 19 Sep 2014 08:03:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=janestreet.com; s=google; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=ysl07kzWQZBhmEZLwbDtFGQLOPJhCRTeVCLtDaGtixA=; b=OgUQwyFgA/evt7DZl9jk8/01epz2LdtgLFS+RxduxAyBshbd0UyUQ8YUEKoHeglQ58 QIsDE9OhaJHyvhxx57CtXfsadCjIIszbRieyI3VM8ymDv/wCyxvHtKvQXNohKERK5xcO iL7qhBE2Eq58ooSN2nYBbQPUtFgTgDphDWgGQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=ysl07kzWQZBhmEZLwbDtFGQLOPJhCRTeVCLtDaGtixA=; b=Ko+FLaeZxUx4D2/LG7Njr16Yc8PJPnkG1J/qVTJjZ9rJIC1u08VHhwMHoqX2O5Yqni mMxW8ZE0ClHpGgl6BrwGE4QZOQcM5NP6V3xnLowJo3NOcen9C6Dk5+gbmEo3malYwYiJ UXljCBd2uNX/hfXSmUg7Vxwh/pHKI5JBVtA/nokFWf6wofqQ806Vz0EBhQEHVoFkEj9T 9Aiu5xJAOZlpSRUI6O7NvWTQ+DcPXOI/tM3SlyXZhWTx69lcl5GMGkJL2sBv3gtv3YgA BhVc8RHWWc11JMHb/AoNXttwr0IQv+1TdrwZvpmWk9zs84HNOeMoBeFrAfBuz8lcVgIv BkKg== X-Gm-Message-State: ALoCoQkLnWKCZE3AWAHOCMQFRk2O0SUirFckHiBLMLGdre5VUeAtuY1QHtYrqeVJQG2jF9MJc296swAu/kIG6D8uBGh+hWrAwMosTGpRMkNaUHTYfc7p76gSwBZWkmlHmi1twmg5IHtC X-Received: by 10.112.143.36 with SMTP id sb4mr7248181lbb.8.1411139002702; Fri, 19 Sep 2014 08:03:22 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.112.143.36 with SMTP id sb4mr7248172lbb.8.1411139002599; Fri, 19 Sep 2014 08:03:22 -0700 (PDT) Received: by 10.112.56.136 with HTTP; Fri, 19 Sep 2014 08:03:22 -0700 (PDT) In-Reply-To: References: <5410522E.3050207@inria.fr> <1410359012.3003.34.camel@thinkpad> <54106B6D.4040607@gmail.com> <5416EAF8.9050800@glondu.net> Date: Fri, 19 Sep 2014 11:03:22 -0400 Message-ID: From: Yaron Minsky To: Gabriel Scherer Cc: Yotam Barnoy , Ocaml Mailing List Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [Caml-list] One build system to rule them all? On Fri, Sep 19, 2014 at 3:27 AM, Gabriel Scherer wrote: > On Thu, Sep 18, 2014 at 11:23 PM, Yaron Minsky > wrote: >> >> Rather than exhort everyone to focus in on a solution, I recommend you >> pick the one you think looks best, and see if you can contribute to >> it. > > > Agreed. > > My very personal point of focus is to help current ocamlbuild users (there > are a fair number of them) > >> is there a DSL-based build system that we can converge on to use and >> improve? > > > I think this distinction between ocaml-using and DSL-using build systems > does not matter in the long run. It matters when you look at a tool at a > given point in time, but here you are discussing the long-term evolution = of > the tooling, and those distinctions get blurred assuming enough > contributions: > 1) you can turn an ocaml-using build system into a DSL-using build system= by > having an input mode that take DSL descriptions instead of rules, and > interpreting them in term of those rules > 2) a well-designed DSL-based system has an underlying library encoding the > tool's engines, and exposing this library to advanced users effectively > turns it into an ocaml-using tool as well > >> Conversely, continuing to spread the community's attention between these >> tools (as well as ocamlbuild, which seems destined to stagnate) before a= ny >> one of them is top notch seems to me to be detrimental to ocaml's health= as >> an ecosystem. > > > I haven't seen any good reason in this thread justifying ocamlbuild's > stagnation (except, of course, the fact that few people are currently > interested in working on that; but I thought you tried to abstract from t= his > aspect): > - people have mentioned having to edit several files as a source of > annoyance with ocamlbuild; it would be rather easy to work on having a fi= le > with sub-sections corresponding to several of today's configuration file > - the disappointing parallelism has been mentioned as a problem with > ocamlbuild's implementation today -- it is a problem. I have discussed a > practical approach to improving parallelism in ( > http://gallium.inria.fr/blog/ocamlbuild-parallelization/ ), which would > require a bit more work but is not out of reach. For example that would b= e a > reasonable Google Summer of Code (GSoC) topic, had the community succeeded > in establishing a presence at GSoC. > > Note that I am not particularly attached to ocamlbuild in its current sta= te; > I care about its users to which it provides good service and should not be > left in the dust. > > Jenga's design is in fact surprisingly close to ocamlbuild's, and one thi= ng > I have been thinking about is trying to reimplement ocamlbuild as a kind = of > "frontend" on top of Jenga's implementation -- the goal being the maintain > compatibility with existing ocamlbuild setups, and gain some of the benef= its > of Jenga's engineering resources, namely arguably better parallelization = and > support continuous build. That's a rather bold move, there would be many > less invasive changes that could have a positive impact on users -- for > example, turning a succesful build into a Makefile should be doable in > ocamlbuild as well, and interesting for many reasons (bare-boneness, > performances). We would very much welcome that kind of move, and would be happy to help. >> >> I think consensus should follow code, not the other way around. >> >> y >> >> On Thu, Sep 18, 2014 at 5:15 PM, Yotam Barnoy >> wrote: >> > While there was no 'conclusion' to this thread, if I had to come up wi= th >> > one, it would be that we have a bunch of build tools which are all not >> > amazing at this point in time. We have some DSL-based build tools and >> > some >> > ocaml-based build tools, and all of them need a lot of love to get to a >> > good >> > state. >> > >> > My personal view is that we (as a community) should work at getting at >> > least >> > one DSL tool to be really great. I'm sure Jenga (an ocaml-based tool >> > which >> > seems more like a build-tool engine) will continue to be developed by >> > Jane >> > Street no matter what, so is there a DSL-based build system that we can >> > converge on to use and improve? The contenders for this slot appear to >> > be >> > omake, obuild, and ocp-build. I'm more than willing to switch to one of >> > these if I know that other people will as well, and that it will be >> > actively >> > developed (preferably on github). More users =3D more invested parties= =3D >> > more >> > development potential. Conversely, continuing to spread the community's >> > attention between these tools (as well as ocamlbuild, which seems >> > destined >> > to stagnate) before any one of them is top notch seems to me to be >> > detrimental to ocaml's health as an ecosystem. >> > >> > BTW Anil: is assemblage supposed to be an entire build toolchain, or is >> > it >> > only supposed to write makefiles (as the description in the readme >> > states)? >> > >> > -Yotam >> > >> > On Mon, Sep 15, 2014 at 9:34 AM, St=C3=A9phane Glondu >> > wrote: >> >> >> >> Le 10/09/2014 20:59, Yotam Barnoy a =C3=A9crit : >> >> > 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 >> >> >> >> - Support of platforms without ocamlopt. Many build systems assume >> >> that >> >> ocamlopt is available and have to be called specially (or even patche= d) >> >> when it is missing, which complicates packaging on these platforms. >> >> >> >> -- >> >> St=C3=A9phane >> >> >> >> -- >> >> 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 >> > >> > >> >> -- >> 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 > >