-
Notifications
You must be signed in to change notification settings - Fork 412
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
ctypes external_library_name doesn't support a value which doesn't translate to a valid ocaml module name #5511
Comments
cc @mbacarella |
Hmm, right. It takes a Should be a pretty simple fix. What's the space of valid module names? Is it |
at least |
and apostrophe https://ocaml.org/manual/lex.html#sss:lex:identifiers |
is there more to do than fixing |
I would prefer an alternative version which mangles the name. The fix should also check that the name given in the dune/src/dune_rules/ctypes_stanza.ml Lines 128 to 135 in 8677fe3
You could use the StringLike module to easily create a decoder: dune/src/dune_util/stringlike.mli Line 6 in 8677fe3
like the one dune/src/dune_engine/section.ml Line 59 in 8677fe3
|
What would be a name that can't be mangled? |
It is perhaps not the mangling that would fail, but perhaps something else. If the whole toolchain can support |
…ocaml issue ocaml#5511 Signed-off-by: Louis Roché (Ahrefs) <[email protected]>
@bobot is it what you were thinking about? https://github.com/ocaml/dune/pull/5667/files The next step would be to do |
…ocaml issue ocaml#5511 Signed-off-by: Louis Roché (Ahrefs) <[email protected]>
Potentially fixed by #5667 |
I don't know how to test for that |
looks ok |
…ocaml issue ocaml#5511 Signed-off-by: Louis Roché (Ahrefs) <[email protected]>
…ocaml issue ocaml#5511 Signed-off-by: Louis Roché (Ahrefs) <[email protected]>
add test for external library name that isn't valid in ocaml issue ocaml#5511 Signed-off-by: Louis Roché (Ahrefs) <[email protected]>
…ocaml issue ocaml#5511 Signed-off-by: Louis Roché (Ahrefs) <[email protected]>
add test for external library name that isn't valid in ocaml issue #5511 Signed-off-by: Louis Roché (Ahrefs) <[email protected]> ps-id: 0B6EC9CA-8480-4955-9DF1-9A066A118968
…ne-site, dune-rpc, dune-rpc-lwt, dune-private-libs, dune-glob, dune-configurator, dune-build-info, dune-action-plugin and chrome-trace (3.2.0) CHANGES: - Fixed ``dune describe workspace --with-deps`` so that it correctly handles Reason files, as well as files any other dialect. (ocaml/dune#5701, @esope) - Disable alerts when compiling code in vendored directories (ocaml/dune#5683, @NathanReb) - Fixed ``dune describe --with-deps``, that crashed when some preprocessing was required in a dune file using ``per_module``. (ocaml/dune#5682, fixes ocaml/dune#5680, @esope) - Add `$ dune describe pp` to print the preprocssed ast of sources. (ocaml/dune#5615, fixes ocaml/dune#4470, @cannorin) - Report dune file evaluation errors concurrently. In the same way we report build errors. (ocaml/dune#5655, @rgrinberg) - Watch mode now default to clearing the terminal on rebuild (ocaml/dune#5636, fixes, ocaml/dune#5216, @rgrinberg) - The output of jobs that finished but were cancelled is now omitted. (ocaml/dune#5631, fixes ocaml/dune#5482, @rgrinberg) - Allows to configure all the default destination directories with `./configure` (adds `bin`, `sbin`, `data`, `libexec`). Use `OPAM_SWITCH_PREFIX` instead of calling the `opam` binaries in `dune install`. Fix handling of multiple `libdir` in `./configure` for handling `/usr/lib/ocaml/` and `/usr/local/lib/ocaml`. In `dune install` forbid relative directories in `libdir`, `docdir` and others specific directory setting because their handling was inconsistent (ocaml/dune#5516, fixes ocaml/dune#3978 and ocaml/dune#5455, @bobot) - `--terminal-persistence=clear-on-rebuild` will no longer destroy scrollback on some terminals (ocaml/dune#5646, @rgrinberg) - Add a fmt command as a shortcut of `dune build @fmt --auto-promote` (ocaml/dune#5574, @tmattio) - Watch mode now tracks copied external files, external directories for dependencies, dune files in OCaml syntax, files used by `include` stanzas, dune-project, opam files, libraries builtin with compiler, and foreign sources (ocaml/dune#5627, ocaml/dune#5645, ocaml/dune#5652, ocaml/dune#5656, ocaml/dune#5672, ocaml/dune#5691, ocaml/dune#5722, fixes ocaml/dune#5331, @rgrinberg) - Improve metrics for cram tests. Include test names in the event and add a category for cram tests (ocaml/dune#5626, @rgrinberg) - Allow specifying multiple licenses in project file (ocaml/dune#5579, fixes ocaml/dune#5574, @liyishuai) - Match `glob_files` only against files in external directories (ocaml/dune#5614, fixes ocaml/dune#5540, @rgrinberg) - Add pid's to chrome trace output (ocaml/dune#5617, @rgrinberg) - Fix race when creating local cache directory (ocaml/dune#5613, fixes ocaml/dune#5461, @rgrinberg) - Add `not` to boolean expressions (ocaml/dune#5610, fix ocaml/dune#5503, @rgrinberg) - Fix relative dependencies outside the workspace (ocaml/dune#4035, fixes ocaml/dune#5572, @bobot) - Allow to specify `--prefix` via the environment variable `DUNE_INSTALL_PREFIX` (ocaml/dune#5589, @vapourismo) - Dune-site.plugin: add support for `archive(native|byte, plugin)` used in the wild before findlib documented `plugin(native|byte)` in 2015 (ocaml/dune#5518, @bobot) - Fix a bug where Dune would not correctly interpret `META` files in alternative layout (ie when the META file is named `META.$pkg`). The `Llvm` bindings were affected by this issue. (ocaml/dune#5619, fixes ocaml/dune#5616, @nojb) - Support `(binaries)` in `(env)` in dune-workspace files (ocaml/dune#5560, fix ocaml/dune#5555, @emillon) - (mdx) stanza: add support for (locks). (ocaml/dune#5628, fixes ocaml/dune#5489, @emillon) - (mdx) stanza: support including files in different directories using relative paths, and provide better error messages when paths are invalid (ocaml/dune#5703, ocaml/dune#5704, fixes ocaml/dune#5596, @emillon) - Fix ctypes rules for external lib names which aren't valid ocaml names (ocaml/dune#5667, fixes ocaml/dune#5511, @Khady)
Fixed by 3075bd4 |
Expected Behavior
When using
external_library_name icu-io
dune shouldn't throw an error. It should translate the name into something valid in ocaml instead.Actual Behavior
The file
icu_io__c_library_flags.sexp
also contains("-licu_io")
which is incorrectReproduction
Specifications
dune
(output ofdune --version
): 3.0.3ocaml
(output ofocamlc --version
): 4.12.1The text was updated successfully, but these errors were encountered: