Commit Graph

1443 Commits

Author SHA1 Message Date
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
Jeremie Dimino 6eace337bc typo 2018-03-05 18:06:41 +00:00
Jérémie Dimino cd6812f269
Accept and ignore ppx.driver fields (#588) 2018-03-05 17:59:56 +00:00
Jérémie Dimino 4857ed444a
Reduce interleaving in the scheduler (#586) 2018-03-05 17:52:21 +00:00
Rudi Grinberg 5ded45faf0
Merge pull request #584 from rgrinberg/improve-error-modules
Improve error in modules partition
2018-03-05 23:47:19 +07:00
Jeremie Dimino 348d2b1a1e display tweaks 2018-03-05 16:24:24 +00:00
Rudi Grinberg 719cf5eea0 Improve error in modules partition
Specify how to fix the error (by writing modules fields)
2018-03-05 23:11:45 +07:00
Jeremie Dimino 3edc029bf4 ws 2018-03-05 15:05:24 +00:00
Rudi Grinberg 75fe147da9
Merge pull request #577 from rgrinberg/menhir-own-module
Move menhir rules to own module
2018-03-05 21:30:17 +07:00
Jeremie Dimino a1beb25d12 Add a bit more doc to Build 2018-03-05 14:14:09 +00:00
Jeremie Dimino 1a4362b0b1 Document Arg_spec a bit more 2018-03-05 14:00:29 +00:00
Jeremie Dimino 4c2768e805 style + doc 2018-03-05 14:00:21 +00:00
Rudi Grinberg 6d5c2de689 Change menhir flags to use ordered set language
Consistent with how flags are handled elsewhere in jbuilder
2018-03-05 20:03:16 +07:00
Rudi Grinberg f06519e231 Implement menhir rules from scrath
Rather than changing them to user_rules and then compiling those.
2018-03-05 19:56:27 +07:00
Rudi Grinberg 288de19920 Move menhir rules to own module 2018-03-05 18:32:25 +07:00
Rudi Grinberg 09aa2cd1cf
Merge pull request #574 from diml/workaround-broken-builtins
Add a simple workaround for #563
2018-03-05 16:34:34 +07:00
Rudi Grinberg 7c287a5e0a Change Package.Name.t to interned type 2018-03-03 20:41:29 +07:00
Jeremie Dimino d1feb062b6 Add a workaround for broken META file for builtin packages
Fixes #563
2018-03-03 11:33:40 +00:00
Rudi Grinberg ff05369868 Introduce package name private type 2018-03-03 01:44:03 +07:00
Rudi Grinberg e4aac2da97 Improve error message for missing scopes 2018-03-02 15:55:48 +07:00
Jeremie Dimino de99d84f73 Ignore errors while generating the .merlin file
Fix #568
Fix #51
2018-03-01 23:34:43 +00:00
Jeremie Dimino 1b279f30bf Make Merlin.t abstract 2018-03-01 23:30:06 +00:00
Jeremie Dimino 39ac04a535 Add Build.catch 2018-03-01 23:30:06 +00:00
Jeremie Dimino 2e7f881d4c Fix #567
The alias module needs an implementation for non-jbuilder users.
2018-03-01 20:47:08 +00:00
Rudi Grinberg 7790d6bd4c Fix DB.all returning non unique libs (#565)
DB.all will return duplicate libraries in cases when it has 2 names for the same
library. This fix changes all to return a set of values. This is to indicate and
guarantee the uniqueness.
2018-03-01 11:53:27 +00:00
Rudi Grinberg 66a907be58
Merge pull request #467 from ocaml/import-configurator
Import configurator
2018-03-01 12:28:32 +07:00
Jeremie Dimino d5ebd0e9be Allow to capture the library a backend is attached to 2018-02-28 19:08:03 +00:00
Jeremie Dimino 17f4567014 Still build a Lib.t value for hidden libraries
This makes everything else simpler
2018-02-28 19:08:03 +00:00
Rudi Grinberg 3e73397638 Port configurator to dune 2018-02-28 23:37:20 +07:00
Rudi Grinberg 9b6abc4014 Initial import of configurator
This is the original source imported
2018-02-28 23:36:35 +07:00
Rudi Grinberg 070fd95cac Add configurator build
For now the library is private
2018-02-28 23:33:16 +07:00
Jérémie Dimino 55675598c4 Extend ocamlc_config for configurator
* Add make to create ocamlc_config.t
* Add function to get bindings
2018-02-28 23:32:24 +07:00
Rudi Grinberg 9a6d9a3aa9 Extend stdlib for configurator 2018-02-28 23:31:24 +07:00
Jérémie Dimino 45535f7afd
Extracted SC.PP as Preprocessing (#560) 2018-02-28 12:26:34 +00:00
Rudi Grinberg d01a684f71 Move SC.Doc to Odoc module
It longer has a rason to exist in super context.
2018-02-28 17:24:37 +07:00
Rudi Grinberg 02c5b005dd Move intallation and META rules to install_rules module 2018-02-28 12:21:25 +07:00
Rudi Grinberg 5ecf354127 Add a sub-system for inline tests (#547)
To support frameworks such as ppx_inline_test, ppx_expect and qtest
2018-02-27 19:06:12 +00:00
Xavier Clerc c324736d11 Support upcoming ppxlib (was "ppx_base") (#554) 2018-02-27 12:56:47 +00:00
Jeremie Dimino 4dc8d2456f Pass obj_dir explicitely to Exe.build_and_link and don't return it
The only place where we used the default value was gen_rules
2018-02-26 16:05:48 +00:00
Jérémie Dimino 138c920069 Add support for sub-systems
- Add a Sub_system module that allows to register sub-systems
  that are implemented in a single file
- Add a Syntax module to deal with versioned syntaxes

Other changes:
- Add location to all library dependencies in jbuild files, to report
  properly located errors
- Change the type of functions in Lib to return (_, exn) result
  rather than (_, Lib.Error.t With_required_by.t) result, which was
  hard to use
- Remove With_required_by.t as it was unused
- Rename With_required_by to Dep_path
- Cleanup a bit the Exe module, move a lot of stuff that was specific to
  executable stanzas in gen_rules.ml
- Add String_with_vars.Unexpanded.sexp_of_t
- Rework a bit the code in Lib, in particular factorize the code
  for taking the transitive closure of libraries
- Add an ?extra_vars argument to functions that expand variables
  in Super_context
- Fix the printing of dependency path
- Merge the handling of dependency path between the build system and
  the Lib module
2018-02-26 16:05:48 +00:00
Rudi Grinberg 95c254a6a0 Revert "Add support for upcoming ppx_base. (#541)"
This reverts commit 032cb62af6.
2018-02-26 21:07:02 +07:00
Rudi Grinberg 31ea39949b Make prefix_rules accessible through Super_context 2018-02-26 15:54:15 +07:00
Jérémie Dimino 0c30689404 Make Ocamldep.rules already_used arg optional
String_set.empty is a good default value
2018-02-26 15:53:19 +07:00
Jérémie Dimino 6e7d297ea3 Introduce short syntax for sexps 2018-02-26 15:53:19 +07:00
Jérémie Dimino 5a73753095 Extend interned module with a Table type 2018-02-26 15:53:19 +07:00
Jérémie Dimino 9943acb4dc Add utility functions to result
all and concat_map
2018-02-26 15:53:19 +07:00
Jérémie Dimino e77bd30681 prefix_rules should append rather than overwrite the prefix 2018-02-26 15:53:19 +07:00
Rudi Grinberg 3fd3d5b44c Don't pass lib_name if lib is already passed
We can easily get the library name
2018-02-26 14:55:40 +07:00
Rudi Grinberg 290bcceb17 s/capitalize_ascii/capitalize/ 2018-02-26 01:39:16 +07:00
Rudi Grinberg 1cb005bb50 Add a way to customize obj dir for executables
Use this function to simplify the obj dir for the utop runner
2018-02-26 01:30:02 +07:00
Rudi Grinberg b4e0c04368 Revert "Use _utop.ml to avoid creating a separate dir for utop rules"
This reverts commit 9ec894eda0.
2018-02-26 01:30:02 +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
Christophe Troestler fbafb3d47a Make Atom.t private and consequences (#524) 2018-02-24 23:33:26 +00:00
Jérémie Dimino 361773fdb6 Remove gen_dot_merlin flag
It's no longer necessary after switching to the new Exe api. The new API will
not generate a .merlin file for utop.
2018-02-24 18:25:14 +07:00
Rudi Grinberg 4c9da64290
Merge pull request #537 from rgrinberg/use-fake-module-name
Use .utop.ml to avoid creating a separate dir for utop rules
2018-02-23 12:10:28 +07:00
Xavier Clerc 032cb62af6 Add support for upcoming ppx_base. (#541) 2018-02-22 20:38:27 +00:00
Rudi Grinberg 9ec894eda0 Use _utop.ml to avoid creating a separate dir for utop rules 2018-02-22 17:34:39 +07:00
Jeremie Dimino 41b5017eb2 Fix #534 2018-02-21 13:35:47 +00:00
Rudi Grinberg 80ed205e38 Refactor utop module to use the new exe module 2018-02-21 16:44:31 +07:00
Jeremie Dimino db345be90b Trivial fix 2018-02-20 18:55:52 +00:00
Jérémie Dimino 2a531c5d24
Detect when a module is used by several stanzas (#532)
- print a warning
- don't generate several rules for the .d files
- Added tests for multiple rules for .ml.d
2018-02-20 16:44:25 +00:00
Jérémie Dimino 19f1c6f6b3
Add an Exe module to build and link executables (#533) 2018-02-20 16:38:22 +00:00
Rudi Grinberg d8e4145dba Warn instead of error on harmless fake modules
E.g. (modules (:standard \ does_not_exist)) is harmless
2018-02-20 20:23:28 +07: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
Jeremie Dimino 26dc6d2b13 Share some computations on pps when preprocessing modules 2018-02-19 16:04:47 +00:00
Rudi Grinberg a6e6136f3a
Merge pull request #521 from rgrinberg/build-only-public-docs
Change @doc to only build public docs
2018-02-19 19:00:27 +07:00
Rudi Grinberg 55e8dd99e2 Move reading/reading ocamlc -config to own module 2018-02-18 10:14:38 +07:00
Christophe Troestler 75ab3946f6
Distinguish quoted and unquoted variables
Now only quoted strings support concatenation of text and a split-variable.
2018-02-17 23:44:32 +01:00
Rudi Grinberg d28c6e4456 Change @doc to only build public docs
Private docs can still be built using the new @doc-private alias
2018-02-16 16:22:28 +07:00
Jérémie Dimino 5669f57907
Fix display when output is not a tty (#518) 2018-02-15 14:04:00 +00:00
Christophe Troestler 67c9363c7d Use more precise combinators "atom" and "quoted_string" 2018-02-15 00:45:06 +01:00
Christophe Troestler b48a9fec53 Usexp: Properly quote atoms when pretty printing 2018-02-15 00:43:08 +01:00
Christophe Troestler 8e9ec4a52a Do not accept the quoted form "->" in place of -> 2018-02-15 00:43:08 +01:00
Christophe Troestler 0cbd1c7450 Usexp: factorize pp of atoms & fix serialization 2018-02-15 00:43:08 +01:00
Christophe Troestler 453ce1eb56 String_with_vars: Use a functor to create generic expansion fun
This required to remove the labeled ~dir arguments in Action because
one would have had to use the same label for the expansion context in
String_with_vars, which would have been odd for generic expansion
functions.
2018-02-15 00:43:08 +01:00
Christophe Troestler a91cf637ae Trigger an error for unquoted concatenations with list variables
Thus x${v} where v is a variable that returns several values must
necessarily be quoted: "x${v}".
2018-02-15 00:43:08 +01:00
Christophe Troestler 754aa59cc3 String_with_vars: Distinguish quoted and unquoted strings
This implies that an atom can only contain a single variable, such as
${@}, and not something like xxx${@}xxx.  The internal representation
was changed not to be able to represent the latter.
2018-02-15 00:43:08 +01:00
Christophe Troestler cc9c71661e Fix Jérémie Dimino remarks 2018-02-15 00:43:08 +01:00
Christophe Troestler f9e17f76e0 Requires that atoms are unquoted is some contexts 2018-02-15 00:43:08 +01:00
Christophe Troestler 73f529ae82 Rename String to Quoted_string 2018-02-15 00:43:08 +01:00
Christophe Troestler 75ad9736f8 Move usexp in src/ as it diverged from parsexp 2018-02-15 00:43:08 +01:00
Christophe Troestler c27cb3541e Let the parser distinguish quoted strings
Fixes https://github.com/ocaml/dune/issues/408
2018-02-15 00:43:08 +01:00
Christophe Troestler e8e3698e15 String_with_vars: represent quoted vars differently from unquoted ones
Define the representation for quoted variables, adapt the test of
strings made of a single variable, and add a constructor.
[String_with_vars.t] is not yet able to use that representation
because the necessary information is not available from the parser.
2018-02-15 00:43:08 +01:00
Christophe Troestler 3e2dc2517d Document the interface of String_with_vars 2018-02-15 00:43:08 +01:00
Jeremie Dimino c569984af1 Rewrite the findlib predicate stuff
- intern predicate names
- add a Variant module
2018-02-13 19:04:30 +00:00
Jeremie Dimino 77ef63773f 4.02 compat 2018-02-13 19:04:21 +00:00
Jeremie Dimino a1f70209bf Fix previous commit 2018-02-13 18:52:58 +00:00
Jérémie Dimino bd0593c11a
Fix printing of errors (#513)
The status line wasn't properly cleared
2018-02-13 18:31:21 +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
Jérémie Dimino 8e27f1966d
Fix #485 (#512) 2018-02-13 15:56:59 +00:00
Jérémie Dimino 2fb65c05ba
Fix #330 (#510) 2018-02-13 12:49:50 +00:00
Rudi Grinberg 0d62c34e42
Make Lib.t abstract (#498)
* Make Lib.t abstract

This requires removing the external/internal separation in most places in the
source code. Briefly, these are:

* Special casing of external libs for incremental compilation in jsoo
* .merlin generation
* stamp file generation
* transitive closure having a flag for walking external libs
* checking if a lib is a driver (checking various names)

These cases are fixed by introducing an src_dir, obj_dir abstractions, and the
ability to check if a library is local.
2018-02-13 18:36:15 +08:00
Rudi Grinberg 2b442c6019 Change .merlin generation to not use PKG
We know the build directory of exteranl packages, hence we should simply use it
as the build and source dir (B and S respectively).
2018-02-13 00:08:45 +08:00
Rudi Grinberg 8781c81bd3 Fix the top closure for internal libs
keying by the private name isn't enough. We include the dir in the key, because
private names are unique per dir.
2018-02-12 19:55:39 +08:00
Rudi Grinberg baa009a0fb Fix map of private installable libraries
It should be keyed by a unique name because the old key - the internal name,
isn't unique. Also take this change to fix the instalable -> installable typo.
2018-02-12 19:55:39 +08:00
Rudi Grinberg 0873ae2b10
Remove primed Lib_db.find_scope (#505)
Two versions aren't really necessary as mostly the primed version was used.
2018-02-10 22:38:28 +08:00
Rudi Grinberg fd6e8ad91f Remove {anonymous,external}_scope from Super_context
These were re-exported to avoid access libs directly, but there's already an
accessor to do that, so these functions weren't used consistently anyway.
2018-02-10 00:15:26 +08:00
Hugo Heuzard dad2458879 install all sources 2018-02-08 23:09:55 +08:00
Jeremie Dimino e22dee5f75 tweaks 2018-02-08 11:01:54 +00:00
Rudi Grinberg c33269b914 Deduplicate closure and closed_ppx_runtime_deps_of (#499) 2018-02-08 10:58:02 +00:00
Jérémie Dimino b3838284c6
Better support for mli/rei only modules (#489) 2018-02-08 10:12:46 +00:00
Rudi Grinberg f083b6a2cd Get rid of useless find_internal' function
It was only used to define find_internal
2018-02-08 11:58:40 +08:00
Jérémie Dimino 763feda683 Move the addition of <lib>.a dependencies to Lib.archive_files (#493)
Move the addition of <lib>.a dependencies to Lib.archive_files

And refactor a bit the code
2018-02-08 03:21:11 +08:00
Jeremie Dimino b46cef533a Make Findlib.package abstract 2018-02-07 18:10:05 +00:00
Jeremie Dimino f949588742 Actions printed by "jbuilder rules" are now using relative paths
This seems more natural
2018-02-07 18:10:05 +00:00
Jeremie Dimino a794de8b2b Refactoring 2018-02-07 14:19:58 +00:00
Jeremie Dimino b17b476048 Set the obj_dir for executables 2018-02-07 12:34:01 +00:00
Grégoire Henry 0f0c0c2997 Compatibility layer: add link from `obj.cmi` -> `.foo.objs/obj.cmi` 2018-02-07 12:33:57 +00:00
Grégoire Henry fda3c7f680 Implement #427 2018-02-07 12:33:52 +00:00
Jeremie Dimino fae08c79be Allow to set the concurrency level from the config file 2018-02-07 12:11:27 +00:00
Jérémie Dimino 0570e09f9a
Add a configuration file and a quiet mode (#490) 2018-02-07 11:38:21 +00:00
Jérémie Dimino 4e4f651b37
Don't stop on the first error (#477)
Before, jbuilder used to stop its execution after an error was
encountered. Now it continues until all branches have been explored.

To implement this feature, Future was rewritten as a Fiber module with
a simpler semantic.

This patch contains various other refactorings.
2018-02-06 14:39:03 +00:00
Jérémie Dimino d4c9eb6ba0
Do not pass -I <stdlib-dir> (#488) 2018-02-06 11:49:44 +00:00
Jérémie Dimino 80c0bfc879
Split calls to ocamldep (#486)
Instead of doing a single call to ocamldep, do one per file. This is
needed to support "menhir --infer".

This should also make compilation go further when there are files with
syntax errors.
2018-02-06 11:48:04 +00:00
Rudi Grinberg a1c02df143
Build_system.prefix_rules (#479)
* Build_system.prefix_rules

Add a way to implicitly add a build prefix to all rules added by the given
function

* Make sure that on_load_dir callbacks handle the prefix right

* Make sure that prefix_rules prefixes don't contain targets

* Move prefix validation to user facing function

* document prefix_rules
2018-02-05 18:38:42 +08:00
Rudi Grinberg e61142e885
Merge pull request #460 from ocaml/fix-promote-tests-on-osx
Fix bad interaction between promotion and incremental builds on OSX
2018-02-01 20:15:18 +08:00
Jeremie Dimino f17e61dd3a Fix #469 2018-02-01 10:17:51 +00:00
Jeremie Dimino 143145b19c Remove old stuff about updated files
This dates from the time we were using timestamps for incremental
compilation.
2018-02-01 08:23:36 +00:00
Jeremie Dimino b9c4dd2339 Remove files from the digest cache when promoting them.
This is to avoid problems with incremental compilation on OSX.

Fix #456
2018-02-01 08:23:25 +00:00
Rudi Grinberg 3bf3c91105 Verify that scope by path lookup uses valid dirs
The dirs must be sub directories of the anonymous_scope path. Which is the build
root of the context of the lib db.
2018-01-31 19:18:55 +08:00
Rudi Grinberg 4272d34fa6 Fix scoping related odoc rules
the lib component isn't just a library name. It can contain the scope as well
which we should resolve correctly
2018-01-31 03:43:39 +08:00
Rudi Grinberg a29f144bc1 Use correct scopes for generating ppx preprocessors
Use the intenral scope whenever there's an internal lib in the preprocessors.
Otherwise use the external scope.
2018-01-31 00:48:58 +08:00
Rudi Grinberg dcb3845fc4 Associate the empty scope name to the anonymous scope 2018-01-31 00:48:58 +08:00
Rudi Grinberg 1013db83b5 Add Lib.public_name 2018-01-31 00:48:58 +08:00
Rudi Grinberg ce65e27045 Add Lib_db.Scope.name 2018-01-31 00:48:58 +08:00
Rudi Grinberg 91f6a67850 Add ability to look up scopes by external name 2018-01-31 00:48:57 +08:00
Rudi Grinberg 672120b3b8 Introduce explicit scopes for Lib_db
This commit introduces explicit scopes in Lib_db and refactors dune to use these
scopes where appropriate. Briefly, they are appropriate whenever we previously
used a directory to resolve the scope with Lib_db.find ~dir and friends. So a
Lib_db.Scope.t replaces a (dir, Lib_db.t) pair.

This allows to be explicit about the anonymous and external scope. Which is
important when building ppx drivers.

We also harmonize the error handling with the Findlib module. In both cases
we use a flat string list of errors. Rather than the more specific type we had
before in Findlib.
2018-01-30 19:21:40 +08:00
Rudi Grinberg a3ff5e5f30
Merge pull request #368 from rgrinberg/fanout-cleanup
replace double fanout with fanout3
2018-01-29 23:16:06 +08:00
Rudi Grinberg a02b6472e7 replace double fanout with fanout3 2018-01-29 23:13:02 +08:00
Rudi Grinberg aeb186fd3b Remove the path argument from Record_lib_deps
it can always be inferred from when we can construct the rule. But to do that,
we have to pass it along to internal_rule.
2018-01-29 22:53:14 +08:00
David Allsopp b6eec7a33d Correct promote-until-clean atom 2018-01-26 16:51:28 +00:00
Jérémie Dimino 437211f74f
Expose the promote mode (#437) 2018-01-25 19:07:46 +00:00
Rudi Grinberg 27e31a3196 Avoid catching wildcard exceptions when calling Findlib.find
But to avoid making the catch statements verbose, move all findlib exceptions to
a variant.
2018-01-25 22:00:52 +08:00
Jérémie Dimino c066efd196
Add the transitive dependencies of used ppx rewriters (#450) 2018-01-25 11:22:50 +00:00
Jeremie Dimino 062cca21e5 Fix #447 2018-01-25 10:13:18 +00:00
Jeremie Dimino ad9b82e92a Compute the transitive closure of ppx runtime deps only when needed
We only need it when the kind is ppx_rewriter or ppx_deriver.
2018-01-24 18:12:50 +00:00
Rudi Grinberg ab18b13a04 Fix META generation wrt scope
We should respect the scope of the current internal library to generate the META
2018-01-24 16:32:10 +08:00
Jérémie Dimino ba5ffbc414
Fix meta generation for ppx runtime deps (#441)
Use the transitive closure for the deprecated ppx method
2018-01-23 16:03:59 +00:00
Rudi Grinberg 58f9e9840c Replace janestreet/jbuilder with ocaml/dune
Update all links where necessary
2018-01-23 17:52:44 +08:00
David Allsopp 6873478307 Display a warning for bad jbuild-ignore lines (#389)
jbuild-ignore should only refer to directories in the current directory
(unlike .gitignore): referring to subdirectories doesn't work.

Signed-off-by: David Allsopp <david.allsopp@metastack.com>
2018-01-23 09:14:22 +00:00
Rudi Grinberg a34f71f922
Merge pull request #410 from rgrinberg/new-odoc-minimal
New odoc rules (minimal)
2018-01-23 02:58:06 +08:00
Rudi Grinberg 6cce747141 Make odoc work with multiple libraries defined in the same dir 2018-01-23 02:56:23 +08:00
Thomas Refis 815c332dc5 odoc: handle .mld files 2018-01-23 02:56:23 +08:00
Jeremie Dimino 13843f93dd Fix #436 2018-01-22 13:12:29 +00:00
David Allsopp 61b3e5f189 Use /Fo instead of -o when invoking CL
The -o option in the Microsoft C Compiler is deprecated (and has been for
a very long time). The warning is tedious, so use /Fo instead. The only
problem with this is that "-o foo.obj" must become "/Fofoo.obj" with no
space, which requires a little support in Arg_spec.

Signed-off-by: David Allsopp <david.allsopp@metastack.com>
2018-01-22 12:17:28 +00:00
Jérémie Dimino f9837a278b
Detect recursive includes (#435)
Fix #432
2018-01-22 11:32:40 +00:00
David Allsopp d2706b448b Remove readonly attribute on Windows before unlink
The legacy DOS readonly attribute is a tedious difference on Windows,
because a user may have permission to delete a file, but unlink fails
because the attribute is set.

Signed-off-by: David Allsopp <david.allsopp@metastack.com>
2018-01-22 11:14:18 +00:00
Jeremie Dimino b401284b84 Restore .merlin-exists trick
This is needed so that command don't depend on the contents of the .merlin
2018-01-19 22:54:05 +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 5651eb80b5
Better behavior when aliases have targets (#426)
Ignore the targets and report a warning.
2018-01-19 22:17:11 +00:00
Jeremie Dimino 92f9ce4edb Fix the order of files in (diff file.ml file.ml.ppx-corrected)
The generated correction must come after for promotion to work.
2018-01-19 15:32:29 +00:00
Jérémie Dimino 9dd5ab74e4
[WIP] Load rules lazily (#370)
* Change jbuilder to load rules lazily

Rules are now loaded on a per directory basis as needed. This speed up
the start up time on large workspaces.

Does various refactoring as well.

* Simplify the handling of META files

We no longer generate a META.foo.from-jbuilder file. Nobody is using
this feature and it's making the new code more complicated.
2018-01-19 08:50:06 +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
hhugo 9347d4a767 tailrec split_lines (#416) 2018-01-17 13:34:53 +00:00
Jérémie Dimino 314da72d3c
Better signature for Artifacts.file_of_lib (#418) 2018-01-16 13:40:04 +00:00
Jérémie Dimino 49edf8ed65
Accept correction files produced by ppx_driver (#415)
* Accept correction files produced by ppx_driver so that [@@deriving_inline] works
* Change promote-if so that it doesn't promote the file when the source file doesn't exist in the source tree
2018-01-16 12:28:02 +00:00
Jeremie Dimino d4dec9b4f5 Change the default of --promote from check to copy
As said in the PR. I forgot to push the commit.
2018-01-15 14:55:17 +00:00
Jeremie Dimino ce901a4731 Fix the build 2018-01-15 13:50:08 +00:00
Jérémie Dimino af5d7f5e6f
Report better errors for globs pointing to non-existing directories (#413)
Fix #412
2018-01-15 13:28:32 +00:00
Jérémie Dimino eab1ff6c7b
Add promote actions and include stanzas (#402)
Add a promote action that allows to copy over generated files as
source files and an include stanza allowing to include a file in a
jbuild file.
2018-01-15 13:24:25 +00:00
Christophe Troestler f8617b5721 Let "concat" or "split" be a quality of the variable (#336)
* Let variables say whether they are Concat or Split

To concatenate the contents of a split variable, put it in a string:
"${var} ".

Fixes #300

See also https://github.com/janestreet/jbuilder/issues/408

* Issue a deprecation warning for ${!...}

* Treat ${CC}, ${<}, ${^} and ${read-lines:...} as split vars

* Change ${!^} into ${^} for this project jbuild rules
2018-01-15 09:32:40 +00:00
Jérémie Dimino d3410e0659 Refactor alias handling
* Improve documentation of alias module
* Add add_alias helper function to help create rules in alias
2018-01-13 19:51:24 +08:00
Jérémie Dimino a1026f46d1 Add action helpers
Add constructor functions for Actions
2018-01-13 19:51:18 +08:00
Jérémie Dimino e28344a24b
Do not use the transitive closure in generated META files (#405) 2018-01-12 16:41:23 +00:00
Rudi Grinberg 92d4cbb7be
Merge pull request #404 from janestreet/make-lint-standard
Make lint alias standard
2018-01-12 15:46:26 +08:00
Rudi Grinberg 6bd46a76f8 Make lint alias standard 2018-01-11 16:20:19 +08:00
Rudi Grinberg 3776acd8d2 Fix c_compiler parsing for OCaml >= 4.06.0 (#393) 2018-01-10 16:54:25 +00:00
Rudi Grinberg ca1c8dd897 Add -null option to linters
Since the omp driver doesn't support this option yet, we must add it
conditionally. This is a temporary workaround.
2018-01-10 22:45:50 +08:00
Rudi Grinberg 1fc0ef0ab1 Add lint rules 2018-01-10 22:45:50 +08:00
Rudi Grinberg 6d2152e7b1 Add Alias.add_{stamp,action}_dep
These functions will be useful to construct alias elsewhere
2018-01-10 22:45:50 +08:00
Rudi Grinberg bfbfc0bf30 Change lint option to be the same as preprocessing 2018-01-10 22:45:50 +08:00
Rudi Grinberg 66fc8db600 add lint alias 2018-01-10 22:45:49 +08:00
Rudi Grinberg 897c1e2e5e Add helper functions
* Path.Set.sexp_of_t
* Module.iter
* List.last
2018-01-10 22:45:31 +08:00
Jeremie Dimino 469079f9c6 Connect usexp errors to the error reporter
Fix #384
2018-01-09 09:55:01 +00:00
Rudi Grinberg 1ff8a7989c Cross compilation support
In a host/target setup, all binaries that are built (including preprocessors)
are ran using the host *for* building targets. Final target artifacts are
compiled using the target toolchain
2018-01-01 22:34:41 +08:00
Jeremie Dimino 6e64156913 Add target support
* Create targets from findlib toolchains by reading findlib configs
* Define targets inside workspace files
* Set cross compilation targets with -x argument
2018-01-01 22:34:41 +08:00
Jeremie Dimino afb602d7ef Add add_install_prefix function
To control installation prefix
2018-01-01 21:48:25 +08:00
Jeremie Dimino 86dc606fef Add Utils.install_file
Determines the .install depending on the toolchain for x compilation
2018-01-01 21:48:25 +08:00
Jeremie Dimino 5d451e7034 Add cstr_record 2018-01-01 21:48:25 +08:00
Jeremie Dimino e06c060121 Add module to parse findlib config
Necessary to read toolchains
2018-01-01 21:48:25 +08:00
Rudi Grinberg 1a8c328b2d Make is_directory work when dir doesn't exist 2018-01-01 21:48:25 +08:00
Rudi Grinberg 829b85ec44 Add Path.drop_prefix 2018-01-01 21:48:25 +08:00
François Bobot 9ec6b22066
Merge pull request #379 from janestreet/usexp
Replace the S-expression Parser by Usexp
2017-12-22 14:56:22 +01:00
David Allsopp 9d3c0b649c Fix copy# for Microsoft C compiler
Microsoft CL doesn't support #n and requires the more strictly correct
directive #line

Signed-off-by: David Allsopp <david.allsopp@metastack.com>
2017-12-22 08:16:09 +01:00
Jeremie Dimino 3e525d8eec Vendored usexp and switch to it 2017-12-21 13:13:47 +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 2f8d95cdeb
Merge pull request #373 from rgrinberg/reason-preprocess-fix
Reason preprocess fix
2017-12-18 23:25:10 +08:00
Jeremie Dimino 18d8cb847d Fix the test added in the previous commit 2017-12-18 13:30:49 +00:00
Rudi Grinberg 4570020ce7 Fix reason preprocessing
and previously failed test
2017-12-18 20:52:52 +08:00
Anton Bachin eb05f4f643 Place module list on its own line
The markup emitted by Jbuilder treated module lists as inline elements
that can appear inside a line. However, neither ocamldoc nor odoc render
module lists as inline elements. They are instead block elements, that
are laid out vertically, like lists or paragraphs. Correspondingly, odoc
now rejects inline module list markup.

A side effect of the (rejected) misconception is that there was a stray
period appearing on its own line in every module list generated by
Jbuilder. This is now fixed.
2017-12-16 14:27:36 -06:00
Anton Bachin 0aa6faa145 odoc: don't generate raw HTML and level 1 headings
This page generation code really should be moved to odoc, however.
2017-12-16 14:07:51 -06:00
Xavier Clerc 2be876cb49 Availability of "num" depends on the OCaml version (#358) 2017-12-11 13:05:20 +00:00
Rudi Grinberg a0c2ed942b
Merge pull request #343 from rgrinberg/fix-ppx-recompile
Fix incremental compilation with ppx's
2017-12-02 21:27:04 +08:00
François Bobot 13fed1f1ce
Merge pull request #339 from rgrinberg/fix-jbuilder-exec-utop
Fix jbuilder exec from sub dirs & utop
2017-12-01 13:41:21 +01:00
Rudi Grinberg 785beeafac
Add option to force running tests (#320)
Option to force running tests

The mechanism allows for forcing any alias, but only forcing tests is exposed to the user. Aliases are forced by deleting all the alias files that belong to a particular alias. The option for forcing tests is called --force.
2017-11-28 19:03:22 +08:00
Rudi Grinberg 6f498db212 Fix incremental compilation with ppx's
Same fix as 6a3c51c358 but also for ppx's
2017-11-27 21:14:24 +08:00
Rudi Grinberg 7a30bbf8ea Use absolute paths for lib paths in utop
This makes $ jbuilder utop usable from sub directories
2017-11-25 23:25:26 +08:00
Christophe Troestler d8a39b66de Move escape_double_quote to Import.String & refactor 2017-11-24 16:08:34 +01:00
Christophe Troestler 1e280e56d1 Escape double quotes for META field values
Fixes https://github.com/janestreet/jbuilder/issues/331
2017-11-23 19:25:45 +01:00
Rudi Grinberg 5103035bef
Pass context when executing actions (#329) 2017-11-14 23:36:12 +08:00
Rudi Grinberg 0c2228e7bc
Refactor jbuilder exec path handling (#327)
There's no need for runcwd as initial_cwd is already defined somewhere. Add
Filename.analyze_program_name function to make the clearer.
2017-11-14 15:19:58 +08:00
Spiros Eliopoulos 7383b0b006 docs: add some docstrings in various places (#252)
* docs: update some documentation in the Build module

* docs: document what [Scope.resolve] does

* docs: add a toplevel docstring to the Alias module

* docs: document (or not) the bootstrap function

* docs: lightly document the bootstrap module

* fix ignore comment
2017-11-09 20:41:52 +08:00
Rudi Grinberg ea7fa8541b
Fix off by 1 error in String.drop_prefix (#319) 2017-11-09 12:45:53 +08:00
Rudi Grinberg 5fa8f6eb26
Add "S ." to .merlin (#284) 2017-11-07 22:16:36 +08:00
Rudi Grinberg a57c488dd7
Fix jbuilder rule in case of missing binaries (#292)
Make jbuilder rules work even when binaries are missing

* Proper error messages for missing binaries

* Unify Prog_spec and Maybe_prog

both can simply be unified into a path type that has a hint for the error

* Remove scarcely useful in_the_tree parameter

It's always true except for the C compiler. In which case, there's no harm in
making it true.

* Make Artifacts return Action.Prog

The old return value was simply converted to this anyway. It's simpler to just
return the proper error straight up.

* Remove remains of in_the_tree
2017-11-07 21:42:55 +08:00
Rudi Grinberg 9c8ecc9fbc
Improve jbuilder exec (#286)
* Improve jbuilder exec

When the path passed contianed to exec contains a '/', it will be interpreted
relative to the path of a build context (default context when absent)

* Update man page of jbuilder exec

* Add String.drop_prefix

* Make jbuilder exec understand relative/absolute paths

jbuilder exec will now interpret absolute paths as relative to the specified
build context. While relative paths will now be intepreted relative to the cwd
appended to the specified build context.

* Fix jbuilder exec /absolute/path

When the path provided to jbuilder exec is absolute, we should ignore the build
context for looking up the binary.

* Fix exec when ran outside of root

Previously, a call like $ jbuilder exec ./xxx --root=p would raise
an exception. Now ./xxx will be intepreterd relative to --root.

* Fix relative paths when jbuilder is ran outside of --root

* Simplify documentation for jbuilder exec
2017-11-07 21:41:09 +08:00
Rudi Grinberg 8718fdac88
Merge pull request #306 from MiloDavis/doc-non-public
Build documentation for non-public libraries
2017-11-07 20:54:00 +08:00
xclerc e28cc8d070 Fix regression introduced by PR303. 2017-11-06 09:30:50 +01:00
Milo Davis f645f0c030 Build documentation for non-public libraries 2017-11-03 16:12:06 +01:00
Xavier Clerc 70946320fd Use `=` rather than `String.equal` for better compatibility. 2017-11-03 13:49:47 +00:00
Xavier Clerc 9b04e7e931 Look for architecture size in the output of `ocamlc -config` first. 2017-11-03 13:44:41 +00:00
Xavier Clerc 72a3cb008f Look for `ARCH_SIXTYFOUR` in both `config.h` and `m.h`. 2017-11-02 12:31:14 +00:00
François Bobot 2bd8fe49b4 Revert "RFC update odoc rules" 2017-10-24 13:58:34 +02:00
François Bobot e88b94b4f5 Merge pull request #290 from janestreet/new-odoc
Compelte and update odoc comments
2017-10-24 13:58:10 +02:00
Thomas Refis 765302461d odoc: handle .mld files 2017-10-24 11:51:28 +01:00
Rudi Grinberg aaafdf02fe Merge pull request #287 from rgrinberg/duplicate-public-names
Report duplicate names with a good error message
2017-10-22 19:17:11 +08:00
Zach Ploskey 3c9de3a9d1 Fix depending spelling and add comma in error message 2017-10-19 23:28:14 -07:00
Rudi Grinberg bfc83d71d7 Report duplicate names with a good error message
Indicate which name is duplicated in which jbuild files
2017-10-20 11:08:42 +08:00
Rudi Grinberg bfb241cce0 add pretty printers to Alias
Useful for debugging
2017-10-19 08:31:52 +08:00
Rudi Grinberg 02a4c59654 Remove mention of recursive aliases from error message
all aliases are non recursive
2017-10-19 08:17:34 +08:00
Jeremie Dimino ed55ca9efe Fix interpretation of (alias ...) and (alias_rec ...) 2017-10-14 10:37:36 +08:00
Jeremie Dimino b69a6432dd Add (alias_rec ...) in dependency specification
(alias_rec XXX) means the same as @XXX on the command line.
2017-10-14 10:37:36 +08:00
Jeremie Dimino b281554009 Get rid of recursive aliases 2017-10-14 10:37:36 +08:00
Jeremie Dimino 30a914278e All aliases on the command line are recursive
Calling 'jbuilder build @path/x' always request the alias `x` in
`path` and all its descendant.

To implement that, change the build system interface to take an
arbitrary request as argument.
2017-10-14 10:37:36 +08:00
Jeremie Dimino 3e13492b7a Get rid of Alias.tree 2017-10-14 10:37:36 +08:00
Jeremie Dimino 7a5698c7b1 Interpret jbuild-ignore files sooner
Interpret then while loading the file tree.
2017-10-14 10:37:36 +08:00
Rudi Grinberg c28ee8fa10 Merge pull request #280 from aantron/odoc-index-libraries-not-packages
Docs: list all libraries in top-level index
2017-10-11 21:31:15 -04:00
Rudi Grinberg 00b62c4d5a Merge pull request #282 from aantron/odoc-highest-up-links
Fix "Up" links to top-level index
2017-10-11 21:22:17 -04:00
Rudi Grinberg 9326c412d9 Merge pull request #281 from aantron/nits
Fix typo
2017-10-11 15:41:34 -04:00
Anton Bachin 9e3b64af86 Fix "Up" links to top-level index
When the docs are viewed locally, the URL ".." causes the browser to
display a listing of the parent directory, instead of "../index.html".
The "../index.html" interpretation is only provided by web servers.
2017-10-11 10:24:02 -05:00
Anton Bachin 48d9be2d00 Docs: list all libraries in top-level index
This commit changes the top-level index of the docs generated by
Jbuilder so that the index lists all installed libraries (Findlib
library packages generated by Jbuilder), rather than only opam packages.
For example, current Markup.ml installs libraries

  markup
  markup.lwt
  markup.lwt.unix

With this change, all these libraries are listed in the index. Before
this change, only markup was listed, because it happened to coincide
with the name of the opam package that contains all three libraries.

Not listing the extra libraries makes them undiscoverable, as they can
only be reached by direct URL.
2017-10-11 09:39:46 -05:00
Anton Bachin 21a5296994 Fix typo 2017-10-11 07:32:41 -05:00
Rudi Grinberg 7c6f3e6dd6 support ${..} in :include 2017-10-10 15:53:39 -04:00
Rudi Grinberg 001daa62d0 Merge pull request #232 from rgrinberg/string-with-vars-bounds
Fix out of bounds access when tokenising String_with_vars
2017-10-10 15:42:05 -04:00
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
Jeremie Dimino 80792e4e74 Handle the alternative findlib directory layout
Some packages still use this, such as ocp-blah and llvm
2017-05-17 15:12:11 +01:00
Jeremie Dimino b2a9d6dc51 Add: jbuilder installed-libraries --not-available 2017-05-17 14:56:53 +01:00
Jeremie Dimino 1814fc4299 Much better for findlib packages not found 2017-05-17 14:56:53 +01:00
Jeremie Dimino 4621e554d2 Really ignore invalid findlib packages 2017-05-16 15:46:53 +01:00
Jeremie Dimino 60ad83c522 Improve opam parsing errors & use opam-file-format to extract the version 2017-05-16 14:47:52 +01:00
Jeremie Dimino f2a857f406 Fix Super_context.expand_and_eval_set
It declared its own dependencies as action dependencies rather than
rule dependencies
2017-05-16 12:19:18 +01:00
Jeremie Dimino bd62dc8306 Merge build_interpret functions 2017-05-15 15:15:20 +01:00
Jeremie Dimino 9a5bb0ca1f Compute dynamic dependencies correctly for memoized arrows 2017-05-15 15:09:56 +01:00
Jeremie Dimino 648b2b2990 Revert some changes:
- Make targets explicit b7ad08df84.
- Get rid of Vfile      e73fd90b65.

Without vfile we need some new concepts to avoid parsing the requires
file multiple times and with vfile it's annoying to specify the
dependencies by hand.

Will leave that for future work. Just use memoize where it make sense,
for instance when we read the result from only the current directory
(for instance the ocamldep stuff).
2017-05-15 14:58:37 +01:00
Rudi Grinberg 5adfe2d668 Ignore local switch directory (#77)
This makes jbuilder usable for building projects that use a local switch
2017-05-15 10:30:02 +01:00
Jérémie Dimino be3593e449 Distinguish rule dependencies from action dependencies 2017-05-15 09:37:46 +01:00
Jérémie Dimino b7ad08df84 Make targets explicit 2017-05-15 09:37:46 +01:00
Jérémie Dimino b6b417e640 simplification 2017-05-15 09:37:46 +01:00
Jérémie Dimino e73fd90b65 Get rid of Vfile
replace it by just memoize
2017-05-15 09:37:46 +01:00
Jérémie Dimino f5192122f8 add Build.memoize 2017-05-15 09:37:46 +01:00
Jeremie Dimino dd79bdd8d1 Suffix all alias files, to avoid clashes with doc 2017-05-15 09:37:46 +01:00
Jeremie Dimino 87c958f2e0 Add Build.if_file_exists 2017-05-15 09:37:46 +01:00
hhugo c880cd3e2d disable warning 60 with --dev 2017-05-14 13:06:22 +01:00
Jeremie Dimino 4c9f894fe4 fix stupid bug 2017-05-10 16:44:01 +01:00
Jeremie Dimino 76db4d5641 Use OCAML_COLOR and stop using OCAMLPARAM when possible 2017-05-10 16:31:44 +01:00
Jeremie Dimino b514644f9b Revert "Add support for hooks"
This reverts commit c937dc9183.
2017-05-09 15:11:09 +01:00
Jérémie Dimino c937dc9183 Add support for hooks 2017-05-09 08:18:10 +01:00
Jeremie Dimino add2a063c0 Detect the package name as topkg-jbuilder does 2017-05-08 16:56:21 +01:00
Jeremie Dimino 221baefb81 Make subst add the version to the opam file 2017-05-08 16:56:21 +01:00
Jeremie Dimino 61f0f8fd0e Fix bootstrap 2017-05-08 16:56:21 +01:00
Jeremie Dimino 6d0c8198eb Substitute watermarks for jbuilder itself 2017-05-08 16:56:21 +01:00
Jeremie Dimino 87df38d1f6 Fix call to git describe 2017-05-08 16:56:21 +01:00
Jeremie Dimino dce491e661 Add a subst command for watermarking files 2017-05-08 16:56:21 +01:00
Jeremie Dimino 4130bc2f63 Add support for ${version:<package>} 2017-05-05 12:26:56 +01:00
Jeremie Dimino ef6be544a3 Keep the package context after parsing 2017-05-05 11:21:46 +01:00
Jeremie Dimino fbe0810156 Improve location of errors for mispelled package in jbuild files 2017-05-05 10:59:07 +01:00
Jeremie Dimino f017e810d8 Remove some dead code
vjs is mostly unused now given that Jane Street jbuild files are
automatically rewritten. We keep the Vjs version though, just in case.
2017-05-02 13:34:52 +01:00
Jeremie Dimino b73e672cad Move js_of_ocaml to Buildable 2017-05-02 13:30:58 +01:00
Jeremie Dimino 411d1a2f2c Refactoring
- add Super_context.resolve_program and use it everywhere.
- add src/js_of_ocaml.mli
2017-05-02 12:01:27 +01:00
hhugo 86a4f0324a Add js_of_ocaml support (#60)
Add rules for building .js files from .bc files using js_of_ocaml as well as rules for separate js compilation when --dev is passed.
2017-05-02 11:25:37 +01:00
Rudi Grinberg afce8c7f4f Specify package for aliases
Useful for running tests for a specific package
2017-05-02 09:57:03 +01:00
Jeremie Dimino 416d4c6ead Move rules for module compilation in their own file 2017-04-28 15:13:43 +01:00
Jeremie Dimino a8c2dcc928 Move expand_and_eval_set to Super_context 2017-04-28 15:01:19 +01:00
Jeremie Dimino 5f270372bf Move Merlin rules to their own file 2017-04-28 14:54:16 +01:00
Jeremie Dimino 3a266c686e Cleanup lib stuff 2017-04-28 14:50:24 +01:00
Jeremie Dimino 130cadf855 Move pp stuff to Super_context.PP 2017-04-28 14:40:33 +01:00
Jeremie Dimino 17ae22295d Move Action_interpret to Super_context 2017-04-28 14:24:02 +01:00
Jeremie Dimino c6080880b3 Move ocamldep stuff to Ocamldep 2017-04-28 14:19:21 +01:00
Jeremie Dimino 6a40b7602c Move Dep_conf_interpret to Super_context 2017-04-28 14:01:47 +01:00
Jeremie Dimino 32c20cc561 Move var expansions to Super_context 2017-04-28 13:53:44 +01:00
Jeremie Dimino c18eabec72 Move a few more things to Utils and document them 2017-04-28 13:26:16 +01:00
Jeremie Dimino 1b6bc01a2d Split out Ocaml_flags 2017-04-28 13:19:33 +01:00
Jeremie Dimino c7add98ea6 Add a new Super_context module
Moved most of the global values computed at the beginning of
Gen_rules.Gen to Super_context.t. This will allow to split
gen_rules.ml into multiple files.
2017-04-28 11:58:41 +01:00
Jeremie Dimino d1d51595d2 Remove overlays for Mode and Cm_kind in Gen_rules 2017-04-28 10:40:09 +01:00
Jeremie Dimino 9498cb7013 Improve the error message for the last commit 2017-04-26 15:10:59 +01:00
Jeremie Dimino 2c124a0221 Detect conflicts between internal and external libraries 2017-04-26 15:04:32 +01:00
Jeremie Dimino 30ef4012e4 use code_errorf in Map.of_alist_exn 2017-04-26 13:41:10 +01:00
Jeremie Dimino 47d62fec04 typo 2017-04-26 13:38:28 +01:00
Jeremie Dimino 89cdd70563 Check for inconsistent (libraries ...) fields
Better fix for for #62
2017-04-26 13:36:52 +01:00
Jeremie Dimino 43572595b4 Detect clauses that are always false in (select ...) forms 2017-04-26 13:21:59 +01:00
Jeremie Dimino 05581ed8bc Don't crash when a dependency is duplicated
Fix #62
2017-04-26 13:00:10 +01:00
Jeremie Dimino 83f686a821 Hint for mistyped targets 2017-04-25 16:22:17 +01:00
Jeremie Dimino ee43c2718f Environment variable names are not case sensitive on Windows 2017-04-24 12:53:18 +01:00
Jeremie Dimino 229e7fa883 A couple of fixes for Windows
- open files in text mode when reading lines
- open files used for redirections with O_SHARE_DELETE
2017-04-21 17:22:41 +01:00
Rudi Grinberg 66f973cd4c Add Reason support (#58)
jbuilder now recognizes .re/.rei files as modules and pass them through refmt
2017-04-20 16:41:16 +01:00
Jeremie Dimino de0f65b4f4 Remove hard-coded knowledge of a a few specific ppx rewriters 2017-04-17 13:48:52 +01:00
Jeremie Dimino 238c22f3b8 Remove hardcoded PORTABLE_INT63 2017-04-17 13:35:42 +01:00
Jeremie Dimino 31922a590f Make sure the action working directory exist 2017-04-17 13:35:05 +01:00
Jeremie Dimino 2f4ec1c281 refactoring 2017-04-17 13:20:21 +01:00
Jeremie Dimino 07871b1190 Add support for ${lib-available:<name>} forms 2017-04-17 12:48:54 +01:00
Jeremie Dimino 72550dc3e0 Add a -p/--for-release-of-packages command line argument
`-p pkgs` is the equivalent of `--root . --only-packages pkgs`
2017-04-10 10:44:49 +01:00
Jeremie Dimino eb68c98f01 remove unused function 2017-04-10 10:10:49 +01:00
Jeremie Dimino d948edbc4c Add a (no_dynlink) field 2017-04-10 10:10:15 +01:00
Jeremie Dimino cc7ea35a14 Split the building of the .so and .a when needed 2017-04-10 10:10:15 +01:00
Jeremie Dimino d8f7d77a75 Don't generate an "exists_if ..." line in META files
This is useless sine the jbuild is auto-generated
2017-04-10 10:10:15 +01:00
Rudi Grinberg 3e3d92c9e5 Add menhir support (#42)
Adds the menhir stanza which desugars into a Rule.t with Support for:
* ocamlyacc like use
* modular parsers with --base
* passing extra flags

Also add tests and documentation.
2017-04-03 16:25:43 +01:00
Jeremie Dimino 4c3036b3cc Don't fail when opam return the same envirnonemt variable several times
Instead, print a warning and take the last bindings.

Fixes #46
2017-03-31 17:45:38 +01:00
Jeremie Dimino 83c1a6f5bd Fix compat with 4.06 2017-03-31 17:31:55 +01:00
Jeremie Dimino a7dbc12bac Sandbox different actions in different directories 2017-03-31 15:29:47 +01:00
Jeremie Dimino ffa1662ce9 Sandbox the build of the alias module with 4.02
To prevent the compiler from reading the cmi of the aliased modules.
2017-03-31 15:15:54 +01:00
Jeremie Dimino b9976773a3 Add support for sandboxing 2017-03-31 15:06:53 +01:00
Jeremie Dimino 21b29b0cb6 Refactor the job printing code
Fix #50
2017-03-31 13:44:53 +01:00
Jeremie Dimino 99b0d94335 Fixed the implementation of Filename.{split_,}ext 2017-03-31 13:34:30 +01:00
Jeremie Dimino d62429455b Add -keep-locs to the dev mode
Related to #44
2017-03-31 11:01:52 +01:00
Jeremie Dimino be75c8a4c9 Use -short-paths by default in dev-mode
Related to #44
2017-03-30 18:29:23 +01:00
Stephen Dolan b5ae1b1f52 Quieter output (#40)
Makes the output quieter by default and add a `--verbose` argument. Print a message when waiting for background jobs to finish only it it takes more than 0.5 seconds.
2017-03-30 17:36:58 +01:00
Jeremie Dimino d5b5322f12 Fix a bug in the interpretation of META files
Before this commit, when there was more than one applicable
assignment, the one with the lowest number of formal predicates was
selected instead of the one with the biggest number of formal predicates
2017-03-29 17:47:17 +01:00
Jeremie Dimino acb54677d4 Ignore test/ and example/ during bootstrap 2017-03-29 16:51:48 +01:00
Jeremie Dimino 1dda1179aa Add some doc in Path 2017-03-28 14:50:04 +01:00
François Bobot 5cca590e34 Don't use color feature for ocaml 4.02.3 2017-03-27 18:31:26 +01:00
François Bobot 2bf15067cb Remove comment for 4.02.3 2017-03-27 18:31:26 +01:00
Jeremie Dimino c48e90e357 Don't pass specific arguments when not using ppx_driver.runner
Fix #37
2017-03-27 14:31:00 +01:00
Jeremie Dimino 8e64aa0990 Lookup bash in the PATH
Closes #36
2017-03-24 11:04:24 +00:00
Jeremie Dimino 37b1125f03 Remove some unused functions 2017-03-23 10:45:09 +00:00
Jeremie Dimino 3ae53de431 Add an "executable" stanza and make it easier to install executables
(executable ...) is easier to use where there is a single executable.

Also add a (package ...) and (public_name <name>)/(public_names
(<names)) to executable/executables stanzas, to make it easier to
install executables.

Closes #33
2017-03-22 15:09:26 +00:00
Jeremie Dimino 48970caca3 Make sure the build of jbuilder doesn't call ocamlfind or opam 2017-03-22 08:19:26 +00:00
Jeremie Dimino 0c6b30efea tweaks for specific ppxs 2017-03-21 17:22:29 +00:00
Jeremie Dimino d2b8acc3b7 refactoring 2017-03-21 17:17:25 +00:00
Jeremie Dimino a1e898af5b Better error when plugins don't call the send function 2017-03-21 14:03:33 +00:00
Jeremie Dimino 9a8483c615 Give ocamlfind precedence over opam
If ocamlfind is present, don't try to call `opam config var lib`. The
previous behavior was breaking Facebook builds.

Also add ocamlfind as an optional dependency, to avoid race conditions
when installing ocamlfind in parallel.
2017-03-21 10:26:36 +00:00
Jeremie Dimino 34722a921a Ignore all errors while running `ocamlfind printconf path` 2017-03-20 14:34:28 +00:00
Jeremie Dimino 48ac99797e Improve error messages about invalid/missing pkg.opam files 2017-03-17 10:51:22 +00:00
Jeremie Dimino 6d1bb607c9 Fix #25 2017-03-15 15:44:27 +00:00
Jeremie Dimino 3b0c6403ee Fix a bug in Findlib.available
Fix #24
2017-03-15 12:07:20 +00:00
Jeremie Dimino 34a8951292 Improve dependency path printing 2017-03-15 11:49:31 +00:00
Jeremie Dimino 0dd24399ca Ignore opam files in ignored sub-trees 2017-03-15 11:41:44 +00:00
Jeremie Dimino bf4a4ba5f9 Add a regression test for #20 2017-03-15 11:13:49 +00:00
Jeremie Dimino dac70f4d72 Fix generation of @canonical tags 2017-03-15 10:44:55 +00:00
Jeremie Dimino 6cf93d69b5 Fix a bug in incremental compilation
If a rule had no dependencies and targets where missing, it wasn't
re-run.

Refactor the code and fix this bug.
2017-03-15 10:43:03 +00:00
Jeremie Dimino ec6b89ea11 Improve errors for ${lib:...} 2017-03-15 09:46:42 +00:00
Jeremie Dimino 2a5dc053fb Fix sexp_of_t (Update_file ...) 2017-03-15 09:15:47 +00:00
Jeremie Dimino e7b543e7cb Don't scan the tree a second time for files_recursively_in 2017-03-15 09:10:22 +00:00
Jeremie Dimino a04b0c4dcc Improve 'required_by ...' messages 2017-03-15 08:59:00 +00:00
Jeremie Dimino c437069fff Improve package not found errors 2017-03-14 15:57:22 +00:00
Jeremie Dimino 6ae036a318 Fix fix for #20 2017-03-14 08:02:01 +00:00
Jeremie Dimino 132ddca42b generate @canonical doc tags 2017-03-13 14:08:15 +00:00
Jeremie Dimino 020da39542 as-ppx.exe --> ppx.exe 2017-03-13 13:36:01 +00:00
Hugo Heuzard 63462fd452 Fix deps with multiple glob_files 2017-03-13 10:13:39 +00:00
Jérémie Dimino 1dcf38af93 Fix Path.extract_build* functions when applied on the build_dir itself
This should fix #20
2017-03-13 08:53:41 +00:00
Jérémie Dimino ba08f27678 Add a few more redirections
- with-{stdout,stderr,outputs}-to
- ignore-{stdout,stderr,outputs}
- variable ${null} for /dev/null or NUL on Win32
2017-03-13 08:10:59 +00:00