From: Nicolas Boulay <nicolas@boulay.name>
To: Alain Frisch <alain@frisch.fr>
Cc: caml-list-request@inria.fr, Caml List <caml-list@inria.fr>
Subject: Re: [Caml-list] improve omake [was One build system to rule them all]
Date: Fri, 19 Sep 2014 14:29:48 +0200 [thread overview]
Message-ID: <CAH+PdrDSfO4g_jmMENuK-qhOzDrbSCKv8PF1F-5T4XEy4BNFHA@mail.gmail.com> (raw)
In-Reply-To: <541C2037.5030303@frisch.fr>
[-- Attachment #1: Type: text/plain, Size: 4423 bytes --]
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 <alain@frisch.fr>:
> 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
>
[-- Attachment #2: Type: text/html, Size: 5568 bytes --]
next prev parent reply other threads:[~2014-09-19 12:29 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-18 20:14 Bob Zhang
2014-09-18 20:30 ` Aleksey Nogin
2014-09-20 14:59 ` Jun Furuse
2014-09-18 20:34 ` Sébastien Dailly
2014-09-18 21:32 ` Yaron Minsky
2014-09-19 12:23 ` Alain Frisch
2014-09-19 12:29 ` Nicolas Boulay [this message]
2014-09-19 13:36 ` Gerd Stolpmann
2014-09-19 14:00 ` Alain Frisch
2014-09-19 15:18 ` Yaron Minsky
2014-09-19 17:18 ` Gerd Stolpmann
2014-09-19 17:48 ` Yaron Minsky
2014-09-23 10:40 ` Alain Frisch
2014-09-23 10:58 ` Mark Shinwell
2014-09-23 20:12 ` Alain Frisch
2014-09-24 2:35 ` Yaron Minsky
2014-09-22 15:33 Bob Zhang
2014-09-24 13:37 ` Gerd Stolpmann
2014-09-24 15:47 ` Alain Frisch
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAH+PdrDSfO4g_jmMENuK-qhOzDrbSCKv8PF1F-5T4XEy4BNFHA@mail.gmail.com \
--to=nicolas@boulay.name \
--cc=alain@frisch.fr \
--cc=caml-list-request@inria.fr \
--cc=caml-list@inria.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox