Skip to content

--assume-built dependency check failure #6621

Description

@dra27

With trunk OCaml:

$ ./configure -C --prefix $PWD/_opam --docdir $PWD/_opam/doc/ocaml
$ make -j
$ opam switch create . --empty
$ opam pin add --kind=path --no-action ocaml-variants .
$ opam install ocaml-variants --assume-built

<><> Synchronising pinned packages ><><><><><><><><><><><><><><><><><><><><><><>
[ocaml-variants.5.5.0+trunk] synchronised (no changes)

[WARNING] You specified '--assume-built' but the following dependencies aren't installed, skipping
            - ocaml-variants: ocaml-option-32bit system-mingw system-msvc winpthreads
          Launch 'opam install ocaml-variants --deps-only' (and recompile) to install them.

Nothing to do.
# To update the current shell environment, run: eval $(opam env)

The missing dependencies are an error in the reduction of the dependency formula.

  • ocaml-option-32bit is in a disjunction ("host-arch-x86_64" {os != "win32" & arch = "x86_64" & post} | ( .. ) where the filter in the first formula reduces to {post}
  • system-mingw, system-msvc and winpthreads are buried in disjunctions of the form ("arch-x86_64" {os = "win32" & arch = "x86_64"} & ... where the first filter of the first atom of the conjunction is not satisfied

The check is implemented as map, but at a cursory look it looks like we should be reducing the formula short circuiting conjunctions when a term reduces to false and short circuiting disjunctions if post is false and the filter reduces to {post}.

It can be worked around by adding an unscrupulous {build} dependency to the affected atoms:

$ opam install ocaml-variants --assume-built

<><> Synchronising pinned packages ><><><><><><><><><><><><><><><><><><><><><><>
[ocaml-variants.5.5.0+trunk] synchronised (file:///home/dra/ocaml)
[ocaml-variants] Installing new package description from upstream file:///home/dra/ocaml

The following actions will be performed:
=== install 11 packages
  ∗ base-bigarray     base
  ∗ base-domains      base
  ∗ base-effects      base
  ∗ base-nnp          base
  ∗ base-threads      base
  ∗ base-unix         base
  ∗ host-arch-x86_64  1
  ∗ host-system-other 1
  ∗ ocaml             5.5.0
  ∗ ocaml-config      3
  ∗ ocaml-variants    5.5.0+trunk (pinned)

Proceed with ∗ 11 installations? [y/n] y

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
⬇ retrieved ocaml-config.3  (cached)
∗ installed base-bigarray.base
∗ installed base-threads.base
∗ installed base-unix.base
∗ installed host-arch-x86_64.1
∗ installed host-system-other.1
∗ installed ocaml-variants.5.5.0+trunk
∗ installed ocaml-config.3
∗ installed ocaml.5.5.0
∗ installed base-domains.base
∗ installed base-effects.base
∗ installed base-nnp.base
Done.
# To update the current shell environment, run: eval $(opam env)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions