caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
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 --]

  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;
as well as URLs for NNTP newsgroup(s).