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 CD83C7FACE; Fri, 19 Sep 2014 14:29:58 +0200 (CEST) Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of nicolas.boulay@gmail.com) identity=pra; client-ip=209.85.223.169; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="nicolas.boulay@gmail.com"; x-sender="nicolas.boulay@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of nicolas.boulay@gmail.com designates 209.85.223.169 as permitted sender) identity=mailfrom; client-ip=209.85.223.169; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="nicolas.boulay@gmail.com"; x-sender="nicolas.boulay@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-ie0-f169.google.com) identity=helo; client-ip=209.85.223.169; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="nicolas.boulay@gmail.com"; x-sender="postmaster@mail-ie0-f169.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AnoCAFshHFTRVd+plGdsb2JhbABgg2BXBIJ9tSiPVoFrh017CBYBEQEBAQEHCwsJEiyEAwEBAQMBEhEdAS0CCQEDAQsBBQMCCw0NHQICIhIBBQEKBAENBhMSEIgIAwkIDZAEkCptizCFAolYJwMKh0ABBQ6KDIUEXgGDA4FTBYUNAgOFPIs+hweBYZF7GCmBbIENghk7L4JKAQEB X-IPAS-Result: AnoCAFshHFTRVd+plGdsb2JhbABgg2BXBIJ9tSiPVoFrh017CBYBEQEBAQEHCwsJEiyEAwEBAQMBEhEdAS0CCQEDAQsBBQMCCw0NHQICIhIBBQEKBAENBhMSEIgIAwkIDZAEkCptizCFAolYJwMKh0ABBQ6KDIUEXgGDA4FTBYUNAgOFPIs+hweBYZF7GCmBbIENghk7L4JKAQEB X-IronPort-AV: E=Sophos;i="5.04,554,1406584800"; d="scan'208";a="80058102" Received: from mail-ie0-f169.google.com ([209.85.223.169]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/RC4-SHA; 19 Sep 2014 14:29:49 +0200 Received: by mail-ie0-f169.google.com with SMTP id rp18so1314110iec.14 for ; Fri, 19 Sep 2014 05:29:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=bZEcjN29fye8ETXfSz1Nsx8lyz01F9q/XIQG8jjKuzA=; b=jPl1iHkOB/dD7mf5NdqwK3Dz/vmTjDcVE+xsC+CaFa/4ClfjLjrVMrQZt1fHoYv6kj sY0qiu9E0KcTjhREsJD4UwYT63KpkQZDT5N6vbR7vUt/iuCjV5VjYrcT79QWN1+IF82O qnDfjrxoUFTv4ScbsXGn1htYWCOe7Mv7a33sYkx18KrF8TQ+sQ39EZ2okjkYCO5QYHUe nWelED45YvwCM7mKilLfvdP6GJCWhBnNG4eimjmQBDw6IHxVpptWxxWZTZntfe02Ap4v DTc1Jzo5dYHhLL/WFJSsjzhVUFBbXWcq0LbV7fjA7s1nSGvdrL/x31qrukyJP3jWf6dn 8iFQ== MIME-Version: 1.0 X-Received: by 10.50.82.37 with SMTP id f5mr48552369igy.16.1411129788669; Fri, 19 Sep 2014 05:29:48 -0700 (PDT) Sender: nicolas.boulay@gmail.com Received: by 10.50.244.170 with HTTP; Fri, 19 Sep 2014 05:29:48 -0700 (PDT) In-Reply-To: <541C2037.5030303@frisch.fr> References: <541C2037.5030303@frisch.fr> Date: Fri, 19 Sep 2014 14:29:48 +0200 X-Google-Sender-Auth: Vl3bxGqlZZIsdebpCWb62iYux7g Message-ID: From: Nicolas Boulay To: Alain Frisch Cc: caml-list-request@inria.fr, Caml List Content-Type: multipart/alternative; boundary=089e0102f6eec929e305036a41a6 X-Validation-by: nicolas@boulay.name Subject: Re: [Caml-list] improve omake [was One build system to rule them all] --089e0102f6eec929e305036a41a6 Content-Type: text/plain; charset=UTF-8 Ocaml could be executed as shell code. Why create another langage and not use an ocaml program (+ library) to build an other ocaml program ? The first program could be interpreted as shell code. 2014-09-19 14:23 GMT+02:00 Alain Frisch : > Hi Hongbo, > > It's great to hear that you'll put some energy into omake. Despite some > of its shortcomings, it's a great and mature tool, which is nice for both > simple projects and large ones. It certainly deserves some good treatment > :-) and it's actually the only build system developed around OCaml which > put so much emphasis, right from the beginning, on good Windows support. > > I'm not sure of the benefit of using OCaml to write custom rules (but why > not). The omake language could certainly be improved, both from a > syntactic and from a semantic point of view. (I think there was some > project, in the latest development version, to introduce a syntax closer to > programming languages, with un-prefixed variables and delimited string > literals.) Personally, I don't care too much about the syntax. The most > important problem I can see with the language is the difficulty to "pass" > information from one part of the project to another one. The only two ways > I'm aware of to achieve that are: (i) rely on the scoping rules, which in > practice means a one-directional flow of data (typically from a toplevel > OMakefile to OMakefile in sub-directories) or (ii) piggy-back the more > "imperative" dependency graph (attaching dependencies to dummy "tag" files > can be used to implement Boolean markers than can be put on a target in one > place and observed from another place). A typical situation where > information should flow from one part to another: each library (in its own > directory) exports some variables (such as some link flags), to be used by > client parts. > > > Several people complained about the startup performance of omake on big > projects. It would be very useful to know whether this comes from the > processing of the omake "scripts" (in which case some energy might be put > into improving the interpreter and the internal data structures -- I don't > see a deep reason for spending several seconds on interpreting even quite > large scripts) or from scanning the file system for file changes (in which > case nothing much could be done about it). > > > Alain > > > > > On 09/18/2014 10:14 PM, Bob Zhang wrote: > >> Dear camlers, >> I have done some work to improve omake available here: >> https://github.com/bobzhang/omake-fork/tree/work >> Before deciding spending some time in improving omake, I have tried >> various build systems. >> 1. ocamlbuild >> ocamlbuild is really nice for small to medium projects and I have >> used it pervasively in my personal projects and corporation projects. It >> works pretty well in most cases. >> There are mainly three drawbacks: >> a. Easy things hard to do. >> Even for some very trivial things, if you don't write >> myocamlbuild.m for a long time, you have to google ocamlbuild API and >> figure it out how to do it correctly. >> b. Error messages hard to understand >> It's cool that ocamlbuild detect dependencies dynamically, >> when it does not work out, in general, I would turn on -verbose and >> search which part goes wrong. >> c. no parallellism >> This is fatal and main reason that I gave it up >> 2. ocp-build >> I tried it for my hobby project, it's not close to maturity yet. >> 3. jenga >> Jenga looks promising, but I don't think it would be usable >> inside our company, the dependency is huge, more importantly, its >> dependency chain includes Camlp4 which we can not rely on. Also, looking >> at the examples, it is quite verbose even for trivial projects. >> >> omake has its own drawbacks as well, for example, the language is >> overly complex and error message is hard to understand(still better than >> ocamlbuild), startup speed is slow, no easy FFI interface to write rules >> in OCaml language itself, but that's all we can find a way to fix. >> >> -- >> Regards >> -- Hongbo Zhang >> > > > -- > 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 > --089e0102f6eec929e305036a41a6 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Ocaml could be executed as shell code. Why create another = langage and not use an ocaml program (+ library) to build an other ocaml pr= ogram ? The first program could be interpreted as shell code.

2014-09-19 14:23 GMT+= 02:00 Alain Frisch <alain@frisch.fr>:
Hi Hongbo,

It's great to hear that you'll put some energy into omake.=C2=A0 De= spite some of its shortcomings, it's a great and mature tool, which is = nice for both simple projects and large ones.=C2=A0 It certainly deserves s= ome good treatment :-)=C2=A0 =C2=A0and it's actually the only build sys= tem developed around OCaml which put so much emphasis, right from the begin= ning, on good Windows support.

I'm not sure of the benefit of using OCaml to write custom rules (but w= hy not).=C2=A0 The omake language could certainly be improved, both from a = syntactic and from a semantic point of view.=C2=A0 (I think there was some = project, in the latest development version, to introduce a syntax closer to= programming languages, with un-prefixed variables and delimited string lit= erals.)=C2=A0 =C2=A0Personally, I don't care too much about the syntax.= =C2=A0 The most important problem I can see with the language is the diffic= ulty to "pass" information from one part of the project to anothe= r one.=C2=A0 The only two ways I'm aware of to achieve that are:=C2=A0 = (i) rely on the scoping rules, which in practice means a one-directional fl= ow of data (typically from a toplevel OMakefile to OMakefile in sub-directo= ries)=C2=A0 or (ii) piggy-back the more "imperative" dependency g= raph (attaching dependencies to dummy "tag" files can be used to = implement Boolean markers than can be put on a target in one place and obse= rved from another place).=C2=A0 =C2=A0A typical situation where information= should flow from one part to another:=C2=A0 each library (in its own direc= tory) exports some variables (such as some link flags), to be used by clien= t parts.


Several people complained about the startup performance of omake on big pro= jects.=C2=A0 It would be very useful to know whether this comes from the pr= ocessing of the omake "scripts" (in which case some energy might = be put into improving the interpreter and the internal data structures -- I= don't see a deep reason for spending several seconds on interpreting e= ven quite large scripts) or from scanning the file system for file changes = (in which case nothing much could be done about it).=


Alain




On 09/18/2014 10:14 PM, Bob Zhang wrote:
Dear camlers,
=C2=A0 =C2=A0 I have done some work to=C2=A0 improve omake available here:<= br> https://github.com/bobzhang/omake-fork/tree/work
=C2=A0 =C2=A0 Before deciding spending some time in improving omake, I have= tried
various build systems.
=C2=A0 =C2=A01. ocamlbuild
=C2=A0 =C2=A0 =C2=A0 =C2=A0ocamlbuild is really nice for small to medium pr= ojects and I have
used it pervasively in my personal projects and corporation projects. It
works pretty well in most cases.
=C2=A0 =C2=A0 =C2=A0 There are mainly three drawbacks:
=C2=A0 =C2=A0 =C2=A0 =C2=A0a. Easy things hard to do.
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Even for some very trivial things,= if you don't write
myocamlbuild.m for a long time, you have to google ocamlbuild API and
figure it out how to do it correctly.
=C2=A0 =C2=A0 =C2=A0 b. Error messages hard to understand
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 It's cool that ocamlbuild detect dep= endencies dynamically,
when it does not work out, in general, I would turn on -verbose and
search which part goes wrong.
=C2=A0 =C2=A0 =C2=A0 c. no parallellism
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0This is fatal and main reason that I gave= it up
=C2=A0 =C2=A0 2. ocp-build
=C2=A0 =C2=A0 =C2=A0 =C2=A0I tried it for my hobby project, it's not cl= ose to maturity yet.
=C2=A0 =C2=A0 3. jenga
=C2=A0 =C2=A0 =C2=A0 =C2=A0Jenga looks promising, but I don't think it = would be usable
inside our company, the dependency is huge, more importantly, its
dependency chain includes Camlp4 which we can not rely on. Also, looking
at the examples, it is quite verbose even for trivial projects.

=C2=A0 =C2=A0 omake has its own drawbacks as well, for example, the languag= e is
overly complex and error message is hard to understand(still better than
ocamlbuild), startup speed is slow, no easy FFI interface to write rules
in OCaml language itself, but that's all we can find a way to fix.

--
Regards
-- Hongbo Zhang



--089e0102f6eec929e305036a41a6--