Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for response files #1256

Merged
4 commits merged into from Sep 13, 2018
Merged

Add support for response files #1256

4 commits merged into from Sep 13, 2018

Conversation

ghost
Copy link

@ghost ghost commented Sep 12, 2018

This PR adds support for passing arguments to the OCaml compiler via a response file when the list of arguments is too long. This is to bypass the low command line length limit of Windows.

Implementation

This PR adds global registry indicating whether programs support response files. It is filled while creating the context. It's not the cleanest way to do it, but it is a simple way to cut through all the layers and make sure the response file is used consistently.

A possible improve would be to add a type Program.t that would store the program path and whether it supports a response file, and then use this type instead of Path.t in the various places.

Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
@rgrinberg
Copy link
Member

Appveyor complains:

File "src\\process.ml", line 244, characters 12-29:
Error: Unbound module Response_file

Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
@rgrinberg
Copy link
Member

Let's also add a CHANGES entry.

Copy link
Member

@rgrinberg rgrinberg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me. Can we get a round of testing from @jordwalke or @bryphe

@bryphe
Copy link
Contributor

bryphe commented Sep 12, 2018

Awesome! Thanks @diml and @rgrinberg . I'll test it out on esy's build and report back.

Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
@bryphe
Copy link
Contributor

bryphe commented Sep 12, 2018

Hitting an issue building lwt@4.1.0 on Windows, which is blocking testing the fix at the moment: esy/esy#450

@ghost
Copy link
Author

ghost commented Sep 13, 2018

I tested this feature this morning on a WIndows machine by lowering the limit and it seems to work well. We can assume that this PR is correct.

@ghost ghost merged commit d45ef52 into ocaml:master Sep 13, 2018
@bryphe
Copy link
Contributor

bryphe commented Sep 13, 2018

Thanks @diml for your work on this!

@jordwalke
Copy link
Contributor

Thank you @diml!

rgrinberg added a commit to rgrinberg/opam-repository that referenced this pull request Sep 14, 2018
CHANGES:

- Ignore stderr output when trying to find out the number of jobs
  available (ocaml/dune#1118, fix ocaml/dune#1116, @diml)

- Fix error message when the source directory of `copy_files` does not exist.
  (ocaml/dune#1120, fix ocaml/dune#1099, @emillon)

- Highlight error locations in error messages (ocaml/dune#1121, @emillon)

- Display actual stanza when package is ambiguous (ocaml/dune#1126, fix ocaml/dune#1123, @emillon)

- Add `dune unstable-fmt` to format `dune` files. The interface and syntax are
  still subject to change, so use with caution. (ocaml/dune#1130, fix ocaml/dune#940, @emillon)

- Improve error message for `dune utop` without a library name (ocaml/dune#1154, fix
  ocaml/dune#1149, @emillon)

- Fix parsing `ocamllex` stanza in jbuild files (ocaml/dune#1150, @rgrinberg)

- Highlight multi-line errors (ocaml/dune#1131, @anuragsoni)

- Do no try to generate shared libraries when this is not supported by
  the OS (ocaml/dune#1165, fix ocaml/dune#1051, @diml)

- Fix `Flags.write_{sexp,lines}` in configurator by avoiding the use of
  `Stdune.Path` (ocaml/dune#1175, fix ocaml/dune#1161, @rgrinberg)

- Add support for `findlib.dynload`: when linking an executable using
  `findlib.dynload`, automatically record linked in libraries and
  findlib predicates (ocaml/dune#1172, @bobot)

- Add support for promoting a selected list of files (ocaml/dune#1192, @diml)

- Add an emacs mode providing helpers to promote correction files
  (ocaml/dune#1192, @diml)

- Improve message suggesting to remove parentheses (ocaml/dune#1196, fix ocaml/dune#1173, @emillon)

- Add `(wrapped (transition "..message.."))` as an option that will generate
  wrapped modules but keep unwrapped modules with a deprecation message to
  preserve compatibility. (ocaml/dune#1188, fix ocaml/dune#985, @rgrinberg)

- Fix the flags passed to the ppx rewriter when using `staged_pps` (ocaml/dune#1218, @diml)

- Add `(env var)` to add a dependency to an environment variable.
  (ocaml/dune#1186, @emillon)

- Add a simple version of a polling mode: `dune build -w` keeps
  running and restarts the build when something change on the
  filesystem (ocaml/dune#1140, @kodek16)

- Cleanup the way we detect the library search path. We no longer call
  `opam config var lib` in the default build context (ocaml/dune#1226, @diml)

- Make test stanzas honor the -p flag. (ocaml/dune#1236, fix ocaml/dune#1231, @emillon)

- Test stanzas take an optional (action) field to customize how they run (ocaml/dune#1248,
  ocaml/dune#1195, @emillon)

- Add support for private modules via the `private_modules` field (ocaml/dune#1241, fix
  ocaml/dune#427, @rgrinberg)

- Add support for passing arguments to the OCaml compiler via a
  response file when the list of arguments is too long (ocaml/dune#1256, @diml)

- Do not print diffs by default when running inside dune (ocaml/dune#1260, @diml)

- Interpret `$ dune build dir` as building the default alias in `dir`. (ocaml/dune#1259,
  @rgrinberg)

- Make the `dynlink` library available without findlib installed (ocaml/dune#1270, fix
  ocaml/dune#1264, @rgrinberg)
@ghost
Copy link
Author

ghost commented Sep 17, 2018

No problem, happy to help improve Windows support!

This pull request was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants