From: Francois Berenger <francois.berenger@inria.fr>
To: caml-list@inria.fr
Subject: Re: [Caml-list] One build system to rule them all?
Date: Thu, 11 Sep 2014 09:53:59 +0200 [thread overview]
Message-ID: <54115517.9020209@inria.fr> (raw)
In-Reply-To: <CAN6ygOndvw0McYKsB20LtFAdZED-CnzEEZ9qc7PJAXRPBdDWAQ@mail.gmail.com>
On 09/10/2014 08:59 PM, Yotam Barnoy wrote:
> Here's part of my motivation for starting this discussion now: I
> recently experienced a hard-drive failure and had to switch to my backup
> windows laptop. I was dismayed that opam is still not available for
> Windows, and while wodi is available, it's not nearly as well developed,
> and apparently requires many hacks for different packages.
>
> It seems to me that these hacks are some of the things that make
> platform compatibility hard for opam. Each build system has different
> requirements and methods of compilation, and making this approach
> cross-platform compatible is difficult. Ideally, a build system will
> abstract away the things that are not inter-platform compatible. This is
> why I don't like people using makefiles. Makefiles are not available
> natively on Windows, and they often contain other bits of shell code
> that isn't available on all POSIX platforms, let alone on Windows. Not
> to mention the fact that makefiles have a very tricky and sensitive syntax.
>
> I don't expect one build system to match everyone's requirements, but I
> think if we get together, make a list of requirements, and try to get
> over our personal biases, we can find something that works for most
> people, and with some group effort, can work for even more people in
> more use-cases. I'm not suggesting that we invent something new, but
> that we take something good and make it better, as well as make an
> effort to learn that tool and convert packages to use that tool.
>
> So here are some requirements I can think of (using some of the
> suggestions that have been brought up):
> - Easy to use, especially for small projects (large projects can afford
> to put more time into their build systems)
> - Abstract away platform considerations as much as possible. No
> dependence on specific shells and POSIX utilities.
> - Allows compilation of C files, which is quite common in ocaml packages.
> - Scalable to many directories and files
> - Uses ocamlfind to locate packages
> - Handles camlp4 and ppx
> - Parallel & incremental compilation
>
> About Jenga: I took a quick look at Jenga, and even though I'm impressed
> by its capabilities, the amount of code needed to be written even for
> simple projects is overwhelming. It's clearly a very flexible and
> powerful tool, but I'd say it's too flexible for the mainstream. There's
> always room for a build system that's integrated into ocaml itself (like
> Shake), but I think declarative build systems tend to be easier to
> comprehend for the average user.
>
> 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)
> 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.
Here is one thing I dislike in ocp-build: you have to explicitely list
all the source files (and maybe same thing for Jenga).
I am way too lazy to do that, especially since other tools are able
to infer this list automatically (a library is just a list of modules,
an executable has a single entry point, the main function in a single file).
> Yotam
>
>
> On Wed, Sep 10, 2014 at 11:17 AM, Leonardo Laguna Ruiz <modlfo@gmail.com
> <mailto:modlfo@gmail.com>> wrote:
>
> My pick is ocamlbuild because:
>
> - It works the same way in all platforms that I work (linux,osx,
> windows msvc port, cygwin)
> - If I can compile ocaml, then I have ocamlbuild
> - It does not require external libraries
>
> I have to say that I feel a little bit annoyed by the fact that some
> other build systems or tools, do not work correctly in all the
> platforms that I want to support.
>
> Leonardo
>
>
>
> On 9/10/2014 4:23 PM, Gerd Stolpmann wrote:
>
> Am Mittwoch, den 10.09.2014, 15:29 +0200 schrieb Francois Berenger:
>
> More seriously, concerning build systems, we clearly have
> quite some
> choice on the OCaml shelf:
> - obuild
> - ocamlbuild
> - omake
> - oasis (which in fact uses ocamlbuild, don't forget that)
>
> oasis is not a build system. It is a package description format that
> describes how to invoke the build (and more). So far there is only
> built-in knowledge for ocamlbuild, but this may change, and you can
> already call any external tool, so you can wrap any build system you
> want. The intention is here more to create a uniform API for
> starting
> the build, which may help packagers and other people who
> routinely build
> software.
>
> Gerd
>
> - jenga
> - [...]
>
> My preffered is obuild
> (https://github.com/ocaml-__obuild/obuild
> <https://github.com/ocaml-obuild/obuild>),
> for the terseness, readability and centralization of its build
> descriptions. I would love to see the user community of
> obuild grow,
> so that we can get rid of more bugs, be able to compile _any_
> OCaml project with it and implement even more cool features
> (contributors are very welcome).
>
> I don't want a ring to rule them all, jut a ring that fits
> _my_ finger. ;)
>
> --
> Regards,
> Francois.
>
>
>
> --
> Caml-list mailing list. Subscription management and archives:
> https://sympa.inria.fr/sympa/__arc/caml-list
> <https://sympa.inria.fr/sympa/arc/caml-list>
> Beginner's list: http://groups.yahoo.com/group/__ocaml_beginners
> <http://groups.yahoo.com/group/ocaml_beginners>
> Bug reports: http://caml.inria.fr/bin/caml-__bugs
> <http://caml.inria.fr/bin/caml-bugs>
>
>
--
Regards,
Francois.
next prev parent reply other threads:[~2014-09-11 7:54 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-10 12:49 Yotam Barnoy
2014-09-10 13:00 ` Simon Cruanes
2014-09-10 13:02 ` Adrien Nader
2014-09-10 13:05 ` David Sheets
2014-09-10 14:04 ` Thomas Braibant
2014-09-10 14:13 ` Adrien Nader
2014-09-10 13:18 ` Mark Shinwell
2014-09-10 13:29 ` Francois Berenger
2014-09-10 13:53 ` Jacques-Pascal Deplaix
2014-09-10 13:55 ` Francois Berenger
2014-09-10 14:17 ` Maxence Guesdon
2014-09-10 19:13 ` Drup
2014-09-10 22:56 ` Gerd Stolpmann
2014-09-13 12:01 ` rixed
2014-09-13 12:21 ` Drup
2014-09-13 12:37 ` rixed
2014-09-13 12:50 ` Adrien Nader
2014-09-13 13:05 ` Drup
2014-09-19 11:15 ` Matej Kosik
2014-09-10 14:23 ` Gerd Stolpmann
2014-09-10 15:17 ` Leonardo Laguna Ruiz
2014-09-10 18:59 ` Yotam Barnoy
2014-09-10 19:16 ` Peter Zotov
2014-09-10 19:56 ` Sebastien Mondet
2014-09-10 20:15 ` Gabriel Scherer
2014-09-10 23:20 ` Gerd Stolpmann
2014-09-10 20:13 ` Adrien Nader
2014-09-11 7:53 ` Francois Berenger [this message]
2014-09-11 10:37 ` Yaron Minsky
2014-09-12 14:08 ` Yotam Barnoy
2014-09-12 14:31 ` Francois Berenger
2014-09-12 14:36 ` Anil Madhavapeddy
2014-09-12 18:49 ` Yaron Minsky
2014-09-12 15:10 ` SF Markus Elfring
2014-09-12 15:34 ` Adrien Nader
2014-09-12 18:50 ` Fabrice Le Fessant
2014-09-14 18:46 ` Richard W.M. Jones
2014-09-13 12:22 ` rixed
2014-09-15 13:34 ` Stéphane Glondu
2014-09-18 21:15 ` Yotam Barnoy
2014-09-18 21:21 ` Anil Madhavapeddy
2014-09-18 21:36 ` Yaron Minsky
2014-09-19 12:31 ` Daniel Bünzli
2014-09-19 13:06 ` Anil Madhavapeddy
2014-09-18 21:23 ` Yaron Minsky
2014-09-19 7:27 ` Gabriel Scherer
2014-09-19 15:03 ` Yaron Minsky
2014-09-12 16:54 ` [Caml-list] Re : " r.3
2014-09-14 18:16 ` [Caml-list] " Richard W.M. Jones
2014-09-19 9:14 ` r.3
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=54115517.9020209@inria.fr \
--to=francois.berenger@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