Conversation
a753c6c to
0c5cce0
Compare
|
Can you say a few words for the motivation behind this addition? About the name |
|
The main motivation is a straightforward one. Allow a way of generating rules without promoting them to the source. Why a different name? Because this include has different semantics and limitations that are (likely) impossible to lift. So I think a different name is appropriate. |
Sorry for the naive question, but what does "promoting them to the source" mean here? I looked at the test, but couldn't figure out what is special about the new form (vs a normal |
|
When you write (include foo), the file foo must exist in the source directory. To make foo be generated by a rule, we workaround it by making the rule promotable. If you use this new stanza, you can skip the promotion step and use a regular rule to generate stanzas provided the limitations in the description are acceptable to you. |
I had missed that, thanks. Indeed, this is a cool addition! Being able to define executables in this way is already a big advance; eg defining a test suite for every file in a directory. |
be69932 to
9878c10
Compare
99d519b to
d959d5b
Compare
nojb
left a comment
There was a problem hiding this comment.
LGTM (but I only looked at the code changes briefly)
d959d5b to
01e975a
Compare
1bb0c70 to
5bffe77
Compare
Introduce the [dynamic_include] stanza. It's like [(include ..)], but doesn't allow us to generate static stanzas (see [Dune_file0] for what those are). Signed-off-by: Rudi Grinberg <me@rgrinberg.com> <!-- ps-id: 55957fb9-7975-4cd6-aced-4d9d348dfbd6 -->
5bffe77 to
672ab25
Compare
CHANGES: ### Added - Introduce a `(dynamic_include ..)` stanza. This is like `(include foo)` but allows `foo` to be the target of a rule. Currently, there are some limitations on the stanzas that can be generated. For example, public executables, libraries are currently forbidden. (ocaml/dune#9913, @rgrinberg) - Introduce `$ dune promotion list` to print the list of available promotions. (ocaml/dune#9705, @moyodiallo) - If Sherlodoc is installed, add a search bar in generated HTML docs (ocaml/dune#9772, @EmileTrotignon) - Add `only_sources` field to `copy_files` stanza (ocaml/dune#9827, fixes ocaml/dune#9709, @jchavarri) - The `(foreign_library)` stanza now supports the `(enabled_if)` field. (ocaml/dune#9914, @nojb) ### Fixed - Fix `$ dune install -p` incorrectly recognizing packages that are supposed to be filtered (ocaml/dune#9879, fixes ocaml/dune#4814, @rgrinberg) - subst: correctly handle opam files in opam/ subdirectory (ocaml/dune#9895, fixes ocaml/dune#9862, @emillon) - Odoc private rules are not set up if a library is not available due to `enabled_if` (ocaml/dune#9897, @rgrinberg and @jchavarri) ### Changed - When dune language 3.14 is enabled, resolve the binary in `(run %{bin:..} ..)` from where the binary is built. (ocaml/dune#9708, @rgrinberg) - boot: remove single-command bootstrap. This was an alternative bootstrap strategy that was used in certain conditions. Removal makes the bootstrap a bit slower on Linux when only a single core is available, but bootstrap is now reproducible in all cases. (ocaml/dune#9735, fixes ocaml/dune#9507, @emillon)
CHANGES: ### Added - Introduce a `(dynamic_include ..)` stanza. This is like `(include foo)` but allows `foo` to be the target of a rule. Currently, there are some limitations on the stanzas that can be generated. For example, public executables, libraries are currently forbidden. (ocaml/dune#9913, @rgrinberg) - Introduce `$ dune promotion list` to print the list of available promotions. (ocaml/dune#9705, @moyodiallo) - If Sherlodoc is installed, add a search bar in generated HTML docs (ocaml/dune#9772, @EmileTrotignon) - Add `only_sources` field to `copy_files` stanza (ocaml/dune#9827, fixes ocaml/dune#9709, @jchavarri) - The `(foreign_library)` stanza now supports the `(enabled_if)` field. (ocaml/dune#9914, @nojb) ### Fixed - Fix `$ dune install -p` incorrectly recognizing packages that are supposed to be filtered (ocaml/dune#9879, fixes ocaml/dune#4814, @rgrinberg) - subst: correctly handle opam files in opam/ subdirectory (ocaml/dune#9895, fixes ocaml/dune#9862, @emillon) - Odoc private rules are not set up if a library is not available due to `enabled_if` (ocaml/dune#9897, @rgrinberg and @jchavarri) ### Changed - When dune language 3.14 is enabled, resolve the binary in `(run %{bin:..} ..)` from where the binary is built. (ocaml/dune#9708, @rgrinberg) - boot: remove single-command bootstrap. This was an alternative bootstrap strategy that was used in certain conditions. Removal makes the bootstrap a bit slower on Linux when only a single core is available, but bootstrap is now reproducible in all cases. (ocaml/dune#9735, fixes ocaml/dune#9507, @emillon)
CHANGES: ### Added - Introduce a `(dynamic_include ..)` stanza. This is like `(include foo)` but allows `foo` to be the target of a rule. Currently, there are some limitations on the stanzas that can be generated. For example, public executables, libraries are currently forbidden. (ocaml/dune#9913, @rgrinberg) - Introduce `$ dune promotion list` to print the list of available promotions. (ocaml/dune#9705, @moyodiallo) - If Sherlodoc is installed, add a search bar in generated HTML docs (ocaml/dune#9772, @EmileTrotignon) - Add `only_sources` field to `copy_files` stanza (ocaml/dune#9827, fixes ocaml/dune#9709, @jchavarri) - The `(foreign_library)` stanza now supports the `(enabled_if)` field. (ocaml/dune#9914, @nojb) ### Fixed - Fix `$ dune install -p` incorrectly recognizing packages that are supposed to be filtered (ocaml/dune#9879, fixes ocaml/dune#4814, @rgrinberg) - subst: correctly handle opam files in opam/ subdirectory (ocaml/dune#9895, fixes ocaml/dune#9862, @emillon) - Odoc private rules are not set up if a library is not available due to `enabled_if` (ocaml/dune#9897, @rgrinberg and @jchavarri) ### Changed - When dune language 3.14 is enabled, resolve the binary in `(run %{bin:..} ..)` from where the binary is built. (ocaml/dune#9708, @rgrinberg) - boot: remove single-command bootstrap. This was an alternative bootstrap strategy that was used in certain conditions. Removal makes the bootstrap a bit slower on Linux when only a single core is available, but bootstrap is now reproducible in all cases. (ocaml/dune#9735, fixes ocaml/dune#9507, @emillon)
Introduce the [dynamic_include] stanza. It's like [(include ..)], but
doesn't allow us to generate static stanzas and a few other stanzas that can affect the entire context. Those include:
(section bin).The limitation on generating private libraries is possible to lift, but it will take quite a bit more effort. I will do so in subsequent PR's.
TODO
dynamic_includeindynamic_includeincludeindynamic_include.Signed-off-by: Rudi Grinberg me@rgrinberg.com