Commit Graph

1443 Commits

Author SHA1 Message Date
Rudi Grinberg 7d33cb2275 Select lexer based on dune vs jbuild
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-20 15:38:55 +06:30
Jeremie Dimino 7c5624b448 Add support for declaring when syntactic elements are deleted/removed/renamed
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-06-19 16:26:27 +01:00
Jeremie Dimino 3c15e3d041 Add Sexp.kind
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-06-19 16:26:27 +01:00
Jeremie Dimino 43f274b323 Refactor syntax versioning management
Now, the version of the main language as well as the version of
extensions is passed through the user context of sexp parsers.

Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-06-19 16:26:27 +01:00
Jeremie Dimino 2d1765285a Add Sexp.Of_sexp.capture
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-06-19 16:26:27 +01:00
Jeremie Dimino ff46b30a78 Add Sexp.Of_sexp.set_many
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-06-19 16:26:27 +01:00
Jeremie Dimino aed6513b05 Add Univ_map.superpose
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-06-19 16:26:27 +01:00
Jeremie Dimino 0e6986c2f2 Add Univ_map.singleton
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-06-19 16:26:27 +01:00
Jeremie Dimino 3e2567d2c7 Get rid of the old 'let v1 = ...' names
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-06-19 16:26:00 +01:00
Jeremie Dimino 5d1d3a2eae Pass the project through the user context
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-06-19 16:26:00 +01:00
Jeremie Dimino 0c6edde131 Add a user context to Of_sexp.t
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-06-19 16:26:00 +01:00
Jeremie Dimino 4922faf18a Fix 4.02 build
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-06-19 16:20:28 +01:00
Jérémie Dimino d483768b93
Move universal maps from Fiber to Stdune (#892)
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-06-19 11:32:10 +01:00
Jeremie Dimino 14e6b1e038 Reduce the number of of_sexp_error... functions
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-06-19 11:29:27 +01:00
Jeremie Dimino 30d20d6143 Use a single S-expression parser monad
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-06-19 11:29:27 +01:00
Rudi Grinberg f7b3e8af7d Fix 4.02 compatibility
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-19 11:29:27 +01:00
Rudi Grinberg 065e2bb26f Make Sexp.Of_sexp.t abstract
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-19 11:29:27 +01:00
Rudi Grinberg 63c1703045 Simplify the dune atom char set
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-19 15:41:41 +07:00
Rudi Grinberg 8432ee42cf Separate atom_char for jbuild and dune files
Dune files have a more strict definition of atoms

Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-19 01:14:19 +07:00
Rudi Grinberg 19908abf4d Add '%' back to the atom char set
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-19 00:59:48 +07:00
Rudi Grinberg 5dcefb2e5b Forbid '%' from appearing in atoms
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-18 18:31:56 +07:00
Rudi Grinberg bafb710a5b Remove duplication between Atom.is_valid and should_be_atom
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-18 18:31:56 +07:00
Rudi Grinberg eb148da6ec Use extension parameter in error message
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-15 12:27:02 +07:00
Jérémie Dimino 3c74bf07e8
Use the same monad to parse all list of S-expressions (#882)
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-06-14 08:51:27 +01:00
Etienne Millon 96b01c569c Add link_deps field
In some cases, the linking step requires some dependencies. For example,
passing a version script to the linker. The new `(link_deps)` field
uses the dependency DSL already used in other places.

Closes #852

Signed-off-by: Etienne Millon <etienne@cryptosense.com>
2018-06-13 14:38:47 +02:00
Jeremie Dimino 5d6e919f04 Turn warning about modules being used multiple times into errors
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-06-13 11:51:41 +01:00
Jeremie Dimino de26077d28 Get rid of compatibility symlinks for Dune directories
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-06-13 11:51:41 +01:00
Jeremie Dimino 6abe76c4e7 Get rid of link_executables in dune files (unused)
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-06-13 11:51:41 +01:00
Jeremie Dimino e05c81ac56 Get rid of Jbuild.Provides (unused)
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-06-13 11:51:41 +01:00
Jeremie Dimino 86b130560e Store the project directory in Jbuild.Library.t
There is no risk of confusion about the interpretation of the root
field anymore since it has type Path.Local.t.

Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-06-12 12:09:11 +01:00
Jeremie Dimino f24cf5d110 Make Dune_project.t private
To ensure we can't mutate the mutable fields and that the value is
shared, which is important for the profile_file field for instance.

To make sure we don't confuse the root field for a path in the build
directory, change its type to Path.Local.t.

Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-06-12 12:09:11 +01:00
Jeremie Dimino 250b940c32 Start of support for languages and extensions
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-06-12 12:09:11 +01:00
Jérémie Dimino 8727eb6c3c
Strengthen the lexing of escape sequences (#872)
Things like \a are no longer allowed. Before they would be interpreted
as a literal \a. This will allow to introduce new escape sequences in
the future if needed.

Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-06-11 16:21:31 +01:00
Jérémie Dimino 58a47e4ff8
Set dune language version to 1.0 (#873)
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-06-11 16:17:22 +01:00
Etienne Millon 673397a1b9 Display the installable modes
Signed-off-by: Etienne Millon <etienne@cryptosense.com>
2018-06-07 15:40:45 +02:00
Etienne Millon 9c2e4f14e0 Display an error when no installable mode is found
If an executable is only available as a shared object for example,
Dune cannot install it. In that case, it displays an error message.
However, it is still possible to build a private one explicitly.

Signed-off-by: Etienne Millon <etienne@cryptosense.com>
2018-06-07 15:17:34 +02:00
Rudi Grinberg cbc3464a85
Merge branch 'master' into doc-private 2018-06-07 20:09:41 +07:00
Rudi Grinberg eda3088a49 Move stanzas to toplevel value
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-07 17:59:43 +07:00
Rudi Grinberg 724acc8c7c Allow libraries in a package to reference each other in odocs
This allows for circular dependencies for libraries in the same package

Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-07 17:59:43 +07:00
Rudi Grinberg c842c76036 Rename typ to source
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-07 17:59:43 +07:00
Rudi Grinberg da43480dfc Fix html generation for private libs
private-doc should collect html rather than odoc aliases

Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-07 17:59:43 +07:00
Rudi Grinberg 794b2c696b Remove unused html_alias field
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-07 17:59:43 +07:00
Rudi Grinberg 20d9b509a1 Setup html rules for libraries and not just their parent pacakge
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-07 17:59:43 +07:00
Rudi Grinberg c28bc3d75a Simplify odoc generation
Separate package from html docs

Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-07 17:59:43 +07:00
Rudi Grinberg 8740554ebf Rename to_html to setup_html
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-07 17:59:43 +07:00
Rudi Grinberg acac3e29b3 Do not silently ignore closure errors
cc @diml

Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-07 17:59:43 +07:00
Rudi Grinberg a70ccb6d8b Move types outside of gen functor
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-07 17:59:43 +07:00
Rudi Grinberg 2c424063ab Remove polymorphic variant that is of questionable use
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-07 17:59:43 +07:00
Rudi Grinberg 08c46dff28
Merge branch 'master' into no-private-module-name 2018-06-07 17:51:36 +07:00
Rudi Grinberg bc53047a95
Merge branch 'master' into remove-concat-or-split 2018-06-07 00:13:09 +07:00
Rudi Grinberg 0c048ac0c5 Remove module private type
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-07 00:02:21 +07:00
Rudi Grinberg eff7a24390 Add an intern option to control ordering
There are 2 ways to order interned strings:

* Fast but "random"
* Slow but respects the original order

Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-06 23:48:11 +07:00
Rudi Grinberg 7d8a7e94aa Fix incorrect concatenation for multivalues in quoted context
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-06 23:42:33 +07:00
Rudi Grinberg 6ebff9d388 Move Value.t list functions to Value.L
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-06 23:42:33 +07:00
Rudi Grinberg c96df4dc15 Inline expand_var
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-06 23:42:33 +07:00
Rudi Grinberg 9cc8ff920a Special case t.items = [Text _] and t.items = []
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-06 23:42:33 +07:00
Rudi Grinberg 243f3437f2 implement expand in terms of partial_expand
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-06 23:42:33 +07:00
Rudi Grinberg 774306c396 Remove old usage for Var_expansion in ppx driver
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-06 23:42:33 +07:00
Rudi Grinberg 9221b1ed6c Change echo to be variadic
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-06 23:42:33 +07:00
Rudi Grinberg ff173b98d8 Share quote handling in partial and normal expansion
The partial expansion had a bug in its condition for a 1 element value list.
This fixes the bug by implementing the condition once and for all.

Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-06 23:42:33 +07:00
Rudi Grinberg 589943df60 Simplify String_with_vars
Make it expand only to Value.t since the string only version wasn't really used.
Variable expansions are now Value.t list. Which also gives the flexibility for a
value to expand to a collection of more than 1 value.

Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-06 23:42:33 +07:00
Rudi Grinberg bab65e989d Allow for proper expansoin of vars in super contexts
Multivalues are no longer allowed when unquoted, and paths are no longer
needlessly converted.

Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-06 23:42:33 +07:00
Rudi Grinberg 588129d582 Move Var_expansion to own module
These variables can occur outside actions so such expansions shouldn't live
under Var_expansion.

Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-06 23:42:33 +07:00
Rudi Grinberg cadee0e661 Write explicit interface for Expand_to
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-06 23:42:33 +07:00
Rudi Grinberg eab7c46bdb Add flag to allow/disallow multivalue expansions
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-06 23:42:33 +07:00
Rudi Grinberg 9545d9a854 Add length function to exapnsions
This is useful for an error message that includes the number of items we've
expanded to.

Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-06 23:41:57 +07:00
Rudi Grinberg 731b61b0b9 Improve the error message with invalid strings
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-06 23:41:57 +07:00
Rudi Grinberg 8351fcb466 Move the multivalue error to a function
Since it's used more than once

Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-06 23:41:57 +07:00
Rudi Grinberg bb58cf8599 s/false/true/
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-06 23:41:57 +07:00
Rudi Grinberg c1d6faef79 Remove Concat_or_split
Thie property will now be determined from the context

Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-06 23:41:57 +07:00
Rudi Grinberg b3870f78b1
Merge branch 'master' into path-table 2018-06-06 23:39:36 +07:00
Jérémie Dimino bb7827a7b2
Make the output of Dune deterministic in tests (#855)
When the root is not the cwd, print a relative path for the "Entering
..." line rather than an absolute one.

Signed-off-by: Jeremie Dimino <jdimino@janestreet.com>
2018-06-06 16:25:04 +01:00
Rudi Grinberg 2a85cbe074
Merge branch 'master' into path-table 2018-06-06 22:24:18 +07:00
Jérémie Dimino 0fafebe9be
Fix generation of the ppx key for jbuild directories (#860)
Signed-off-by: Jeremie Dimino <jdimino@janestreet.com>
2018-06-06 16:17:40 +01:00
Rudi Grinberg 6ada532b10 type specialize (=)
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-06 22:15:53 +07:00
Rudi Grinberg 2350bb1161 Use polymorhic equality
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-06 19:23:13 +07:00
Rudi Grinberg d4e8e6dbd4 Change all path indexed tables to Path.Table
This will allow to experiment with faster hashing for paths

Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-06 13:54:24 +07:00
Rudi Grinberg 3ab6be3cc2 Add a functorized hashtable with all the functions we expect to stdune
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-06 13:54:11 +07:00
Rudi Grinberg 3ad4c06f4a Add Path.Table module
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-06 13:28:14 +07:00
Jeremie Dimino ec6ca4be67 Refactor handling of backend selection errors + add tests
Signed-off-by: Jeremie Dimino <jdimino@janestreet.com>
2018-06-05 19:19:10 +01:00
Jeremie Dimino 84f1f9b82b Add a hint for ppx rewriters that are not compatible
Signed-off-by: Jeremie Dimino <jdimino@janestreet.com>
2018-06-05 19:19:10 +01:00
Jeremie Dimino cc5e8443c4 Improve the code for building and installing the compat ppx.exe program
Signed-off-by: Jeremie Dimino <jdimino@janestreet.com>
2018-06-05 19:19:10 +01:00
Jeremie Dimino adcf44942f Add a warning for with_lib_deps
I just spent an hour debugging a stupid bug caused by this...

Signed-off-by: Jeremie Dimino <jdimino@janestreet.com>
2018-06-05 19:19:10 +01:00
Jeremie Dimino b5dfb826ef Restore old ppx behavior for directories with jbuild files
Signed-off-by: Jeremie Dimino <jdimino@janestreet.com>
2018-06-05 19:19:10 +01:00
Jeremie Dimino ed583b7651 Add List.assoc
Signed-off-by: Jeremie Dimino <jdimino@janestreet.com>
2018-06-05 19:19:10 +01:00
Jeremie Dimino b35fbbd7b2 Abstract the ppx driver system
- remove hard-coded knowledge of ocaml-migrate-parsetree and ppx_driver
- get the exact driver parameters directly from the driver itself

Signed-off-by: Jeremie Dimino <jdimino@janestreet.com>
2018-06-05 19:19:10 +01:00
Jérémie Dimino 9358bd5d64
Make Module.t private and add Module.make (#853)
Signed-off-by: Jeremie Dimino <jdimino@janestreet.com>
2018-06-05 18:38:27 +01:00
Jeremie Dimino 5b01ed8246 Add support for block strings
Signed-off-by: Jeremie Dimino <jdimino@janestreet.com>
2018-06-04 13:57:27 +01:00
Jeremie Dimino b7afc006ee Drop support block and sexp comments in Dune files
They are almost never used and they complicate the language. The
parsing of jbuild files in unchanged.

Signed-off-by: Jeremie Dimino <jdimino@janestreet.com>
2018-06-04 13:57:27 +01:00
Rudi Grinberg be7e3d6dfc Implement --build-dir and change Path.t to use symbolic paths
The motivation for this change is implement the --build-dir feature. This
feature lets us control the build directory which previously always defaulted to
_build. To accomplish this, Path.t had to be modified to be:

External of External.t | In_source_tree of Local.t | In_build_dir of Local.t

To represent the 3 kinds of paths dune is dealing with. The In_build_dir
constructor in particular, is relative to Path.root or some external path.

A few other refactorings had to be done to support this transition:

* The workspace is now "settable". This means that we no longer have to pass it
  explicitly when converting local to absolute paths.

* Path.is_local no longer makes sense and is renamed to Path.is_managed.
  Roughly, is_managed identifies paths in the build and source directories.

* Path.absoulte has been renamed of_filename_relative_to_initial_cwd

* Path.Local.root is now "." (as opposed to "")

Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-02 18:14:44 +07:00
Rudi Grinberg 93070c9a4d
Merge pull request #833 from rgrinberg/return-expand
Change return type of string expansions
2018-06-02 12:22:31 +07:00
Rudi Grinberg 52d0f3f552 Change return values of SW expansions
The nested either types obscure the meaning of the return values

Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-02 12:11:08 +07:00
Etienne Millon e45e431588 Fix error message when no package is defined (#836)
Closes #830

Signed-off-by: Etienne Millon <etienne@cryptosense.com>
2018-06-01 14:25:35 +01:00
Rudi Grinberg 576ff5293e Re-indent string_with_vars with ocp-indent
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-01 19:48:19 +07:00
Jeremie Dimino f0e448dc36 Strengthen the parsing of the (lang ...) line
It now has to be the first line of the dune-project file and the
lexical conventions are stricter than the rest of the syntax.

This will allow making changes to the lexical conventions of the
language in the future.

Signed-off-by: Jeremie Dimino <jdimino@janestreet.com>
2018-06-01 08:42:45 +01:00
Jeremie Dimino 39e74826f4 Simplify the parser
Replace the current generated parser by an ocamllex lexer + a simple
parser.

The new code is:
- much simpler and smaller
- shouldn't cause ocamlopt to stack overflow anymore on BSD systems
- slightly slower but not that much

Signed-off-by: Jeremie Dimino <jdimino@janestreet.com>
2018-06-01 08:42:45 +01:00
Rudi Grinberg 2e86529ece
Merge branch 'master' into little-cleanups 2018-06-01 02:37:09 +07:00
Rudi Grinberg f07dff5696
Merge branch 'master' into sexpable 2018-06-01 02:33:54 +07:00
Rudi Grinberg f9a215921b Wait for deps and sdeps at once
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-06-01 01:28:14 +07:00
Etienne Millon e97d0c5ad6 Rename Path.readdir to Path.readdir_unsorted (#828)
As `Sys.readdir`, it returns entries in an nondeterministic order.
This can cause problems if caller relies on the list being sorted.

See #820.

Signed-off-by: Etienne Millon <etienne@cryptosense.com>
2018-05-31 14:52:10 +01:00
Rudi Grinberg 5bfacf766a Move sexpable signature to Stdune.Sexp
Also tweak Syntax.Version to match this signature

Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-05-31 13:17:52 +07:00
Rudi Grinberg 03c5ffb805
Merge branch 'master' into merlin-fix 2018-05-30 21:51:58 +07:00
Etienne Millon 29f711985d Make "path already scanned" message deterministic (#820)
When a symlink loop is detected, the following message is printed:

> Path X has already been scanned. Cannot scan it again through symlink Y

However, the actual symlink that is displayed depends on the order in
with `readdir` outputs the contents (which depends on FS internals).

This sorts the directory list so that the message is deterministic.

It can be tested by adding for example a `List.rev` call after
`Path.readdir`: the affected version will return a different version in
the `github764` test.

Signed-off-by: Etienne Millon <etienne@cryptosense.com>
2018-05-30 12:57:23 +01:00
Jérémie Dimino 171c22614d
Use Marshal for the incremental and digest databases (#817)
Signed-off-by: Jeremie Dimino <jdimino@janestreet.com>
2018-05-30 11:54:04 +01:00
Rudi Grinberg 0d3bdf34fc Small cleanup of merlin generation
Use the the known src/obj dirs as the initial value for accumulation

Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-05-30 14:41:56 +07:00
Rudi Grinberg 8f16afe293 Fix merlin generation
The optional build contexts were being dropped from the obj dirs instead of the
source dirs.

Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-05-30 14:39:47 +07:00
Rudi Grinberg 85e4b13780 Change Paths_glob to return a set of paths
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-05-29 02:24:52 +07:00
Jeremie Dimino d2b66279f6 Use Sys.{win32,cygwin} rather than Sys.os_type
The former functions are optimized away while the latter isn't.

Signed-off-by: Jeremie Dimino <jdimino@janestreet.com>
2018-05-28 17:02:51 +01:00
Jeremie Dimino 547998d6c6 Fix an issue when a file is part of several packages
Signed-off-by: Jeremie Dimino <jdimino@janestreet.com>
2018-05-28 13:47:55 +01:00
Rudi Grinberg 2b7ee377af
Merge branch 'master' into no-interning 2018-05-28 19:18:21 +07:00
Rudi Grinberg 665c251678
Merge branch 'master' into remove-path-set-conversion 2018-05-28 18:38:04 +07:00
Rudi Grinberg 4a0e5a76af Remove more Path <-> List conversion in rules_for_files
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-05-28 18:04:48 +07:00
Rudi Grinberg 836b27ae2b Remove an extra conversion in rules_for_files
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-05-28 17:52:05 +07:00
Rudi Grinberg da8064893c Add No_interning module for easy experimentation
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-05-28 14:51:37 +07:00
Rudi Grinberg 2bb9895817 Make explode_path work in 1 pass
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-05-28 14:38:35 +07:00
Rudi Grinberg da469e66f0 Fix explode_path to work on absolute paths
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-05-28 14:36:40 +07:00
Rudi Grinberg 7b824febf3
Merge branch 'master' into suffix-prefix-fast 2018-05-28 14:30:53 +07:00
Rudi Grinberg fe9e6fb8c9
Make Interned generative again (#808)
I accidentally removed this in the last PR. I think it should probably be brought back.

Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-05-28 14:18:10 +07:00
Rudi Grinberg 6f3467ad96
Merge branch 'master' into suffix-prefix-fast 2018-05-28 14:16:13 +07:00
Jeremie Dimino b31d281949 Add Module_compilation.ocamlc_i
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-05-28 08:10:12 +01:00
Jeremie Dimino 3bd9addeb2 Use Compilation_context in menhir
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-05-28 08:10:12 +01:00
Jeremie Dimino c9ead23c7d Add Compilation_context
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-05-28 08:10:12 +01:00
Jeremie Dimino 69af40dced Compute includes outside of build_modules
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-05-28 08:10:12 +01:00
Jeremie Dimino 634cd25b1b Allow to compute the deps of an auxiliary module
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-05-28 08:10:12 +01:00
Jeremie Dimino cc7bd5ebb1 Allow modules to be only preprocessed and not linted
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-05-28 08:10:12 +01:00
Jeremie Dimino ac1c407cab Split Preproressing.pp_and... in two functions
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-05-28 08:10:12 +01:00
Jeremie Dimino 5c4027aff8 Re-work the code to handle (include ...)
Signed-off-by: Jeremie Dimino <jdimino@janestreet.com>
2018-05-28 07:59:05 +01:00
Jeremie Dimino d211272d24 Ignore jbuild_version stanzas
These are no longer necessary as they are super-seeded by (lang
...) stanzas in dune-project files

Signed-off-by: Jeremie Dimino <jdimino@janestreet.com>
2018-05-28 07:59:05 +01:00
Jeremie Dimino cb6baa6c96 Make Stanza.t an open type
Signed-off-by: Jeremie Dimino <jdimino@janestreet.com>
2018-05-28 07:59:05 +01:00
Rudi Grinberg 89b0e397f7 Check suffix and prefix without allocation
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-05-27 01:23:55 +07:00
Rudi Grinberg e5f873da15 Make Interned generative again
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-05-26 17:14:00 +07:00
Rudi Grinberg 88e71c3432
Speed up merlin generation (#805)
Improve merlin generation by minimizing intermediate strings and reusing a buffer.
2018-05-26 11:04:21 +07:00
Rudi Grinberg 15ce5211b8
Merge branch 'master' into remove-extra-conversion 2018-05-25 19:17:38 +07:00
Rudi Grinberg f0e0bf5156 Remove extra set to list conversion
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-05-25 12:06:22 +07:00
Jérémie Dimino 459d17fc13
Merge branch 'master' into odoc-master-titles 2018-05-24 17:37:28 +01:00
Rudi Grinberg d3edc454ac Add initial size to interned
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-05-24 20:51:12 +07:00
Rudi Grinberg cbf2727209 Add a resizing policy for Interned
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-05-24 20:22:13 +07:00
Rudi Grinberg 1aa6209584 Move interned to stdune
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-05-24 18:23:02 +07:00
Rudi Grinberg 274bb70994 Move fmt to stdune
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-05-24 18:22:55 +07:00
Rudi Grinberg 6b130e809c Move int sets and maps to stdune
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-05-24 18:22:36 +07:00
Rudi Grinberg f838c89d74 Remove aliases of Path.{Set,Map}
They save very little in terms of typing but grepping harder than it should be

Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-05-24 17:34:32 +07:00
Rudi Grinberg 8e8cda01b2 Replace dyn_paths with dyn_path_set
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-05-24 14:56:39 +07:00
Rudi Grinberg d600db2158 Change Build_job to be set
The elements are unique and the order isn't well defined anyway

Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
2018-05-24 10:44:47 +07:00
Jeremie Dimino 48cd886bfc Simplify the API for inlined records in constructors 2018-05-23 14:24:41 +01:00
Jeremie Dimino b48b1a168b Simplify the API for capturing the location of constructors 2018-05-23 14:24:41 +01:00
Jeremie Dimino d22eebf5a1 Simplify the API for parsing remaining arguments of constructors 2018-05-23 14:24:41 +01:00
Anil Madhavapeddy b2dd904847 odoc: make indexes work with the development version of odoc
We now generate library titles at level 2 instead of level 1,
and remove trailing fullstop after the `modules` entry.

The development branch of odoc has a more precise parser that
enforces that there is only a single title level field in the
generated odoc.

Closes #791

Signed-off-by: Anil Madhavapeddy <anil@recoil.org>
2018-05-23 10:59:19 +01:00
Rudi Grinberg dc254638e3
Merge pull request #780 from ocaml/dup-fields
Allow to define that can appear multiple times
2018-05-21 00:13:58 +07:00
Rudi Grinberg 3548e2f6d4
Merge pull request #777 from rgrinberg/spec-reach-for-running
Add tests for reach_for_running
2018-05-20 23:57:40 +07:00
Rudi Grinberg fc7d2fef21 Use reach_for_running consistently
Also change the default from to Path.root
2018-05-20 20:48:32 +07:00
Rudi Grinberg a6f2b5be9b Fix exception to be friendly when loc is available
When the loc is available, the error is likely because of an ill-defined user
rule. We should simply reflect the location back to the user.
2018-05-20 13:22:59 +07:00
Rudi Grinberg 9a62e70471 Fix command line printing for errors 2018-05-19 18:11:31 +07:00
Jeremie Dimino cae4948b72 Allow fields that can appear multiple times 2018-05-19 10:14:50 +01:00
Rudi Grinberg 8e72a3a951 Use Path.root as the default 2018-05-17 22:58:21 +07:00
Jeremie Dimino 9d3117d63e Fix bug exposed by previous commit 2018-05-17 15:48:19 +01:00
Rudi Grinberg 8cea102d3c Fix type of Path.reach_for_running
It should return a string rather than a path. Also, make Process.run use it
rather than relying on the caller to do it.
2018-05-17 20:23:48 +07:00
Jérémie Dimino ac8bffc1f3
Get rid of Jbuild.Scope_info and use Dune_project instead (#776) 2018-05-16 16:21:08 +01:00
Rudi Grinberg da827f7946
Merge pull request #769 from rgrinberg/fix-764
Detect circular sym links
2018-05-16 21:58:22 +07:00
Jeremie Dimino 2192a549f4 Use dev/inode to detect loops 2018-05-16 14:23:01 +01:00
Jérémie Dimino 95d9cf0415
Refactor Jbuild.Scope_info.Name and Dune_project.name (#775) 2018-05-15 14:07:02 +01:00
Rudi Grinberg ac078fcdbb add cycle and max depth to symlink following 2018-05-15 19:29:20 +07:00
Rudi Grinberg 540a22315b Refactor symlink following
Correctly resolve relative symlinks and add better error handling. Also move the
logic to the path module.
2018-05-15 17:33:51 +07:00
Rudi Grinberg 7580b8e16f Detect circular sym links
Fix #764
2018-05-15 17:33:27 +07:00
Jérémie Dimino 60c7f6fde4
Collect projects in the file tree directly (#774) 2018-05-15 09:46:07 +01:00
François Pottier d444aeefea Cleanup of [src/menhir.ml]. (#770)
This is purely for the sake of readability;
there should be no change in functionality.
Code is now shared between the case where [--base]
is used and the case where it isn't.
2018-05-14 13:07:48 +01:00
Jeremie Dimino 76ab05d620 Use Utils.executable_object_directory instead of inlining it in gen_rules.ml 2018-05-14 13:06:32 +01:00
Jérémie Dimino bc19e14b35
Add ignored_subdirs stanza (#767) 2018-05-12 15:38:22 +02:00
Rudi Grinberg 3a8e4cf54d Fix off by 1 in Path.is_descendant 2018-05-11 10:30:21 +07:00
Rudi Grinberg a57013c3f3 Add check for relative path in Local.relative
this is to prevent an infinite loop in explode_path
2018-05-11 09:37:39 +07:00
Jeremie Dimino bffd5407ce Fix #734 2018-05-10 11:31:39 +01:00
Jeremie Dimino ef7a5519aa Fix #761 2018-05-10 11:27:56 +01:00
Jeremie Dimino 7c1e1923a0 Fix #759 2018-05-09 16:32:35 +01:00
Rudi Grinberg f7f22cbf52 Make Path.parent return option
Use _exn whenever we know the parent exists
2018-05-09 17:56:50 +07:00
Rudi Grinberg 7e9be66e6f Don't check if path is root directly 2018-05-09 17:54:52 +07:00
Rudi Grinberg 28f451f33c
Merge pull request #757 from rgrinberg/path-refactors
Path refactorings.
2018-05-09 17:53:56 +07:00
Rudi Grinberg ad4bc43a9f
Merge pull request #755 from rgrinberg/rm-rf-safety
Rm -rf safety
2018-05-09 17:45:06 +07:00
Rudi Grinberg c563fc1db8 Re-implement many path functions using kind
This will make it easier to port them to symbolic paths as this check is also
necessary there.
2018-05-09 17:33:05 +07:00
Rudi Grinberg 92b351de30 Small refactoring to call Path.absolute one less time 2018-05-09 17:32:36 +07:00
Rudi Grinberg 46d74e1a96 Implement Path.explode_exn in terms of Path.explode 2018-05-09 17:32:33 +07:00
Rudi Grinberg 65385bbaa4 Remove Path.drop_prefix
not used anywhere
2018-05-09 17:29:19 +07:00
Rudi Grinberg 47d54854e4 Safety feature for Path.rm_rf 2018-05-09 17:11:09 +07:00
Jérémie Dimino 5ac3acf195
Add File_tree.Dir.dune_file (#749) 2018-05-09 09:18:01 +01:00
Rudi Grinberg 78612e0649 Move of_user_written_path to Alias0.T
This is done to avoid double check of the path being in build dir
2018-05-09 08:10:41 +07:00
Rudi Grinberg 8eba040b92 Rename Alias.of_path to Alias.of_user_written_path
And add a loc argument for correct error messages
2018-05-09 08:05:57 +07:00
Rudi Grinberg 84831308f0 Make sure that Alias0.dir always goes through dir check
the directory must always be inside the build dir, so we make sure that any way
to create the record validates this invariant
2018-05-09 08:05:57 +07:00
Rudi Grinberg 0f648f1387 Make sure Alias0.dir is always in the build_dir 2018-05-09 08:05:57 +07:00
Rudi Grinberg 4c7a78e5d6 Pass some missing loc's when using Path.relative 2018-05-09 08:01:57 +07:00
Jérémie Dimino e6650a322f
Better error message for #745 (#748) 2018-05-08 16:28:50 +01:00
Rudi Grinberg 0f8dcc5848 Change Path.insert_after_build_dir_exn not to hard code _build
Use the build_dir variable rather than the "_build" string and treat the case
Path.build_dir argument differently. Previously this would error:

Path.insert_after_build_dir_exn Path.build_dir "foo"

Now, it will return _build/foo
2018-05-08 18:55:19 +07:00
Jérémie Dimino 4d8ca489be
Add support for environment & build profiles (#419) 2018-05-04 16:49:25 +01:00
Jeremie Dimino dc0a6d4401 Rename all jbuild files 2018-05-04 12:26:26 +01:00
Jeremie Dimino 70abc5544d Add support for dune files 2018-05-04 12:26:26 +01:00
Jeremie Dimino cb4e167232 Get rid of jbuild_file_in
This function will be wrong once we support both dune and jbuild
files. Use more precise locations instead.
2018-05-03 13:54:47 +01:00
Jeremie Dimino db91543e3f Support version stanzas in dune-project files 2018-05-03 11:07:45 +01:00
Jeremie Dimino 8d4e1904a2 Refactor dune-project parsing 2018-05-03 11:07:45 +01:00
Rudi Grinberg 25c34c222c Remove all hard coded uses of "_build"
Always route these cases through Path.build_dir
2018-05-02 22:38:50 +07:00
Jérémie Dimino 325584adfc
Renaming to Dune (#721)
- install two identical binaries: jbuilder and dune
- rename the man pages to dune-*
- change the name in man pages
- change the name of libraries
- add support for dune-project files and add a dune-project file
- add support for dune-workspace files
- start updating the manual
- update the tests
2018-05-02 12:56:12 +01:00
Jérémie Dimino b54c438fda
Scan the file-system lazily (#732)
Fix #228
Fix #718
2018-05-01 16:55:31 +01:00
Rudi Grinberg 5f237e3a4d Add pretty printers to Findlib.Conf.t 2018-05-01 19:37:51 +07:00
Rudi Grinberg ec3a3bf673 Remove interpret' 2018-05-01 18:50:51 +07:00
Rudi Grinberg 3e9bc8c0c3 Allow setting ENV vars in findlib.conf per toolchain
This is useful for configuring PKG CONFIG for cross compilation
2018-05-01 00:13:50 +07:00
Rudi Grinberg 7b17fa013f Fix #717
Extensions should be removed from the map of basenames to mld paths
2018-04-29 00:52:29 +07:00
Jérémie Dimino 53202d0a09
Make -j default to the number of CPUs (#726) 2018-04-26 16:10:14 +01:00
Rudi Grinberg 4240c632b4
Merge pull request #722 from rgrinberg/path-everywhere
Use Path where Possible
2018-04-25 21:21:37 +07:00
Jérémie Dimino 2af69cb303
Make sure all_lib_deps_by_context doesn't report invalid contexts (#723) 2018-04-25 15:04:57 +01:00
Rudi Grinberg a1835c7fa0 s/relative_build_dir/relative_to_build_dir/ 2018-04-25 20:16:19 +07:00
Rudi Grinberg f44b8bdb1b Unhardcode _build dir everywhere 2018-04-25 18:22:48 +07:00
Rudi Grinberg 4b2a609396 Ignore Sys_error in Path.exists 2018-04-25 18:12:45 +07:00
Rudi Grinberg 62aa5acab3 Remove some path conversion from Action 2018-04-25 16:37:38 +07:00
Rudi Grinberg 63af8747a7 Change std_output_to and opened_file to use Path.t 2018-04-25 16:33:25 +07:00
Rudi Grinberg b02c61f63c Change the prog arg in Process to Path.t 2018-04-25 16:30:18 +07:00
Rudi Grinberg 729e85716c Port tmp files to use Path.t 2018-04-25 16:23:47 +07:00
Rudi Grinberg e310f17237 Get rid of Path.is_file 2018-04-25 16:18:32 +07:00
Rudi Grinberg 5eb444e357 Change Process.run's ~dir argument to use Path.t
This also requires Scheduler.with_chdir to use Path.t as well
2018-04-25 13:25:07 +07:00
Rudi Grinberg 7820e29d28 Port Io to use Path.t 2018-04-25 03:25:27 +07:00
Rudi Grinberg 79e434c658 Move sexp's io functions to Io.Sexp
to avoid circular dependencies when adding Path.t to Io
2018-04-24 23:21:42 +07:00
Rudi Grinberg 0d76abca91 Move ocaml-syntax related stuff to jbuild_load
This stuff is too specific to parsing jbuild files to be in stdune
2018-04-24 23:17:53 +07:00
Jérémie Dimino 239ff0054e
Remove jbuilder_ prefix for vendored libraries (#720)
It's not useful since we are not installing them. Also unwrap
libraries that are unwrapped upstream.
2018-04-24 14:38:30 +01:00
Rudi Grinberg 6aa1b84fee Move Path to Stdune
* This requires moving Fatal_error and Loc_error to Stdune.Exn as well

* Clflags.workspace_root can no longer be used in Path.to_absolute_filename. We
  just take a parameter instead for now.
2018-04-24 19:33:40 +07:00
Rudi Grinberg bfd0f2eada Fix 4.02.3 build 2018-04-24 10:10:01 +07:00
Rudi Grinberg 10c01ac741 Move Sexp to stdune
In the process, change all the Loc.fail's to Of_sexp exceptions
2018-04-24 01:47:54 +07:00
Rudi Grinberg 77af5b3a88 Add Usexp.Loc.in_file
Moved from Loc
2018-04-24 01:46:57 +07:00
Rudi Grinberg 03e439e449 Decouple sexp from Import 2018-04-24 00:17:58 +07:00
Rudi Grinberg 5147de3873 Decouple hint handling in sexp parser from Import 2018-04-24 00:17:19 +07:00
Rudi Grinberg 6dee7c9c39 Remove dependence on Improt in Path 2018-04-23 23:53:54 +07:00
Rudi Grinberg 980f5037cc Move maybe_quoted to string module 2018-04-23 23:51:22 +07:00
Rudi Grinberg 9aa827ac35 Replace all code_errorf with code_error 2018-04-23 23:48:24 +07:00
Rudi Grinberg 59eda906b0 Convert locs to sexps
Done in a crappy way for now because the converters haven't yet made it to Usexp
2018-04-23 23:47:55 +07:00
Rudi Grinberg 24041593da Move Code_error to Stdune.Exn
This exception is useful outside of jbuilder
2018-04-23 14:04:15 +07:00
Rudi Grinberg 98b2ea795c Move String_map to stdune 2018-04-23 12:43:20 +07:00
Rudi Grinberg 530dbfeb81 Move String_set to stdune 2018-04-23 12:08:09 +07:00
Jeremie Dimino 13b770962d Remove the ?extra_targets argument of Build.run
Instead, use Hidden_targets
2018-04-18 17:00:11 +01:00
Jeremie Dimino bd7f793792 Add Arg_spec.Hidden_targets
Same as Hidden_deps: allows to declare targets than don't appear on
the command line.
2018-04-18 17:00:11 +01:00
Rudi Grinberg 3e1495e47e Add entry module for configurator
Only expose the public api (v1) in it
2018-04-17 22:25:45 +07:00
Rudi Grinberg 1d33f81298 Extract #define's using @whitequark's hack 2018-04-17 22:25:45 +07:00
Rudi Grinberg e0d7570752 Do not run compiled programs to extract #define's
Running a program to extract a #define value doesn't work in a cross compilation
environment. Nevertheless, we can extract #define constants by invoking the
preprocessor directly using the -E flag and doing some parsing to extract
values.

As a consequence, we now ignore the link_flags argument. As we're not going to
be linking any executables. We aren't removing the argument altogether since
it's technically a breaking change. The user will instead see a deprecation
warning when ~link_flags is provided.
2018-04-17 22:24:40 +07:00
Rudi Grinberg 5a89767184
Merge pull request #707 from Chris00/master
Add Configurator.V1.write_as_sexp
2018-04-17 22:20:55 +07:00
Etienne Millon 1dbf960d41 Skip alias modules in the map 2018-04-17 15:51:29 +01:00
Etienne Millon ec9ff813ad Fallback to implementation if there is no mli 2018-04-17 15:51:29 +01:00
Etienne Millon 40624e744b Build transitive dependencies with ocamldep
This uses two different extensions:

- `.d` corresponds to the raw `ocamldep` output.
- `.all-deps` corresponds to this output, merged with the dependencies
of all the interfaces mentioned in the earlier.

This also means that `.all-deps` files will contain output from multiple
files.
2018-04-17 15:51:29 +01:00
Christophe Troestler 7e1b521d7b Add Configurator.V1.write_flags
See https://github.com/ocaml/dune/pull/696/files#r181721525
2018-04-17 16:07:38 +02:00
Rudi Grinberg 9414913286 Add test to make sure that ${null} isn't a target 2018-04-17 10:58:53 +07:00
Rudi Grinberg 69b76f0c8e Add ?prelude argument when import constants
A user can now define their own macros to use with extracting compile time info
2018-04-17 00:26:23 +07:00
Rudi Grinberg 75bc824f97 Get rid of the -ocamlc arg altogether 2018-04-12 18:05:40 +07:00
Rudi Grinberg 86e4df847b Warn the user when DUNE_CONFIGURATOR is overwritten with -ocamlc 2018-04-12 00:16:36 +07:00
Rudi Grinberg 22576fac7e Fix compatibility for ocaml without Sys.getenv_opt 2018-04-11 22:37:25 +07:00
Rudi Grinberg d65845abb8 Pass ocamlc explicitly to configurator using DUNE_CONFIGURATOR 2018-04-11 21:26:51 +07:00
Rudi Grinberg a3a9a1c719 Move current configurator API to V1 module 2018-04-11 09:43:37 +07:00
Rudi Grinberg bd52821556 Mark internal (unstable) libraries as such
Add an internal description in the synopsis and also a comment in the ocamldoc
2018-04-10 23:02:14 +07:00
Rudi Grinberg e832b7230d Add public_name's to all dune sub libraries
These will all live under the jbuilder package
2018-04-10 22:05:52 +07:00
Rudi Grinberg 0bbbf5320f
Merge pull request #686 from rgrinberg/remove-has-dot-merlin
Remove ~has_dot_merlin flag
2018-04-10 20:07:06 +07:00
Rudi Grinberg 62bbd5d30e
Merge pull request #671 from rgrinberg/pr/653
Cosmetic changes for default package entry point.
2018-04-10 20:04:28 +07:00
Rudi Grinberg c5633c9c34 Fix indentation 2018-04-10 11:51:04 +07:00
Rudi Grinberg 9acf617563 Remove ~has_dot_merlin flag
it was introduced to avoid generaitng a needless .merlin file for utop levels.
But now that we have a better mechanism for that, it serves no purpose.
2018-04-10 02:01:33 +07:00
Jeremie Dimino 3c7672c696 Report the ppx runtime deps as external dependencies 2018-04-09 06:31:52 +08:00
Jeremie Dimino 22b024a977 More hacks for external-lib-deps
Fix #644
2018-04-09 06:31:52 +08:00
Jeremie Dimino 1215fe2f8a Remove unused Lib.Compile.make 2018-04-09 06:31:52 +08:00
Jeremie Dimino 0104309f25 Use Arg_spec.Hidden_deps 2018-04-09 06:31:52 +08:00
Jeremie Dimino 85c8fff7f5 Add Arg_spec.Hidden_deps 2018-04-09 06:31:52 +08:00
Jeremie Dimino 606ad1b10f Pass around library dependencies as static values
This way we know more of the compilation DAG statically. This helps
for parallelism as well as for `jbuilder external-lib-deps`
2018-04-09 06:31:52 +08:00
Jeremie Dimino 9e75552c6b Add Cm_kind.Dict.make_all 2018-04-09 05:59:12 +08:00
Jeremie Dimino 9b1adee13c Record library dependencies using Build.prefix_rules 2018-04-09 05:59:12 +08:00
Jeremie Dimino 950a37b1ad Generate select rules explicitely in gen_rules 2018-04-09 05:59:12 +08:00
Jeremie Dimino 75269117cd Use static requires in merlin 2018-04-09 05:59:12 +08:00
Rudi Grinberg c0c69b44db Update configurator to use Exn.raise_with_backtrace 2018-04-06 23:34:02 +08:00
Rudi Grinberg 52a3833e0e Add Exn.raise_with_backtrace 2018-04-06 22:26:49 +08:00
Rudi Grinberg 10c5447608 Print backtrace in case of uncaught exception
Otherwise uncaught by configurator are hard to debug
2018-04-06 21:26:15 +08:00
Rudi Grinberg 6688144a74 Add Char module to stdune 2018-04-06 11:51:03 +08:00
Rudi Grinberg 41047e36d1
Merge pull request #677 from rgrinberg/4.02.3-configurator-fixes
4.02.3 configurator fixes
2018-04-06 10:23:27 +08:00
Rudi Grinberg f19d5c69ee Add Char compatibility module for 4.02.3
This is needed for configurator
2018-04-05 23:35:45 +08:00
Rudi Grinberg 9f9a770b13 Disable warning 50 for configurator on 4.02.3 2018-04-05 23:35:22 +08:00
Rudi Grinberg 651d12df5d Implement manual printers for Meta type 2018-04-05 23:02:57 +08:00
Rudi Grinberg 4314dd7db3 Add some primitives to make writing formatters easier
* ocaml_list
* quoted
* const
* record
2018-04-05 23:02:25 +08:00
Jeremie Dimino a1812fccd5 Add INSIDE_DUNE to detect when we are running from unside Dune
And use the following defaults: -j 1 --root . --display quiet
2018-04-03 11:43:07 +08:00
Jeremie Dimino 31858c9680 Don't on side-effects for setting up the environment
Instead of making sure we set global variables and call Unix.putenv in
the right order, pass the environment explicitely everywhere.
2018-04-03 11:43:07 +08:00
Thomas Refis 77c717b9af Cosmetic changes for default package entry point. 2018-04-03 00:54:30 +08:00
Anton Bachin f29ff0945d Place module list on its own line (take 2)
See eb05f4f643 and
https://github.com/ocaml/dune/pull/367#issuecomment-352209790.
2018-04-03 00:13:36 +08:00
Rudi Grinberg ff211b18a7 Fix lazy loading of rules
We must load package rules when a file in the _mld dir is requested
2018-04-02 23:15:56 +08:00
Rudi Grinberg 85d69b8e1a Remove Odoc.pkg_odoc
This function is only used once
2018-04-02 19:47:13 +08:00
Jeremie Dimino 01fab4c1c3 Add Stdune.Or_exn 2018-03-30 16:55:44 -04:00
Jeremie Dimino ba439b534d Fix previous commit 2018-03-30 16:47:29 -04:00
Jeremie Dimino cd2cfb44e8 Register a few more dependencies statically
This is needed for "external-lib-deps" and it improves parallelism.
2018-03-30 13:16:23 -04:00
Jeremie Dimino 341de6e50f Fix check for empty libraries 2018-03-30 11:22:53 -04:00
Jeremie Dimino e65213e303 Fix Main.external_lib_deps 2018-03-29 15:33:18 -04:00
Jeremie Dimino c7b9c2cd3e Fix #661: better error when a public library is defined twice 2018-03-29 15:04:14 -04:00
Jeremie Dimino ad00c1509f Fix #657 2018-03-27 17:25:25 -04:00
David Allsopp 808644533f Don't color the whitespace in --display=short 2018-03-24 12:25:27 +00:00
Rudi Grinberg 8fd04e5a9f Use doc_dir rather than dir
dir is the source directory which is useless to us
2018-03-24 00:54:33 +08:00
Rudi Grinberg aea0131b11 Don't pass library include flags to odoc
We should pass directories where we store .odoc files instead
2018-03-24 00:38:34 +08:00
Rudi Grinberg 141e979611
Merge pull request #649 from rgrinberg/PATH-x
Set the target's PATH when cross compiling
2018-03-24 00:13:53 +08:00
Rudi Grinberg 8859a644e9 When executing in the target, use the host's PATH variable 2018-03-23 22:39:06 +08:00
Rudi Grinberg fae5e78fc2 Change Meta.load to return the simplified meta
It's always simplified anyway
2018-03-23 10:12:34 +08:00
Rudi Grinberg 9f3eb956d3 Add Env.update 2018-03-22 22:42:42 +08:00
Rudi Grinberg a83c15b085 Alphabetical listings in odoc
List sub libraries and their modules in alphabetical order
2018-03-22 20:40:46 +08:00
Rudi Grinberg f8225b1e7b Replace blank c compilers with dummy values
This is how we treat the assembler.
2018-03-22 00:03:35 +08:00
Rudi Grinberg 96222ee681 Don't error out when asm is a blank value
Treat it as missing instead
2018-03-22 00:03:35 +08:00
Rudi Grinberg 994fb12651 Tweak order in Map.of_list error (#645)
We should show the key that came earlier in the list first
2018-03-20 14:08:02 -04:00
Rudi Grinberg d2c85e3329 Use dummy value for asm when absent
On bytecode only systems, this parameter may be absent. We use a dummy in such
situations. A dummy value is used so that users do not get immediate erros when
using an absent value.
2018-03-21 00:53:37 +08:00
Jérémie Dimino f5f151dc19
Inspect OCAMLPATH when not using `ocamlfind` (#642) 2018-03-20 12:43:51 -04:00
Rudi Grinberg cc02277095 Handle duplicate environment variables
Fixes #638
2018-03-20 22:02:49 +08:00
Rudi Grinberg 2e636ef43e
Merge pull request #636 from ocaml/fix-path-sep-on-cygwin
Use ; as path separator for OCAMLPATH on Cygwin
2018-03-20 09:22:54 +08:00
Jérémie Dimino a8072f08bc
Rework the sub system select (#632)
Split the select_backends between two functions:
- one for backends that support extensions
- one for backends that support replacement

it might be possible to support both at once, but for now this is
enough and it's simpler.
2018-03-19 20:47:51 -04:00
Jeremie Dimino fae09828af Use ; as path separator for OCAMLPATH on Cygwin
Since this is what ocamlfind expects
2018-03-19 19:25:50 -04:00
Jérémie Dimino 3f22d9f82b
Do not pass -runtime-variant _pic on Windows (#635) 2018-03-19 19:13:02 -04:00
Jeremie Dimino 53ec04adfe fix 2018-03-18 16:32:20 -04:00
Jeremie Dimino bdb03925d1 Add Lib.Compile.compile_and_link_flags 2018-03-18 16:22:56 -04:00
Jeremie Dimino 945583ff43 Add Arg_spec.of_result{,_map} 2018-03-18 16:22:05 -04:00
Jeremie Dimino 09ff33951b Change the type of Build.of_result and add Build.of_result_map 2018-03-18 16:21:59 -04:00
Jeremie Dimino 997d541c50 Make Top_closure more polymorphic 2018-03-18 16:21:46 -04:00
Jeremie Dimino e638c04cb2 Add Jbuild.Lib_deps.of_pps 2018-03-18 16:20:32 -04:00
Jeremie Dimino d15974c4ea Add Option.some 2018-03-18 16:20:19 -04:00
Jeremie Dimino 2c59032181 A file might be part of several packages 2018-03-19 01:24:17 +08:00
Jeremie Dimino c685e8ac6d Remove useless load_dir 2018-03-19 01:24:04 +08:00
Jeremie Dimino b5fad14f16 Less Path.Set.t -> Path.t list conversions 2018-03-19 01:19:41 +08:00
Jeremie Dimino 30c59cc476 Use dynamic dependencies for the package deps 2018-03-19 01:19:31 +08:00
Jeremie Dimino 9043280160 Allow dynamic dependencies for aliases 2018-03-19 01:19:20 +08:00
Jeremie Dimino a55cde2969 fix 2018-03-19 01:19:09 +08:00
Jeremie Dimino 73873b31bc Recursive package deps 2018-03-19 01:18:55 +08:00
Jeremie Dimino 1b8fbfc149 Use an alias name that is less likely to clash with user aliases 2018-03-19 01:18:45 +08:00
Jeremie Dimino 1a4037f8d1 Define the package_install alias at once
This is slightly more efficient that calling `add_alias_deps` for each
file.
2018-03-19 01:17:57 +08:00
Jeremie Dimino ee5dd505fb comment 2018-03-19 01:17:47 +08:00
Rudi Grinberg b187d6e4ba Add the (package ..) dependency type
Add a (package <name>) dependency type which adds a dependency on all the
installable files of a package.
2018-03-19 01:05:55 +08:00
Rudi Grinberg 4a0f4c0ff9 Fix encoding of inline_tests
Encode optional fields as records where optional keys that are None will be
omitted in the resultant sexp. This will match reading the keys back with field_o
2018-03-18 22:48:42 +08:00
Rudi Grinberg 7a26c18e20 New odoc rules 2018-03-18 17:44:08 +08:00
Rudi Grinberg 86768475b2 Install rules for mlds 2018-03-18 17:00:28 +08:00
Rudi Grinberg 25d52d1e3a Add Lib.Map 2018-03-18 13:42:01 +08:00
Rudi Grinberg 0a57a02819 Add documentation stanza 2018-03-18 13:42:01 +08:00
Rudi Grinberg 8f967dbca5
Merge pull request #627 from rgrinberg/pkg-lib-map
Add a map from package names to libraries to super context
2018-03-18 13:25:48 +08:00
Jeremie Dimino 93d33592c6 Fix Atom.is_valid 2018-03-17 14:23:43 +00:00
Jeremie Dimino da7874ebdf Fix Atom.is_valid 2018-03-17 14:23:43 +00:00
Rudi Grinberg 5a5ba64503 Fix 4.02.3 compat in usexp
Do not use Char.equal
2018-03-17 14:23:43 +00:00
Rudi Grinberg f39b302a8d Fix Atom definition of Usexp
Fix the is_valid function to only validate atoms that don't contain spaces,
parens, comment characters.
2018-03-17 14:23:43 +00:00
Rudi Grinberg 9b5ac4060f Add a map from package names to libraries to super context
Will be used for odoc and installation
2018-03-16 13:49:33 +08:00
Jérémie Dimino 69c5a4a79d Implement Lib.package
Gets the opam package of a library for a public or installed library
2018-03-16 11:11:48 +08:00
Jérémie Dimino b59dab57da Include the package in the public status of libraries 2018-03-16 11:11:18 +08:00
Rudi Grinberg 07385a15ed Remove double extending the env with context's env 2018-03-16 01:45:52 +08:00
Rudi Grinberg 68cf393c5f Use Bin.path_sep 2018-03-16 01:45:39 +08:00
Rudi Grinberg 2634477def Change Action to include the context's exec env 2018-03-16 00:44:23 +08:00
Rudi Grinberg 3c7e6adc73
Merge pull request #619 from rgrinberg/install-run-fixes
Tweaks to Actions
2018-03-15 19:10:13 +08:00
Rudi Grinberg db55b4e880
Merge pull request #618 from rgrinberg/scope-encode
Move they '@' scope encoding to common module
2018-03-15 19:09:56 +08:00
Rudi Grinberg 9a1910cf6f Add context for alias actions 2018-03-15 18:25:21 +08:00
Rudi Grinberg bd457ea549 Use Env.t over string array in another place 2018-03-15 18:24:41 +08:00
Rudi Grinberg dea2ac77ca No optional args for context 2018-03-15 18:24:36 +08:00
Rudi Grinberg a62e92a0ee Move they '@' scope encoding to common module
This encoding will also be used by odoc so it's best to share it
2018-03-15 14:50:34 +08:00
Rudi Grinberg 25158fc702 Share Ordered_set_lang.Make(String)(String) 2018-03-15 14:25:04 +08:00
Rudi Grinberg 286f93a963 indentation 2018-03-15 14:24:55 +08:00
Jeremie Dimino 3b1bef8b9c ocamlX_flags --> ocamlX_cflags 2018-03-14 12:02:56 +00:00
Rudi Grinberg 521a36dcef
Merge pull request #603 from diml/universe
Allow to depend on the universe
2018-03-14 13:02:23 +07:00
Rudi Grinberg 28208a1c12
Merge pull request #612 from rgrinberg/rename-result-private-lib
Rename the result private library
2018-03-14 12:59:36 +07:00
Rudi Grinberg 48ca91e013 Move the results lib into Caml
The result name is taken by other libs hence it breaks `jbuilder utop`. Hence we
simply move it our stdlib overlay. The -open flag is used to avoid having to
modify vendored code.
2018-03-14 12:09:20 +08:00
Jeremie Dimino 6fc1e0659a Workaround non-precise mtime on OSX 2018-03-13 19:15:06 +00:00
Jeremie Dimino e2adf9d44a Allow to depend on the universe
Fix #255
2018-03-13 19:12:57 +00:00
Jérémie Dimino 8e4c9fce4c
Import the Sexp parser generator (#608) 2018-03-13 19:06:34 +00:00
Rudi Grinberg d6a6a817f7 Move Io to stdune
This allows configurator to drop the dependency on jbuilder itself
2018-03-13 20:27:07 +07:00
Rudi Grinberg 12511a68ea
Merge pull request #607 from rgrinberg/private-public-overlap-take2
Disallow public/private overlap
2018-03-13 03:39:55 +07:00
Jérémie Dimino ca5c383b3b
Fix locations reported by the parser (#609)
The start position of atoms wasn't saved by the parser.
2018-03-12 18:41:49 +00:00
Jeremie Dimino e57a706960 Use the use-site location for errors from pps 2018-03-12 18:07:05 +00:00
Jeremie Dimino 7e361d596e Let Report_error print the location for Private_deps_not_allowed 2018-03-12 17:58:54 +00:00
Jeremie Dimino 178e26cfd9 Use a more informative name 2018-03-12 17:56:24 +00:00
Jeremie Dimino 69209d7243 Remove extra parentheses 2018-03-12 17:53:00 +00:00
Rudi Grinberg 753badd481 Fix private deps check for ppx runtime dependencies 2018-03-13 00:11:12 +07:00
Rudi Grinberg 0823f9d803 allow_private_deps flag
Flag to guard public dependencies from acquiring private ones
2018-03-12 23:38:48 +07:00
Rudi Grinberg 2f7db648ed
Merge pull request #601 from rgrinberg/env-context
Move env var handling outside of Context.t
2018-03-12 19:13:33 +07:00
Jeremie Dimino f74817e00d Fill the loc field of rules 2018-03-12 12:02:55 +00:00
Jeremie Dimino eef3633d9a Tweak error messages 2018-03-12 18:45:47 +07:00
Rudi Grinberg 4a68db622d Change representation to map from assoc list 2018-03-12 18:45:47 +07:00
Rudi Grinberg 161be3af1c Stage Var.compare 2018-03-12 18:45:47 +07:00
Rudi Grinberg 1f99d0fb70 Simplify Env.get
we already have Var.equal now
2018-03-12 18:45:47 +07:00
Rudi Grinberg f4955cdc22 Remove env_extra from Context.t
Rely on diffing
2018-03-12 18:45:47 +07:00
Rudi Grinberg 79d47ab68e Simplify Env.t
Use assoc list
2018-03-12 18:45:47 +07:00
Rudi Grinberg 26d6b03c66 Make unix representation more efficient
By not allocation a closure on every update
2018-03-12 18:45:47 +07:00
Rudi Grinberg e604c69510 Remove env_extra in Action
It's simply to just use Env.t everywhere. Also, there's no need to have the env
in the execution context since it's not used for anything. Only the env that is
passed directly is used.
2018-03-12 18:45:47 +07:00
Rudi Grinberg f1baaa23a8 Add Env.add
Just add 1 binding to Env
2018-03-12 18:45:47 +07:00
Rudi Grinberg 3193e4902d Make Process.run take Env.t directly 2018-03-12 18:45:47 +07:00
Rudi Grinberg 4b191b2b03 s/Env.get_var/Env.get/ 2018-03-12 18:45:47 +07:00
Rudi Grinberg 206cc69fd9 Simplify Context.create
There's no need for a base_env parameter as it's always Env.initial
2018-03-12 18:45:47 +07:00
Rudi Grinberg 35d4153641 Make Env.t abstract 2018-03-12 18:43:02 +07:00
Rudi Grinberg 8458bf3b15 Move env related functions to Env module 2018-03-12 18:43:02 +07:00
François Bobot feba0827b8 Allow to link executables as static or shared objects (#23)
- Setup the rules to use the `-output-complete-obj` option of OCaml
- Introduce a `best` mode in addition to `byte` and `native`
- Extend the `modes` field of executables to mean "linking modes", and add linking modes for static and shared objects
2018-03-12 11:40:53 +00:00
Jeremie Dimino 5286b42f58 Fix #597 2018-03-10 08:25:45 +07:00
Jeremie Dimino b219f28a8a Format fix 2018-03-09 20:43:57 +00:00
Jérémie Dimino 1feab6b2a6
Allow to specify additional libraries for the test runner (#600) 2018-03-09 19:51:02 +00:00
David Allsopp b604871aab Limit number of simultaneously opened fds (#578)
Non-optimal solution: only handles the common case.
2018-03-08 18:28:14 +00:00
Jérémie Dimino b029d32dfb
fix String_with_vars.sexp_of_t (#595) 2018-03-07 15:01:46 +00:00
Jeremie Dimino 0f0b154de6 Remove ranlib, doesn't seem to be available on Windows 2018-03-07 09:40:08 +00:00
Jeremie Dimino 98bb8adf83 fix 2018-03-07 09:40:08 +00:00
Jeremie Dimino cc845e5fdb Make all variables accessible in jbuild files 2018-03-07 09:40:08 +00:00
Jeremie Dimino 21a980a5d1 Update configurator 2018-03-07 09:40:08 +00:00
Jeremie Dimino 6ee6ed35d2 Ocamlc_config --> Ocaml_config 2018-03-07 09:40:08 +00:00
Jeremie Dimino 3bc21617b2 Refactor ocamlc_config 2018-03-07 09:40:08 +00:00
Jeremie Dimino 0b6a7eee2f Recent versions of ocaml expose 'ext_exe' 2018-03-07 09:40:08 +00:00
Jeremie Dimino 9c178480ea Update configurator 2018-03-07 09:40:08 +00:00
Jeremie Dimino d415ed5f6c Expose a few more variables 2018-03-07 09:40:08 +00:00
Jeremie Dimino 1ff05d52e2 Refactor a bit the variables in super_context.ml 2018-03-07 09:40:08 +00:00
Jeremie Dimino a95fd29dba Move Ocamlc_config to its own library and refactor it a bit 2018-03-07 09:40:08 +00:00
Jérémie Dimino dfdb6c09f4
Allow to set the library path at configure time (#575)
This allow to drop the dependency on ocamlfind
2018-03-06 14:56:24 +00:00
Jeremie Dimino 232acdd92f Libraries and executables can allow overlapping dependencies 2018-03-06 12:59:01 +00:00
Jeremie Dimino a5f9a9e063 Detect overlapping libraries 2018-03-06 12:59:01 +00:00
Rudi Grinberg c8355b454c Generalize Ordered_set_lang to return a custom map
This simplifes all the conversion from and to Module.Name.Map.t
2018-03-06 18:45:38 +07:00
Rudi Grinberg ddefafa58b Introduce private type for module name 2018-03-06 18:45:38 +07:00