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 mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id 10EEE800E5 for ; Fri, 10 Mar 2017 15:13:17 +0100 (CET) Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=jdimino@janestreet.com; spf=Pass smtp.mailfrom=jdimino@janestreet.com; spf=None smtp.helo=postmaster@mxout1.mail.janestreet.com Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of jdimino@janestreet.com) identity=pra; client-ip=38.105.200.78; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="jdimino@janestreet.com"; x-sender="jdimino@janestreet.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of jdimino@janestreet.com designates 38.105.200.78 as permitted sender) identity=mailfrom; client-ip=38.105.200.78; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="jdimino@janestreet.com"; x-sender="jdimino@janestreet.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of postmaster@mxout1.mail.janestreet.com) identity=helo; client-ip=38.105.200.78; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="jdimino@janestreet.com"; x-sender="postmaster@mxout1.mail.janestreet.com"; x-conformance=sidf_compatible IronPort-PHdr: =?us-ascii?q?9a23=3AQUnKthzoqqxZhAnXCy+O+j09IxM/srCxBDY+r6Qd?= =?us-ascii?q?2u4fIJqq85mqBkHD//Il1AaPBtSGra4UwLeG+4nbGkU4qa6bt34DdJEeHzQksu?= =?us-ascii?q?4x2zIaPcieFEfgJ+TrZSFpVO5LVVti4m3peRMNQJW2aFLduGC94iAPERvjKwV1?= =?us-ascii?q?Ov71GonPhMiryuy+4ZPebgFIiTanbr5/Lxq6oAXSu8ILnYZsN6E9xwfTrHBVYe?= =?us-ascii?q?pW32RoJVySnxb4+Mi9+YNo/jpTtfw86cNOSL32cKskQ7NWCjQmKH0169bwtRbf?= =?us-ascii?q?VwuP52ATXXsQnxFVHgXK9hD6XpP2sivnqupw3TSRMMPqQbwoXzmp8qFmQwLqhi?= =?us-ascii?q?gaLT406GPYisJwgqxVoxyvugJxzJLPbYGJKPZzZL/Rcc8GSWdDWMtaSixPApm7?= =?us-ascii?q?b4sKF+cPOfhXr5PjqFsLrBuxGxSnCu3uyj9Nh3/226o62PkmHAHEwQMgHtcOsH?= =?us-ascii?q?XSrNXyL6oSU/q6zK/WwjXYc/NWwyny55bUchw7vf6MWrdwfNPXxEIyGQ3FiVCQ?= =?us-ascii?q?ppbkPzOTzukNtnKU7+x9Ve21j24rsQZxoiKgxss0k4nJm4MVxUzH9Slg24Y1Oc?= =?us-ascii?q?e3SFRnYdK+F5tQrS6aO5N5QsMjX2FouDs6xaYctZGneygKzYwryAPFa/yGbYiH?= =?us-ascii?q?/AjjWPyQITd+gn9uZbGxhw6q/EWuyeDwTNS43EpKoyZfjNXAqmwB2wbR58WEUv?= =?us-ascii?q?dx4Fut1DKV2w3Q6uxIO144mbfbJpI7wLM8i5weulnZECDsgkX5lqqWe10k+ue2?= =?us-ascii?q?7+TnZa3rppqTNo9zlwH+Lrkilta6AesiMwgOW3KX+eam273l40L5W6lKjucona?= =?us-ascii?q?bHrJDWP9gUpqm8AwNN04Yj7QiwDyu+3dkWnnQLNk9JdA6HgoTzJV3CPOz0Ae29?= =?us-ascii?q?jlmviDtrwurJPrzlApXDNHjDl7LhcK5/60FByQozyNFf55RTCrwaIvL8QEnxu8?= =?us-ascii?q?LDDh8lKQy73fjoCMln2owCXmKPB7eVMLnOvl+Q+uIvP+6MaZcJtznnLvgl4+fi?= =?us-ascii?q?jXs4mV8GYamkxoAXaXC9HvR+OUqVe3vsgtEbEWcLpAUyVuLqiEfRGQJUMjy5Vq?= =?us-ascii?q?c4ozU6E56ODIHZR4nrjqbLlHOwF5hSI2RHEUykEHHydozCVe1aLGrYJcRolzhB?= =?us-ascii?q?Xr+7Rqcu0hahsAL10b16NvGS8Sod/9q309N84umWnhYo+BR7CMOS12yCVWZphn?= =?us-ascii?q?hOTDgzivNRu0t4n3WOy6V9gvEQOd1W5vVOGlM4OZ/Zzup9I9L7XA/aYs2ERUrg?= =?us-ascii?q?SdKjV2JiBuktysMDNh4uU+6piQrOinKn?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0BqAADXs8JYfU7IaSZdHQEFAQsBGAEFA?= =?us-ascii?q?QsBhAeBCgeDWYoOc5BdjH+IOYIOLIV2AoI1Bz8YAQEBAQEBAQEBAQESAQELFAh?= =?us-ascii?q?XgjMggkMBAgMjHQEBOA8LCw0CAiYCAiISAQUBHAYBEhmJZwMLpGA/ixtogiaDC?= =?us-ascii?q?AEBBYdYAQEBAQEFAQEBAQEBAQEBFwgSeYVDg2aBCYdagl+JH5MghnaDKIgagk+?= =?us-ascii?q?OU5F4FB+BFR+BOyIWCBcVPxcFhCqCD3WKGgEBAQ?= X-IPAS-Result: =?us-ascii?q?A0BqAADXs8JYfU7IaSZdHQEFAQsBGAEFAQsBhAeBCgeDWYo?= =?us-ascii?q?Oc5BdjH+IOYIOLIV2AoI1Bz8YAQEBAQEBAQEBAQESAQELFAhXgjMggkMBAgMjH?= =?us-ascii?q?QEBOA8LCw0CAiYCAiISAQUBHAYBEhmJZwMLpGA/ixtogiaDCAEBBYdYAQEBAQE?= =?us-ascii?q?FAQEBAQEBAQEBFwgSeYVDg2aBCYdagl+JH5MghnaDKIgagk+OU5F4FB+BFR+BO?= =?us-ascii?q?yIWCBcVPxcFhCqCD3WKGgEBAQ?= X-IronPort-AV: E=Sophos;i="5.36,141,1486422000"; d="scan'208";a="216307756" Received: from mxout1.mail.janestreet.com ([38.105.200.78]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 10 Mar 2017 15:13:15 +0100 Received: from tot-qpr-mailcore2.delacy.com ([172.27.56.106] helo=tot-qpr-mailcore2) by mxout1.mail.janestreet.com with esmtps (TLSv1.2:DHE-RSA-AES256-GCM-SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cmLI9-0001rU-3a for caml-list@inria.fr; Fri, 10 Mar 2017 09:13:13 -0500 X-JS-Flow: external X-JS-Scanner-attachment: (ok) No attachments Received: by tot-qpr-mailcore2 with JS-mailcore (0.1) (envelope-from ) id BYwrR5-AAADVk-Ns; 2017-03-10 09:13:13.439747-05:00 Received: from mail-lf0-f71.google.com ([209.85.215.71]) by mxgoog1.mail.janestreet.com with esmtps (TLSv1.2:AES128-GCM-SHA256:128) (Exim 4.84_2) (envelope-from ) id 1cmLI9-0000Gd-9Y for caml-list@inria.fr; Fri, 10 Mar 2017 09:13:13 -0500 Received: by mail-lf0-f71.google.com with SMTP id p78so57321299lfd.0 for ; Fri, 10 Mar 2017 06:13:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=janestreet.com; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=53TqRUbEdISI5SNSUKqY4JouQAo39qCuKT6rz746dbM=; b=J6fASMPDqykv8cr/RhLnqucBlDRuTBTiZFCdtr32rpB1ARQ9F1bIq5UlHyhYV9tBC1 DbBhQR7SMrzLae/6j1tGAixfSixkljJH7yso8ppuxCJz23kf/OjnOPiva1Z/E9kUbjrH t1VeqauToV+fAcMcm+FDtv4tUNgQOHRLDDKLc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=53TqRUbEdISI5SNSUKqY4JouQAo39qCuKT6rz746dbM=; b=KPceArYsECN76eH3Z2AdoqvBUkSLLMv3E3FdBaFvwDmibCp58d5r9kr/eZUkrRLl7X 1RJk+k9u8rIOgRRvPsmak+KRI+/q0eZ8aHbychyVfFU/JRmdN3aIIQFVj7Z1wxA8VQI4 RDNyqtAsapMSFsGhSn3tx9eddcLqPnuacCHOEvf1CTBKMFp6EINew33C7yGFvsvQNscy Wo233kx96XuWPr150sLxkKgTDl+9/UF2LOmQ5JdZK9AP7znDxc/L4z3d+Tjmp7COsaee wLTY3xu1yqOfTK8+uYkay96BQBsd2T5hEq+Rsw7KaDTL73J7hczLzCQl5vYOMG6m2i78 q/Ag== X-Gm-Message-State: AMke39la15K3vIJhM1DuUeAT0VU8iv+Y5gYCF1AazTxpI0ceYZbvfQOKQvPm+D5hTlJ5MHL2/oLQsWApl9QSgautVC+fqY5P6+9eQIfCs61J2Xx8qbUsHMmUQs/MbElf2dzYb+dDhpIGF14sEKZH X-Received: by 10.25.41.11 with SMTP id p11mr4656303lfp.154.1489155192107; Fri, 10 Mar 2017 06:13:12 -0800 (PST) X-Received: by 10.25.41.11 with SMTP id p11mr4656298lfp.154.1489155191828; Fri, 10 Mar 2017 06:13:11 -0800 (PST) MIME-Version: 1.0 Received: by 10.25.163.204 with HTTP; Fri, 10 Mar 2017 06:13:11 -0800 (PST) In-Reply-To: References: From:Jeremie Dimino Date: Fri, 10 Mar 2017 14:13:11 +0000 Message-ID: To:"caml-list@inria.fr" , "ocaml-core@googlegroups.com" Content-Type: text/plain; charset=UTF-8 X-JS-Processed-by: mailcore Subject: Re: [Caml-list] [ANN] Jbuilder 1.0+beta1 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 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 > ----------------------- > > This will run 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 > ---------------------------------------------- > > This will list all the external library dependencies required to build > , 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 < (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 )= > + =(copy )= > ... > > - 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