On Wed, Sep 10, 2014 at 3:16 PM, Peter Zotov <whitequark@whitequark.org> wrote:
On 2014-09-10 22:59, Yotam Barnoy wrote:
ocp-build actually looks very interesting. The manual (which is here:
http://github.com/OCamlPro/ocp-build/blob/master/docs/user-manual/user-manual.pdf?raw=true
[2]) is incomplete, but contains a nice survey of the existing build
tools, and motivation for making ocp-build. Has anyone had experience
with ocp-build? Opam seems to be using it, but they also use a
makefile (why?) with a bunch of shell commands inside (which is
precisely the problem from my perspective). ocp-build is supposedly
compatible with Windows, too.

Every single time I had to use ocp-build, it broke in an odd and hard to
fix way. It was so bad that eventually I just ported the ocp-build-using
projects (ocp-index and its dependencies) to OASIS. Most worryingly it has
some strange requirement to ship bytecode, which ties it to a released OCaml
version; no other buildsystem needs that.


Yes ocp-build is broken for many corner cases, I've been trying to push it to its maximum; look at that ugly shell script: https://github.com/hammerlab/ketrew/blob/master/please.sh that even has to create a yojson library out of the one in ~/.opam to please ocp-build's assumptions.

Also, like every build system based on flat files (oasis, obuild), it is fundamentally broken. You'll always need a programming language to extended your build (adding targets, like build documentation/websites, special tests, .merlin files, code generation...).

- omake did that with yet another obscure and weird language (I guess the goal was to "look" like `make` but with even more broken string escaping).
- ocamlbuild and jenga picked the right language.
    - ocamlbuild's API is very limited, there is not even a clear way to replace all the crazy small files required everywhere (_tags, mllib, ...) with function calls within a myocamlbuild.ml plugin. It is also painfully slow.
    - Jenga is not for "normal" projects. It takes half-an-hour to build jenga itself, and it's dependency tree is not very portable. The API is very convoluted even for simple projects.

Look at https://github.com/samoht/assemblage/ certainly going to in the right direction.




 
--
Peter Zotov


--
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