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)
With trunk OCaml:
The missing dependencies are an error in the reduction of the dependency formula.
ocaml-option-32bitis 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-msvcandwinpthreadsare 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 satisfiedThe 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
postisfalseand the filter reduces to{post}.It can be worked around by adding an unscrupulous
{build}dependency to the affected atoms: