Commit Graph

23 Commits

Author SHA1 Message Date
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 98b2ea795c Move String_map to stdune 2018-04-23 12:43:20 +07:00
Rudi Grinberg a3a9a1c719 Move current configurator API to V1 module 2018-04-11 09:43:37 +07:00
Rudi Grinberg 18948faff8 Use hand made pretty printers for top level expect tests
These tests would fail in 4.02.3 because of the toplevel choosing to print some
module paths differently
2018-04-05 23:03:07 +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 1c77992a28 Add test for #637 regression 2018-03-22 00:03:35 +08:00
Jeremie Dimino 41cdb98e63 Improve sexp tests 2018-03-17 14:23:43 +00:00
Jeremie Dimino e3f34fab71 Add a test for Usexp.Atom.is_valid 2018-03-17 14:23:43 +00:00
Rudi Grinberg 6dae7ca6ca Add unit test for configurator 2018-02-28 23:37:27 +07:00
Jérémie Dimino 3fd3eb8a12
Split src/import.ml into a new library src/stdune (#548)
- make sure type t always come first
- Map.map, Map.fold, ... never pass the key to the callback while Map.mapi, Map.foldi, ... do
- removed the ~key and ~data labels, I find them useless and annoying
- Set.elements --> Set.to_list
- Map.bindings --> Map.to_list
- Map.of_alist --> Map.of_list
- added Ordering.t for comparison functions
- renamed Inl/Inr to Left/Right. The latter seems clearer
- moved List.longest to String.longest
- added a Pp module with a nicer API than Format
2018-02-25 16:35:25 +00:00
Jérémie Dimino 4cf7dc558b
Fix generation of the alias module with 4.02 (#549) 2018-02-25 12:58:40 +00:00
Jérémie Dimino 9e4cc84370
Refactor library management (#516)
Lib module
----------

We have a new module Lib that replaces Lib, parts of Lib_db and parts
of Findlib. It is used to manage all libraries (internal and
extrernal). Lib.t represent a completely resolved library, i.e. where
all the dependencies have been resolved. Lib.Compile is used to
provide what is necessary to build the library itself. Lib.Meta
provides what is necessary to generate the META file for the library.

We also have library databases represented as Lib.DB.t. A library
database is simply a mapping from names to Lib.t values and and
created from a resolve function that looks up a name and return a
Lib.Info.t. A Lib.Info.t is the same as a Lib.t except that
dependencies are not resolved.

A library database can have a parent database that is used to lookup
names that are not found in the current database. In practice we have
the following hierarchy:

1. For every scope, we have a library database that holds all the
   libraries of this scope. In this DB, a library can be referred by
   either it's name or public name

2. the parent of each of these databases is a database that holds all
   the public libraries of the workspace. In this DB libraries must be
   referred by their public name

3. the parent of this DB is for installed libraries

(1) databases are accessible via Scope.libs
    (Super_context.find_scope_by_{name,dir} sctx xxx)
(2) is accessible via Super_context.public_libs sctx
(3) is accessible via Super_context.installed_libs sctx

The dependencies of a library are always resolved inside the DB it is
part of. When we compute a transitive closure, we check that we don't
have two libraries from two different DB with the same name. So for
instance linting Base should now supported.

Jbuild.Scope_info
-----------------

Jbuild.Scope was renamed Jbuild.Scope_info

Scope module
------------

This replaces Lib_db. A Scope.t is now just a pair of a
Jbuild.Scope_info.t and a Lib.DB.t. Scope.DB.t is an object used to
lookup scopes by either name or directory.

We no longer have an external scope or special anonymous
scope. Instead one should use Super_context.installed_libs or
Super_context.public_libs depending on the context.
2018-02-20 11:46:10 +00:00
Jérémie Dimino dfb8afb46e
Compute the transitive closure of findlib packages lazily (#507)
We are now computing the transitive closure of findlib packages
lazily. This simplify the code and prepare for subsequent changes to
library management.

Fix #484 at the same time
2018-02-13 17:49:07 +00:00
Jeremie Dimino b46cef533a Make Findlib.package abstract 2018-02-07 18:10:05 +00:00
Grégoire Henry fda3c7f680 Implement #427 2018-02-07 12:33:52 +00:00
Jeremie Dimino 8b11b494d2 Fix Path.pp 2018-01-19 22:44:30 +00:00
Jeremie Dimino 92c7927432 Fix Path.explode 2018-01-19 22:43:40 +00:00
Jérémie Dimino b06aad431e
Replace promote actions by diff actions + promote command (#421)
* Remove (promote ...) and (promote-if ...)
* Remove `--promote ...`
* Add (diff ...) and (diff? ...)
* Add `jbuilder promote` and `--auto-promote`
* Fix #423
2018-01-18 11:32:20 +00:00
Rudi Grinberg bbb6108924 Fix Path.descendent
It was broken for local paths with equal length
2017-12-20 09:06:12 +00:00
Rudi Grinberg 9e4390ddc4 Add tests Path.descendent
Some of them are failing because it it doesn't work when the paths are equal or
have the same length
2017-12-20 09:06:12 +00:00
Jeremie Dimino c71acbd930 Make the testsuite pass on Windows
Thought it still requires `sh` and a few Unix tools
2017-09-22 01:59:40 +01:00
Jeremie Dimino d55c807d51 Allow to localize the error reported by Path.relative/of_string
Since these are often used to parse user input.
2017-09-10 01:26:06 +01:00
Jeremie Dimino e1114d18df Reorganize tests
Switch blackbox tests to cram testing.
2017-08-11 11:36:33 +01:00