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 938CE7FACD; Thu, 18 Sep 2014 22:14:46 +0200 (CEST) Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of bobzhang1988@gmail.com) identity=pra; client-ip=209.85.192.46; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="bobzhang1988@gmail.com"; x-sender="bobzhang1988@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of bobzhang1988@gmail.com designates 209.85.192.46 as permitted sender) identity=mailfrom; client-ip=209.85.192.46; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="bobzhang1988@gmail.com"; x-sender="bobzhang1988@gmail.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@mail-qg0-f46.google.com) identity=helo; client-ip=209.85.192.46; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="bobzhang1988@gmail.com"; x-sender="postmaster@mail-qg0-f46.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AvgBAKA8G1TRVcAulGdsb2JhbABgg2BXBIJ8xkuHTYEECBYBEQEBAQEHCwsJEiyEHBEdARsUCQEDEgMGBzcCJAERAQUBV4gHAQMRDY9DkCprizCBcoMQiTkKGScNZoYiAREBAQQOjwZfBIJ/gVMFhQ0ChTqLPIcHk1YYKYUrIS+CSgEBAQ X-IPAS-Result: AvgBAKA8G1TRVcAulGdsb2JhbABgg2BXBIJ8xkuHTYEECBYBEQEBAQEHCwsJEiyEHBEdARsUCQEDEgMGBzcCJAERAQUBV4gHAQMRDY9DkCprizCBcoMQiTkKGScNZoYiAREBAQQOjwZfBIJ/gVMFhQ0ChTqLPIcHk1YYKYUrIS+CSgEBAQ X-IronPort-AV: E=Sophos;i="5.04,549,1406584800"; d="scan'208";a="96501991" Received: from mail-qg0-f46.google.com ([209.85.192.46]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/RC4-SHA; 18 Sep 2014 22:14:45 +0200 Received: by mail-qg0-f46.google.com with SMTP id q108so1152677qgd.19 for ; Thu, 18 Sep 2014 13:14:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:cc:content-type; bh=QHT7pIJoIxL76sapdbc4VfcWKWk9lQlrSb3Yf1DqClQ=; b=q8O0QeKcrFjrMwzbOkwOndsI6kJBQfLPMInDBTdLUNjqJmGkOLVBbyB6jdtmYUtZ1t zDtBvw++GR7akYCahyI+duWHY5xNFtLZ/KkkUhD1b93udScyLaXFMb0dNOQ9DEjQ8s3p 5jEa4EwQjHBk0OtZTnkGHPvw6Ifcb1LqT8kOzewUi0owL8k/OUVj7A3ZmFQcdVYeqVuT rXB7DQYAUw20XKnbGA2y0V31WVYGHzqFu3h4a3KBYDmRinVtfkn9VsjR5fC0v2XXagUQ 8AEeliPr2PxrgEzb3M2Nr0oKViIPjUMJcrSWCVJRRrr9GtZSUGVc0pSh5wnmqF1aFAAB 1OFw== MIME-Version: 1.0 X-Received: by 10.224.129.1 with SMTP id m1mr13035149qas.0.1411071284832; Thu, 18 Sep 2014 13:14:44 -0700 (PDT) Received: by 10.140.136.7 with HTTP; Thu, 18 Sep 2014 13:14:44 -0700 (PDT) Date: Thu, 18 Sep 2014 16:14:44 -0400 Message-ID: From: Bob Zhang To: caml-list-request@inria.fr Cc: Caml List Content-Type: multipart/alternative; boundary=001a11c23276af806405035ca263 Subject: [Caml-list] improve omake [was One build system to rule them all] --001a11c23276af806405035ca263 Content-Type: text/plain; charset=UTF-8 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 --001a11c23276af806405035ca263 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Dear= camlers,
=C2=A0 =C2=A0I have done some work to =C2=A0improve omake avai= lable here: =C2=A0https://github.com/bobzhang/omake-fork/tree/work
=C2=A0 =C2=A0Be= fore deciding spending some time in improving omake,=C2=A0I have tried vari= ous build systems. =C2=A0=C2=A0
=C2=A0 1. o= camlbuild
=C2=A0 =C2=A0 =C2=A0 ocamlbuild is really nice for small to me= dium projects and I have used it pervasively in my personal projects and co= rporation projects. It works pretty well in most cases.
=C2=A0 =C2=A0 = =C2=A0There are mainly three=C2=A0drawbacks:
=C2=A0 =C2=A0 =C2=A0 a. Eas= y things hard to do.
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Even for some ve= ry trivial things, if you don't write myocamlbuild.m for a long time, y= ou have to google ocamlbuild API and figure it out how to do it correctly.<= br>=C2=A0 =C2=A0 =C2=A0b. Error messages hard to understand
=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0It's cool that ocamlbuild detect dependencies d= ynamically, when it does not work out, in general, I would turn on -verbose= and search which part goes wrong.
=C2=A0 =C2=A0 =C2=A0c. no parallellis= m
=C2=A0 =C2=A0 =C2=A0 =C2=A0 This is fatal and main reason that I gave = it up
=C2=A0 =C2=A02. ocp-build
=C2=A0 =C2=A0 =C2=A0 I tried it for m= y hobby project, it's not close to maturity yet.
=C2=A0 =C2=A03. jen= ga
=C2=A0 =C2=A0 =C2=A0 Jenga looks promising, but I don't think it = would be usable inside our company, the dependency is huge, more importantl= y, its dependency chain includes Camlp4 which we can not rely on. Also, loo= king at the examples, it is quite verbose even for trivial projects.
<= div class=3D"gmail_quote">
=C2=A0 =C2= =A0omake has its own drawbacks as well, for example, the language is overly= complex and error message is hard to understand(still better than ocamlbui= ld), startup speed is slow, no easy FFI interface to write rules in OCaml l= anguage itself, but that's all we can find a way to fix.=C2=A0

<= /div>--
Regards
-- Hongbo Zhang
--001a11c23276af806405035ca263--