Commit Graph

558 Commits

Author SHA1 Message Date
Jeremie Dimino 5de73ca740 Add support for locks in rules
This is to allow users define more complicated tests without having
to resort to -j1.
2017-09-29 12:20:08 +01:00
Jeremie Dimino 30076e7d79 Fix #264 2017-09-29 12:01:47 +01:00
Jeremie Dimino 50cbbe2ac5 Add ${path-no-dep:...}
To be able to resolve path names that are not dependencies.
2017-09-29 11:55:23 +01:00
Jeremie Dimino 3fb1915033 Fix #262
Use the absolute path when evaluating a jbuild file in OCaml syntax.
2017-09-22 11:20:13 +01:00
Jeremie Dimino e37e630da5 Allow to use utop when the library has C stubs 2017-09-22 02:22:46 +01:00
Jeremie Dimino b965c66af5 Avoid generating useless .utop/.merlin files 2017-09-22 02:16:26 +01:00
Jeremie Dimino dd3eaf2695 Fix quoting of generated strings in utop.ml
It was broken in Windows
2017-09-22 02:04:57 +01:00
Jeremie Dimino 157e4d6548 Print "Entering directory '...'" when necessary
When the root of the workspace is not the current directory, print:

  Entering directory '<absolute path to root>'

This way editors such as emacs or vim knows how to interpret filenames
reported by the compiler.

Fixes #138
2017-09-22 01:59:45 +01:00
Jeremie Dimino b2e7720b41 Interpret empty jbuild-workspace files as default configuration
If a workspace file is empty, interpret it the same as if it contained:

  (context default)

As discussed in #234
2017-09-22 01:59:45 +01:00
Jeremie Dimino af5208416f Simplify overrides in the bootstrap path
- vendored libraries are replaced by files in `vendor/boot`
- files named `XXX.boot.EXT` replace their `XXX.EXT` equivalent

For instance, to build boot.exe, we use `src/glob_lexer.boot.ml`
rather than `src/glob_lexer.ml` (which would be generated from
`src/glob_lexer.mll`).
2017-09-22 01:52:04 +01:00
François Bobot cecf0a2aaf Add (copy_files <glob>) stanza (#35)
Add (copy_files <glob>) and (copy_files# <glob>) stanzas. These
stanzas setup rules for copying files from a sub-directory to the
current directory.

This provides a reasonable way to support multi-directory
library/executables in jbuilder.
2017-09-10 02:31:07 +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
Rudi Grinberg 1da474bc4a Merge branch 'pr/238' 2017-09-05 20:41:19 -04:00
David Allsopp 6a3c51c358 Ensure executables also depend on archive files
Signed-off-by: David Allsopp <david.allsopp@metastack.com>
2017-09-05 19:53:08 -04:00
Rudi Grinberg a7067f5aa8 Merge pull request #224 from samoht/doc-index
Add a toplevel html index to the docs
2017-08-27 15:55:50 -04:00
David Allsopp da240468d0 Ensure .cmxs depends on archive file
Signed-off-by: David Allsopp <david.allsopp@metastack.com>
2017-08-26 15:06:32 +01:00
David Allsopp 1053d4e65a Ensure .cmxa files depend on object files
Signed-off-by: David Allsopp <david.allsopp@metastack.com>
2017-08-26 15:05:54 +01:00
David Allsopp 77c79ebff8 Ensure executables depend on object files
Previously, in Mode.Native, executables depended on .cmx files only.
This was fine when changes were detected by timestamp, but it is
possible to semantically alter an .ml such that only the .o/.obj file
alters. In this situation, Jbuilder would rebuild the .cmx file, but not
relink the executable.

Fixes #237.

Signed-off-by: David Allsopp <david.allsopp@metastack.com>
2017-08-26 14:01:20 +01:00
David Allsopp 9180f88dc3 Add Path.change_extension
Signed-off-by: David Allsopp <david.allsopp@metastack.com>
2017-08-26 14:01:12 +01:00
David Allsopp 2d100b1150 Improve error handling for (:include )
The form (:include $(SCOPE_ROOT)\foo) requires quoting, but the error
message was cryptic ("Error: undefined symbol include").

Signed-off-by: David Allsopp <david.allsopp@metastack.com>
2017-08-25 11:12:15 +01:00
Rudi Grinberg 95844035aa Fix out of bounds access when tokenising String_with_vars
When the current character is '$' we peek at the next character. But we first
need to make sure that there is a next character.
2017-08-25 01:08:05 -04:00
Thomas Gazagnaire 71952a0983 Add a toplevel html index to the docs 2017-08-22 11:12:33 +02:00
Jeremie Dimino 297e82061e Update_file --> Write_file
The difference is not meaningful anymore. Also expose Write_file as
write-file.
2017-08-17 15:13:11 +01:00
Jeremie Dimino 7a8fa99f5a Remove Create_file action
Makes no sense now that we use digests rather than timestamps
2017-08-17 15:13:11 +01:00
Jeremie Dimino 508c90201f Replace timestamp checks by file contents checks 2017-08-17 15:13:11 +01:00
Jérémie Dimino ca81d1704e Get rid of the deprecated-ppx-method sub-package (#222)
Instead, inline the fields it contains into the parent package
2017-08-17 12:41:49 +01:00
Jérémie Dimino 6bed864057 Better behavior when the targets of a rule already exist in the source tree (#218)
Warn when a file is both present in the source tree and generated by
a rule. Before, jbuilder would silently ignore the rule. One now has
to add a field `(fallback)` to custom rules to keep the current
behavior.
2017-08-15 11:16:11 +01:00
Rudi Grinberg 188134775f Make warning 31 non fatal for utop (#211)
This allows jbuilder to create toplevels with conflicting module names. Such as
ExtLib's and Camomiles' UChar for example.
2017-08-09 10:04:01 +01:00
Jeremie Dimino 06b47a73f6 Do not accept per_file anymore
It was renamed per_module and it is planned to reuse per_file for
another purpose.
2017-08-04 09:24:02 +01:00
Rudi Grinberg b668d9189f Add a utop subcommand (#183)
Add a utop subcommand that build and execute a utop where all the libraries defined in the current directory are immediately available for interactive use.
2017-08-04 08:59:35 +01:00
David Allsopp be4b5fa454 Extend (:include ) form to library_flags
library_flags already included variable expansion.
2017-08-03 17:28:32 +01:00
David Allsopp 3a64432d04 Expand variables in flags
Extend Ordered_set_lang.Unexpanded.expand to include a mapping function
for the S-expression for each atom. The previous behaviour can be
achieved with ~f:Sexp.Of_sexp.string, but this allows the S-expression
to be parsed using String_with_vars.t, thus allowing variable expansion.
2017-08-03 17:28:32 +01:00
David Allsopp 83bba5af61 Use an AST for Ordered_set_lang 2017-08-03 17:28:32 +01:00
David Allsopp 13b0eb9f2b Convert link_flags to the ordered set DSL 2017-08-03 17:28:32 +01:00
David Allsopp ec29651cff Extend (:include ) form to js_of_ocaml flags 2017-08-03 17:28:32 +01:00
David Allsopp cebbb219e7 Extend (:include ) form to OCaml flags
flags, ocaml_flags and ocamlopt_flags now support the (:include ) form
of the ordered set language.
2017-08-03 17:28:32 +01:00
David Allsopp 712981d847 Make Ocaml_flags.t abstract 2017-08-03 17:28:32 +01:00
Jérémie Dimino ea377efbbb Use absolute paths for ppx drivers in .merlin files (#201)
Fixes #196 and #199
2017-07-28 16:49:45 +01:00
aalekseyev b5f0b85e56 Allow digits and apostrophes in library/module names (#206)
* Allow digits in library/module names

Also include the malformed module name in the error message so it's more clear what it's complaining about.

* Update jbuild.ml
2017-07-28 08:40:09 +01:00
Jeremie Dimino cfd43d5282 Simplify a bit the rules for installation of library files 2017-07-25 17:07:24 +01:00
François Bobot b6498d11c2 Consider that a failing opam is an absent opam 2017-07-25 16:44:14 +01:00
François Bobot 747cf220c6 Install by specifying libdir for opam-installer
- change default findlib directory (ocamlc -where)
2017-07-25 16:44:14 +01:00
Jérémie Dimino c7e67d49b8 Use the full path of archives when linking (#197)
Instead of passing `-I <path> file.cma` to the compiler, pass `-I
<path> <path>/file.cma`.

Fixes #118 and #177. Using the fill path should also be slightly
faster as the compiler won't have to do the lookup through all include
paths. The only drawback is that it makes linking command line
slightly longer.
2017-07-25 14:08:39 +01:00
Marcello Seri 8bace6bc3b Preserve quotes on certain flags that contain spaces (#200)
This is useful, for example, if one needs to pass specific  flags
by hand (due to the need to use old libraries for example).  Fixes
#198

Signed-off-by: Marcello Seri <marcello.seri@citrix.com>
2017-07-25 11:38:47 +01:00
Jeremie Dimino 6e48e70a74 Fix the quoting of FLG lines in .merlin files 2017-07-24 15:32:18 +01:00
Jeremie Dimino 4b40cad247 Revert public_interfaces for now
The code to support it is starting to become increasingly complicated
and the number of problem found is a bit alarming.

We'll reinclude it later after a bit more testing and hopefully some
simplifications.
2017-07-21 17:32:39 +01:00
Jeremie Dimino 9893c14500 Fix some problems related to public_interfaces
The dependencies on library artifacts are now properly setup to point
to the files in _build/install/...

Moreorver, private interfaces are now only visible inside the library
itself and are only allowed for private libraries. When a project
defines multiple packages, this ensures that the visibility when all
packages are built simultaneously and when they are installed one by
one.

We can relax these restrictions later with a bit more work and a clear
definition of where private modules should be visible.
2017-07-21 16:52:28 +01:00
Jeremie Dimino cec825bf18 memoize one more computation in odoc 2017-07-21 15:43:44 +01:00
Jeremie Dimino 45e04010c5 style 2017-07-19 15:35:05 +01:00
François Bobot a3933a2c18 Add public_interfaces selection for libraries (#106)
Add a field "public_interfaces" to library stanza listing which modules are public.

Private modules won't be accessible outside the scope where the library is defined.
2017-07-19 15:26:48 +01:00
Jeremie Dimino 0d1a3b7378 Change the name of intermediate files for reason projects
before:

- foo.re  --> foo.re.ml
- foo.rei --> foo.rei.mli

after:

- foo.re  --> foo.re.ml
- foo.rei --> foo.re.mli

When compiling foo.re.ml with ocamlc or ocamlopt, the compiler checks
for the existence of foo.re.mli to determine whether the file has an
explicit interface or not. With the previous naming scheme, the
compiler always thought that there was no interface and was
re-creating the .cmi, which caused a race condition.

Fixes #184
2017-07-18 16:16:00 +01:00
Jeremie Dimino 71c748860d Fix #190 2017-07-17 12:49:59 +01:00
François Bobot 9935c838b3 Use lowercase_ascii 2017-07-07 12:27:31 +02:00
Rudi Grinberg 97a855524c Remove duplicate check for merlin context (#175)
This check is done in add_rules and dot_merlin. Only of those checks is
necessary. The check in dot_merlin is removed.
2017-06-30 12:03:11 +01:00
Jeremie Dimino aed36a76dd Quote a few paths in error messages when necessary 2017-06-26 13:33:01 +01:00
François Bobot 52afe84c83 Fix some warning 50 for 4.02.3 (#161)
Warning 50: unattached documentation comment (ignored)
2017-06-26 10:28:37 +01:00
Jeremie Dimino c0200c3baa Add Alias.of_file and Alias.name_of_file 2017-06-26 09:53:37 +01:00
Jeremie Dimino bf5f366e96 Typo 2017-06-15 17:39:25 +01:00
Jeremie Dimino 34df3d5fd9 Fix check for dependency on the lib interface module 2017-06-15 14:17:54 +01:00
David Allsopp 574866af2e Correct detected value for ocaml on Windows 2017-06-15 12:14:56 +02:00
David Allsopp d809a3362a Prevent Future.Temp.destroy from failing 2017-06-15 12:14:56 +02:00
David Allsopp bf3fa0831d Add Sys.force_remove
Sys.force_remove is Sys.remove, except on Windows, where it will remove
the "read-only" attribute and re-try a failed Sys.remove
2017-06-15 12:14:56 +02:00
Jeremie Dimino daeb40b087 Add SCOPE_ROOT
While analysing packages using jbuilder, I found that some packages
use ${ROOT} to refer to the root of the project. However, this doesn't
work as ${ROOT} depends on the workspace configuration.

Add ${SCOPE_ROOT} to make this easier for projects with a lot of
nested sub-directories.
2017-06-09 12:45:05 +01:00
Jeremie Dimino 572774490a Report an error for invalid dependency between modules in wrapped libraries
Report an error when in a wrapped library, a module that is not the
toplevel module depends on the toplevel module. This doesn't make as
such a module would in theory be inaccessible from the outside

If this causes compilation failures of released packages, we'll need
to turn this into a warning.
2017-06-09 12:45:05 +01:00
Jeremie Dimino b63718ada0 Fix error message about too many opam files 2017-06-08 14:11:31 +01:00
Jeremie Dimino 0a3abd96a1 Fix expansion of ROOT 2017-06-08 11:42:14 +01:00
Jeremie Dimino eb7b5e2be4 Help users to not use non-future proof features in jbuild files 2017-06-08 11:33:59 +01:00
Jeremie Dimino c2f04a4963 Refactor action processing and avoid extra work 2017-06-08 11:26:21 +01:00
Jeremie Dimino 43c2710c43 Fix late expansion or ${ROOT} 2017-06-08 10:56:59 +01:00
Jeremie Dimino 06ab34981c Capture locations of string-with-vars generated inside jbuilder 2017-06-08 10:54:46 +01:00
Jeremie Dimino e4300e7b51 Make (run prog ...) behave the same as (run ${bin:prog} ...)
This just seems like a better default
2017-06-08 10:37:25 +01:00
Jeremie Dimino 5307a92ddc Do not allow (chdir ...) with dynamic directories
For instance (chdir ${read:foo} ...) is not allowed. This doesn't seem
really useful since we couldn't express the targets anyway and
supporting it complicate the code.
2017-06-08 10:03:11 +01:00
Jérémie Dimino 2e2a707d4b Automatically install executable with extension `.exe` on Windows (#123)
- Automatically add exe extension when installing executables
- Look for local binaries with .exe extension on Windows
2017-06-08 09:59:43 +01:00
David Allsopp 843e5d864d Minor typo in ml_of_mli message 2017-06-07 14:15:30 +01:00
Jeremie Dimino 63ef644766 Fix #129 2017-06-07 11:15:15 +01:00
Jeremie Dimino 87f009a881 f --> map_cclibs + make the code build with --dev 2017-06-07 10:52:06 +01:00
David Allsopp bb527b1e38 Further MSVC C library import hacking (#119) (#127) 2017-06-07 10:49:15 +01:00
Jeremie Dimino 0e4f2dcd15 Handle dynamic targets in user actions 2017-06-06 15:42:10 +01:00
Jeremie Dimino 6a8a440c63 Wrap c_library_flags with -ldopt for ocamlmklib with msvc
This should fix #119
2017-06-06 10:55:38 +01:00
Jeremie Dimino e51002d1b7 Restrict what one can do with the OCaml syntax
Until we decide in what direction it should go.
2017-06-06 10:23:22 +01:00
Jeremie Dimino 172467a7b6 Fix expansion of ${@} 2017-06-05 16:33:09 +01:00
Jeremie Dimino e5f27b8ba8 Small improvement 2017-06-05 16:33:09 +01:00
Jeremie Dimino 2b70e1930f Disable all warnings in ml files for mli only modules 2017-06-05 13:43:08 +01:00
Jeremie Dimino 11985e3948 Update the code to talk about scopes 2017-06-05 13:42:13 +01:00
Jeremie Dimino a392b59fcd copy-and-add-line-directive --> copy# 2017-06-05 12:11:39 +01:00
David Allsopp 7ec081419c Don't pass -g to cl; it doesn't like it! (#120)
The Microsoft C compiler doesn't recognise -g. For now, easier just not
to compile with any debugging information on MSVC.

Signed-off-by: David Allsopp <david.allsopp@metastack.com>
2017-06-05 11:40:27 +01:00
Jeremie Dimino f713c7ab98 Temporarily remove (foreach ...)
Currently (foreach ...) is too general and variables can be used
anywhere inside S-expressions.

We need to sort out how we are going to handle meta-programming first
as this might impact how we implement (foreach ...).

In any case, it's better not to have it in 1.0.0.
2017-06-02 18:26:13 +01:00
Jeremie Dimino a7446ec7d3 per_file --> per_module 2017-06-02 17:58:20 +01:00
Jeremie Dimino 1a8fc057f4 Remove a few unused things 2017-06-02 16:27:05 +01:00
Jeremie Dimino d8be1aa894 Add jbuild.mli 2017-06-02 15:00:50 +01:00
Jeremie Dimino b74544919a jbuild_types.ml --> jbuild.ml 2017-06-02 14:32:05 +01:00
Jeremie Dimino fd76d7b9a9 Remove (ml_of_mli ...) and (re_of_rei ...)
Instead make jbuilder print the rule to do the same in the warning
message. The rule is not that big. Also add a note about mli only
modules in the "Known issues" section of the README.

This avoids polluting the jbuild specification and is still a
reasonable solution until someone implements proper support for mli
only modules in the compiler.
2017-06-02 13:17:28 +01:00
Jeremie Dimino 29e9b37c61 Implement re_of_rei 2017-06-01 17:07:06 +01:00
Jeremie Dimino 5e06daa5b2 Rename (do ...) to (rule ...) 2017-06-01 16:53:55 +01:00
Jeremie Dimino 52df4a4af3 remove unused code 2017-05-31 17:19:43 +01:00
Jeremie Dimino 1cebba4bd7 Be slightly more clever when scanning the stanzas to generate install files
Instead of doing many List.filter, do one String_map.of_alist_multi
2017-05-31 17:08:32 +01:00
Jeremie Dimino a52c8a4cd7 Add location to a few errors 2017-05-31 16:49:54 +01:00
Jeremie Dimino ad817e7a34 Fixes 2017-05-31 11:24:27 +01:00
Jeremie Dimino 1c8ffaa3aa Check that no targets are generated outside of the current dir 2017-05-31 10:34:17 +01:00
Jeremie Dimino 373e6c2524 Allow ${...:...} for in (do ...) and add more checks
Check that targets written by the user are a superset of inferred
targets.
2017-05-31 10:15:32 +01:00
Jeremie Dimino 81e6ebd09b Simplify inference 2017-05-30 17:39:23 +01:00
Jeremie Dimino acd1e3e571 Do not fail immediately when expanding actions and a program isn't found 2017-05-30 17:35:49 +01:00
Jeremie Dimino 4e7cb253e1 Add support for reading files from actions
- ${read:<filename>}        -> expand to the contents of the file
- ${read-lines:<filename>}  -> expand to the list of lines in the file
- ${read-strings:<filename> -> expand to the list of lines in the file,
  unescaped using OCaml escaping rules

Generalize ${!...} form
2017-05-30 17:02:45 +01:00
Jeremie Dimino a8a43e4b22 Add ${!^} and ${!@} and document them 2017-05-29 19:12:37 +01:00
Jeremie Dimino 116769724f Allow to use ${^} in actions in conjunction with (glob_files ...) and (file_recursively_in ...) 2017-05-29 18:53:54 +01:00
Thomas Refis a5af8efa0a Revert "Only build the toplevel module for wrapped libraries with odoc"
odoc is not ready for that as it turns out.

This reverts commit 5bd391e224.
2017-05-29 15:49:29 +01:00
Jeremie Dimino 5bd391e224 Only build the toplevel module for wrapped libraries with odoc 2017-05-29 14:52:20 +01:00
Jeremie Dimino 1d3341ed28 Add a (mkdir ...) action 2017-05-29 14:51:46 +01:00
Jeremie Dimino 85ae1c75e4 Hack for latest odoc 2017-05-29 14:28:07 +01:00
Jeremie Dimino 65150b4166 Add -debug-backtrace 2017-05-29 14:18:07 +01:00
Jeremie Dimino 9f8803af67 Add (modes ...) for executables 2017-05-29 14:18:07 +01:00
Thomas Refis b52d778d4c Fix .merlin generation: add all workspaces projects to merlin's source path
(otherwise "locate" doesn't work)
2017-05-29 13:22:24 +01:00
Jeremie Dimino c73b1f1fe3 Add a --no-buffer option
Following #107
2017-05-29 10:57:04 +01:00
Jeremie Dimino 5372ebdea1 Remove jane_street version
It's not used. We'll re-add it if really necessary.
2017-05-29 09:54:56 +01:00
Jérémie Dimino f1ebc0ed7d Add (mli-to-ml ...) as a hack for mli only modules 2017-05-29 07:51:52 +01:00
Jérémie Dimino c6cc8204bf Add (foreach ...) form 2017-05-29 07:51:52 +01:00
Jérémie Dimino 1e41feaf8a Add simplified version of rules 2017-05-29 07:51:52 +01:00
Jérémie Dimino 7c9dcbf284 Added deps/targets inference 2017-05-29 07:51:52 +01:00
Jérémie Dimino b9c9b19f0a Refactoring 2017-05-29 07:51:52 +01:00
Jérémie Dimino 73a4cef9f8 Move the context out of Action.t
And add it to the rule. It is never dynamic, so it is simpler this
way, we just set it in Super_context.add_rule.
2017-05-29 07:51:52 +01:00
Jérémie Dimino 7f0a2d7e12 Remove unused function 2017-05-29 07:51:52 +01:00
Jeremie Dimino 500f224098 Delete old odoc artifacts before running odoc 2017-05-26 18:34:49 +01:00
Jeremie Dimino 37d7131a11 Simplify hack for not deleting odoc files 2017-05-26 18:34:49 +01:00
Jeremie Dimino 35ba1bc0f1 Remove the dir field in Action.t
Simplify things for Build.progn
2017-05-26 18:34:49 +01:00
Jeremie Dimino 0a1f4f5658 Replace Build.and_... by Build.progn 2017-05-26 18:34:49 +01:00
Jeremie Dimino 23f00abf18 Update odoc rules 2017-05-26 18:34:49 +01:00
Jeremie Dimino d9165fc53e Memoize a computation in odoc.ml 2017-05-26 18:34:49 +01:00
Jeremie Dimino 76d637fa74 Fix dependencies 2017-05-26 18:34:49 +01:00
Jeremie Dimino 43f413a59a Support library indexes 2017-05-26 18:34:49 +01:00
Jeremie Dimino 7f8f4b23ee Start of odoc rules 2017-05-26 18:34:49 +01:00
Jeremie Dimino 60d09f7e27 Print background process failures when exiting 2017-05-26 17:30:34 +01:00
Jeremie Dimino 550a8d8f57 Fix #101 2017-05-26 17:23:49 +01:00
Jeremie Dimino 9f9660b91a Remove the global ppx_drivers variable in super_context.ml
Fix #100
2017-05-26 14:25:51 +01:00
Jeremie Dimino 1de95b9d81 Print the contents of OCAMLPARAM in the log 2017-05-26 14:07:21 +01:00
Jeremie Dimino f3cdbfa66f Fix Path.rm_rf
It didn't delete the toplevel directory
2017-05-26 11:37:10 +01:00
Richard Davison 91d03de221 Add clean subcommand (#89) 2017-05-26 11:32:32 +01:00
Jeremie Dimino 2e7140dfef Fix #86 2017-05-22 10:37:42 +01:00
Jeremie Dimino d01270757f Remove ocamllex/ocamlyacc from the context
They were unused and this prevent jbuilder to be used with
opam-cross-windows.

Fixes #75
2017-05-19 15:24:55 +01:00
Jeremie Dimino 4dd0de1723 Fix #72 2017-05-19 14:16:00 +01:00
Jeremie Dimino c6dac87ee9 Ignore all directories starting with '.' pr '_' 2017-05-19 12:36:06 +01:00
Jérémie Dimino 0a2157919c Split more long lines in makefiles 2017-05-19 08:27:21 +01:00
Jérémie Dimino 42cb733c6a Remove --debug-{actions,rules}
They are superseeded by 'jbuilder rules'
2017-05-19 08:27:21 +01:00
Jérémie Dimino 00ddd7f7a2 Improve formatting 2017-05-19 08:27:21 +01:00
Jérémie Dimino 0a98963293 fix 2017-05-19 08:27:21 +01:00
Jérémie Dimino fe30935fa2 Rename 'extract-makefile' to 'rules' 2017-05-19 08:27:21 +01:00
Jeremie Dimino d219020b2f added jbuilder extract-makefile 2017-05-18 19:05:01 +01:00
Jeremie Dimino a3ee81055d Refactor IO functions and fix invalid IOs in gen_rules 2017-05-18 17:12:32 +01:00
Jeremie Dimino 9df1bad58c Change an error into a warning
Otherwise this breaks the build of atd.
2017-05-18 16:50:53 +01:00
Jeremie Dimino a399d9df8a Declare dependencies on external library files
This way, when an external library is reinstalled, jbuilder knows to
rebuild things.

Currently, because the library dependencies transitive closures are
computed dynamically and jbuilder doesn't yet support dynamic targets,
every single rule has to depend on all the external files.

When jbuilder support dynamic targets, we can setup one alias per
external directory.

Tested the build of 97 Jane Street repository at once. No slow down
observed for the initial build.

Then a null build goes from ~1.5s to 2s. The test case is a bit
extreme so it's bot that bad given the benefits.
2017-05-18 13:52:35 +01:00
Jeremie Dimino 08af136c97 Fix another stupid bug 2017-05-17 15:24:09 +01:00