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

Allow globbing in the install stanza #6018

Closed
ivg opened this issue Jul 27, 2022 · 2 comments · Fixed by #6250 or ocaml/opam-repository#22498
Closed

Allow globbing in the install stanza #6018

ivg opened this issue Jul 27, 2022 · 2 comments · Fixed by #6250 or ocaml/opam-repository#22498

Comments

@ivg
Copy link
Member

ivg commented Jul 27, 2022

Desired Behavior

The following should be accepted,
(install
  (files (glob_files *.lisp))
  (package bap-primus-lisp)
  (section (site (bap lisp))))

Instead if fails with

dune build
File "plugins/primus_lisp/site-lisp/dune", line 2, characters 9-28:
2 |   (files (glob_files *.lisp))
             ^^^^^^^^^^^^^^^^^^^
Error: invalid format, <name> or (<name> as <install-as>) expected

Justification

Sometimes we just want to install all data files from a certain directory, like all *.png files or lisp codes, etc. Other build systems, e.g., oasis, cmake, autotools commonly allow this, so this sounds as an expected feature for a build system. Right now I have to enumerate each file which bloats the dune file and makes it easy to forget to include a file.

Alternatives

Other build systems allow the installation of directories, which might (or might not) be easier to implement.

Workarounds

Right now I just abuse Emacs C-u M-| ls to include all files in the directory, but if there are any other options (like generating the installation files) or some stanza that I am missing, the I will be happy to learn.

@emillon
Copy link
Collaborator

emillon commented Jul 28, 2022

See #5059 for installable directories. I think there's an open issue about globbing in install but I can't find it at the moment.

@emillon
Copy link
Collaborator

emillon commented Sep 15, 2022

#6139 will enable it but through the use of a generator.

emillon added a commit to emillon/opam-repository that referenced this issue Nov 14, 2022
…ne-site, dune-rpc, dune-rpc-lwt, dune-private-libs, dune-glob, dune-configurator, dune-build-info, dune-action-plugin and chrome-trace (3.6.0)

CHANGES:

- Forbid multiple instances of dune running concurrently in the same workspace.
  (ocaml/dune#6360, fixes ocaml/dune#236, @rgrinberg)

- Allow promoting into source directories specified by `subdir` (ocaml/dune#6404, fixes
  ocaml/dune#3502, @rgrinberg)

- Make dune describe workspace return the correct root path
  (ocaml/dune#6380, fixes ocaml/dune#6379, @esope)

- Introduce a `$ dune ocaml top-module` subcommand to load modules directly
  without sealing them behind the signature. (ocaml/dune#5940, @rgrinberg)

- [ctypes] do not mangle user written names in the ctypes stanza (ocaml/dune#6374, fixes
  ocaml/dune#5561, @rgrinberg)

- Support `CLICOLOR` and `CLICOLOR_FORCE` to enable/disable/force ANSI
  colors. (ocaml/dune#6340, fixes ocaml/dune#6323, @MisterDA).

- Forbid private libraries with `(package ..)` set from depending on private
  libraries that don't belong to a package (ocaml/dune#6385, fixes ocaml/dune#6153, @rgrinberg)

- Allow `Byte_complete` binaries to be installable (ocaml/dune#4873, @AltGr, @rgrinberg)

- Revive `$ dune external-lib-deps` under `$ dune describe external-lib-deps`.
  (ocaml/dune#6045, @moyodiallo)

- Fix running inline tests in bytecode mode (ocaml/dune#5622, fixes ocaml/dune#5515, @dariusf)

- [ctypes] always re-run `pkg-config` because we aren't tracking its external
  dependencies (ocaml/dune#6052, @rgrinberg)

- [ctypes] remove dependency on configurator in the generated rules (ocaml/dune#6052,
  @rgrinberg)

- Build progress status now shows number of failed jobs (ocaml/dune#6242, @Alizter)

- Allow absolute build directories to find public executables. For example,
  those specified with `(deps %{bin:...})` (ocaml/dune#6326, @anmonteiro)

- Create a fake socket file `_build/.rpc/dune` on windows to allow rpc clients
  to connect using the build directory. (ocaml/dune#6329, @rgrinberg)

- Prevent crash if absolute paths are used in the install stanza and in
  recursive globs. These cases now result in a user error. (ocaml/dune#6331, @gridbugs)

- Add `(glob_files <glob>)` and `(glob_files_rec <glob>)` terms to the `files`
  field of the `install` stanza (ocaml/dune#6250, closes ocaml/dune#6018, @gridbugs)

- Allow `:standard` in the `(modules)` field of the `coq.pp` stanza (ocaml/dune#6229,
  fixes ocaml/dune#2414, @Alizter)

- Fix passing of flags to dune coq top (ocaml/dune#6369, fixes ocaml/dune#6366, @Alizter)

- Extend the promotion CLI to a `dune promotion` group: `dune promote` is moved
  to `dune promotion apply` (the former still works) and the new `dune promotion
  diff` command can be used to just display the promotion without applying it.
  (ocaml/dune#6160, fixes ocaml/dune#5368, @emillon)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment