From: Jeremie Dimino <jdimino@janestreet.com>
To: "caml-list@inria.fr" <caml-list@inria.fr>,
"ocaml-core@googlegroups.com" <ocaml-core@googlegroups.com>
Subject: Re: [Caml-list] [ANN] Jbuilder 1.0+beta1
Date: Fri, 10 Mar 2017 14:13:11 +0000 [thread overview]
Message-ID: <CANhEzE623c1Lh2kcuYgaTS4fazSPYuUEaswgfS_=OeC6s4SBwg@mail.gmail.com> (raw)
In-Reply-To: <CANhEzE6RWye9Ppw0oHK+tzU5DZhf_24zsS1A4vgOR19EUXdW3w@mail.gmail.com>
I just released a beta2 with better rules for finding the workspace
root [1]. In beta1, jbuilder would often choose the home directory as
root, causing it to scan the whole home directory.
Following is the full changelog:
- Simplified the rules for finding the root of the workspace as the
old ones were often picking up the home directory. New rules are:
+ look for a =jbuild-workspace= file in parent directories
+ look for a =jbuild-workspace*= file in parent directories
+ use the current directory
- Fixed the expansion of =${ROOT}= in actions
- Install =quick-start.org= in the documentation directory
- Add a few more things in the log file to help debugging
[1] https://github.com/janestreet/jbuilder/blob/master/doc/manual.org#finding-the-root
On Wed, Mar 8, 2017 at 5:53 PM, Jeremie Dimino <jdimino@janestreet.com> wrote:
> Hi,
>
> I'm pleased to annouce the 1.0+beta1 release of Jbuilder.
>
> Jbuilder is a build system targetting OCaml projects and opam. It uses
> the same model as what is used at Jane Street: users write simple
> "jbuild" files to describe their libraries and executables and
> Jbuilder takes care of the rest. You don't need to know much about
> OCaml compilation to use Jbuilder.
>
> Jbuilder comes with a manual [1] and a quick start guide [2] showing
> common patterns.
>
> Jbuilder can be installed via opam:
>
> $ opam install jbuilder
> $ less `opam config var doc`/jbuilder/manual.org
>
> Jbuilder is developed primarily on github [3] and contributions are
> welcome.
>
> Interesting features
> ====================
>
> I think it is worth mentioning the following features of Jbuilder,
> that should make the everyday life of an OCaml hacker easier:
>
> jbuilder exec <command>
> -----------------------
>
> This will run <command> in an environment where it has access to the
> binaries, libraries, manual pages, ... previously built and that are
> to be installed. This is convenient for testing things in the toplevel
> before installing them for instance.
>
> jbuilder external-lib-deps --missing <targets>
> ----------------------------------------------
>
> This will list all the external library dependencies required to build
> <targets>, so that you have to run only one "opam install" command
> instead of installing dependencies one by one until the build succeed.
>
> building against several versions of OCaml at once
> --------------------------------------------------
>
> This is useful for locally testing that a project builds against all
> supported versions of OCaml:
>
> $ cat > jbuild-workspace <<EOF
> (context ((switch 4.02.3)))
> (context ((switch 4.03.0)))
> (context ((switch 4.04.0)))
> (context ((switch 4.05.0+beta2)))
> (context ((switch 4.06.0+trunk)))
> EOF
> $ jbuilder build @install @runtest
>
> I find it convenient to add a jbuild-workspace.dev file at the root of
> a project with the following rule in the Makefile:
>
> all-supported-ocaml-versions:
> jbuilder build @install @runtest --workspace jbuild-workspace.dev
>
> building multiple projects at once
> ----------------------------------
>
> This is great for working on several related projects:
>
> $ opam source base
> [...]
> $ opam source stdio
> [...]
> $ jbuild build @install
>
> This method has been successfully tested to build the ~100 Jane Street
> packages at once.
>
> Changes
> =======
>
> Here is the full set of changes since the first alpha release:
>
> - Added a manual
>
> - Support incremental compilation
>
> - Switched the CLI to cmdliner and added a =build= command
> (#5, Rudi Grinberg)
>
> - Added a few commands:
> + =runtest=
> + =install=
> + =uninstall=
> + =installed-libraries=
> + =exec=: execute a command in an environment similar to what you
> would get after =jbuilder install=
>
> - Removed the =build-package= command in favor of a =--only-packages=
> option that is common to all commands
>
> - Automatically generate =.merlin= files
> (#2, Richard Davison)
>
> - Improve the output of jbuilder, in particular don't mangle the
> output of commands when using =-j N= with =N > 1=
>
> - Generate a log in =_build/log=
>
> - Versioned the jbuild format and added a first stable version.
> You should now put =(jbuilder_version 1)= in a =jbuild= file at the
> root of your project to ensure forward compatibility
>
> - Switch from =ppx_driver= to =ocaml-migrate-parsetree.driver=. In
> order to use ppx rewriters with Jbuilder, they need to use
> =ocaml-migrate-parsetree.driver=
>
> - Added support for aliases
> (#7, Rudi Grinberg)
>
> - Added support for compiling against multiple opam switch
> simultaneously by writing a =jbuild-worspace= file
>
> - Added support for OCaml 4.02.3
>
> - Added support for architectures that don't have natdynlink
>
> - Search the root according to the rules described in the manual
> instead of always using the current directory
>
> - extended the action language to support common actions without using
> a shell:
> + =(with-stdout-to <file> <DSL>)=
> + =(copy <src> <dst>)=
> ...
>
> - Removed all implicit uses of bash or the system shell. Now one has
> to write explicitely =(bash "...")= or =(system "...")=
>
> - Generate meaningful versions in =META= files
>
> - Strengthen the scope of a package. Jbuilder knows about package
> =foo= only in the sub-tree starting from where =foo.opam= lives
>
> Notes
> =====
>
> Jbuilder was released in opam today, and since then I got reports that
> it often chooses the wrong "root". The rules for finding the root of
> the current workspace will have to be changed for the 1.0 release. In
> the meantime, you can force the compilation root by writing a
> jbuild-workspace containing "(context default)" where you want the
> root to be.
>
>
> [1] https://github.com/janestreet/jbuilder/blob/master/doc/manual.org
> [2] https://github.com/janestreet/jbuilder/blob/master/doc/quick-start.org
> [3] https://github.com/janestreet/jbuilder
>
> --
> Jeremie Dimino
--
Jeremie
prev parent reply other threads:[~2017-03-10 14:13 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-08 17:53 Jeremie Dimino
2017-03-10 14:13 ` Jeremie Dimino [this message]
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='CANhEzE623c1Lh2kcuYgaTS4fazSPYuUEaswgfS_=OeC6s4SBwg@mail.gmail.com' \
--to=jdimino@janestreet.com \
--cc=caml-list@inria.fr \
--cc=ocaml-core@googlegroups.com \
/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