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

(package) dependencies do not work when directory targets are used #8915

Closed
emillon opened this issue Oct 11, 2023 · 0 comments · Fixed by #8953
Closed

(package) dependencies do not work when directory targets are used #8915

emillon opened this issue Oct 11, 2023 · 0 comments · Fixed by #8953
Assignees

Comments

@emillon
Copy link
Collaborator

emillon commented Oct 11, 2023

When the contents of a package are recorded in dune-package files, we don't make a distinction between files and directory targets: just the edge of the directory target is recorded in the (files) field.

Later, when (package p) is expanded, this causes the following error:

Error: File unavailable:
/path/to/share/X
This is not a regular file (S_DIR)

There are several ways we could try to fix this:

  1. expand the list of all installed files in dune-package (rather than just storing the directory name)
  2. recursively copy the contents when something depends on an installed "thing" that happens to be a directory (not sure that's possible or a good idea)
  3. add an extra field (dirs) in dune-package files which contains "opaque" directories

The first one seems the most reasonable.

@emillon emillon self-assigned this Oct 11, 2023
@emillon emillon linked a pull request Oct 11, 2023 that will close this issue
emillon added a commit to emillon/dune that referenced this issue Oct 17, 2023
Fixes ocaml#8915

We add a `(dir PATH)` construct to the `(files)` field in `dune-package`
files. It is used by `(package)` dependencies: they are expanded to the
recursive contents of the installed directory.

Signed-off-by: Etienne Millon <[email protected]>
emillon added a commit to emillon/dune that referenced this issue Oct 17, 2023
Fixes ocaml#8915

We add a `(dir PATH)` construct to the `(files)` field in `dune-package`
files. It is used by `(package)` dependencies: they are expanded to the
recursive contents of the installed directory.

Signed-off-by: Etienne Millon <[email protected]>
emillon added a commit to emillon/dune that referenced this issue Oct 23, 2023
Fixes ocaml#8915

We add a `(dir PATH)` construct to the `(files)` field in `dune-package`
files. It is used by `(package)` dependencies: they are expanded to the
recursive contents of the installed directory.

Signed-off-by: Etienne Millon <[email protected]>
emillon added a commit that referenced this issue Oct 23, 2023
* feat: record installed directories in dune-package

Fixes #8915

We add a `(dir PATH)` construct to the `(files)` field in `dune-package`
files. It is used by `(package)` dependencies: they are expanded to the
recursive contents of the installed directory.

Signed-off-by: Etienne Millon <[email protected]>
emillon added a commit to emillon/opam-repository that referenced this issue Nov 28, 2023
CHANGES:

- Introduce `$ dune ocaml doc` to open and browse documentation. (ocaml/dune#7262, fixes
  ocaml/dune#6831, @EmileTrotignon)

- `dune cache trim` now accepts binary byte units: `KiB`, `MiB`, etc. (ocaml/dune#8618,
  @Alizter)

- No longer force colors for OCaml 4.03 and 4.04 (ocaml/dune#8778, @rgrinberg)

- Introduce new experimental odoc rules (ocaml/dune#8803, @jonjudlam)

- Introduce the `runtest_alias` field to the `cram` stanza. This allows
  removing default `runtest` alias from tests. (@rgrinberg, ocaml/dune#8887)

- Do not ignore libraries named `bigarray` when they are defined in conjunction
  with OCaml 5.0 (ocaml/dune#8902, fixes ocaml/dune#8901, @rgrinberg)

- Dependencies in the copying sandbox are now writeable (ocaml/dune#8920, @rgrinberg)

- Absent packages shouldn't prevent all rules from being loaded (ocaml/dune#8948, fixes
  ocaml/dune#8630, @rgrinberg)

- Correctly determine the stanza of menhir modules when `(include_subdirs
  qualified)` is enabled (@rgrinberg, ocaml/dune#8949, fixes ocaml/dune#7610)

- Display cache location in Dune log (ocaml/dune#8974, @nojb)

- Re-run actions whenever `(expand_aliases_in_sandbox)` changes (ocaml/dune#8990,
  @rgrinberg)

- Rules that only use internal dune actions (`write-file`, `echo`, etc.) can
  now be sandboxed. (ocaml/dune#9041, fixes ocaml/dune#8854, @rgrinberg)

- Do not re-run rules when their location changes (ocaml/dune#9052, @rgrinberg)

- Correctly ignore `bigarray` on recent version of OCaml (ocaml/dune#9076, @rgrinberg)

- Add `test_` prefix to default test name in `dune init project` (ocaml/dune#9257, fixes
  ocaml/dune#9131, @9sako6)

- Add `coqdoc_flags` field to `coq` field of `env` stanza allowing the setting
  of workspace-wide defaults for `coqdoc_flags`. (ocaml/dune#9280, fixes ocaml/dune#9139, @Alizter)

- [coq rules] Be more tolerant when coqc --print-version / --config don't work
  properly, and fallback to a reasonable default. This fixes problems when
  building Coq projects with `(stdlib no)` and likely other cases. (ocaml/dune#8966, fix
  ocaml/dune#8958, @Alizter, reported by Lasse Blaauwbroek)

- Dune will now run at a lower framerate of 15 fps rather than 60 when
  `INSIDE_EMACS`. (ocaml/dune#8812, @Alizter)

- dune-build-info: when `version=""` is found in a `META` file, we now return
  `None` as a version string (ocaml/dune#9177, @emillon)

- Dune can now be built and installed on Haiku (ocaml/dune#8795, fix ocaml/dune#8551, @Alizter)

- Mark installed directories in `dune-package` files. This fixes `(package)`
  dependencies against packages that contain such directories. (ocaml/dune#8953, fixes
  ocaml/dune#8915, @emillon)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
1 participant