53 lines
1.5 KiB
Perl
53 lines
1.5 KiB
Perl
|
|
Exercise dune resolving the post dependencies found in compiler packages.
|
||
|
|
|
||
|
|
$ . ./helpers.sh
|
||
|
|
$ mkrepo
|
||
|
|
|
||
|
|
$ cat >dune-workspace << EOF
|
||
|
|
> (lang dune 3.16)
|
||
|
|
> (lock_dir
|
||
|
|
> (path dune.lock)
|
||
|
|
> (repositories mock)
|
||
|
|
> (solver_env
|
||
|
|
> (os linux)))
|
||
|
|
> EOF
|
||
|
|
|
||
|
|
$ mkpkg host-system-other
|
||
|
|
|
||
|
|
$ mkpkg system-mingw << EOF
|
||
|
|
> available: os = "win32"
|
||
|
|
> EOF
|
||
|
|
|
||
|
|
$ mkpkg ocaml << EOF
|
||
|
|
> depends: [
|
||
|
|
> "ocaml-base-compiler"
|
||
|
|
> ]
|
||
|
|
> EOF
|
||
|
|
|
||
|
|
This package has a dependency cycle with the "ocaml" package, broken
|
||
|
|
by the use of post dependencies. It also contains a formula with no
|
||
|
|
solutions when the "post" variable is set to "false" on non-windows
|
||
|
|
systems. Opam evaluates dependency formulae with post=true and then
|
||
|
|
does further filtering to remove post dependencies from dependency
|
||
|
|
lists to prevent circular dependencies at package build time.
|
||
|
|
$ mkpkg ocaml-base-compiler << EOF
|
||
|
|
> depends: [
|
||
|
|
> "ocaml" {post}
|
||
|
|
> (("arch-x86_64" {os = "win32" & arch = "x86_64"} & "system-mingw" &
|
||
|
|
> "mingw-w64-shims" {os-distribution = "cygwin" & build}) |
|
||
|
|
> ("arch-x86_32" {os = "win32"} & "ocaml-option-bytecode-only" &
|
||
|
|
> "system-mingw" &
|
||
|
|
> "mingw-w64-shims" {os-distribution = "cygwin" & build}) |
|
||
|
|
> "host-system-other" {os != "win32" & post})
|
||
|
|
> ]
|
||
|
|
> EOF
|
||
|
|
|
||
|
|
$ solve ocaml-base-compiler
|
||
|
|
Solution for dune.lock:
|
||
|
|
- ocaml-base-compiler.0.0.1
|
||
|
|
|
||
|
|
Ensure that packages can be resolved at build time. This checks that
|
||
|
|
the dependency cycle between the "ocaml" and "ocaml-base-compiler"
|
||
|
|
packages is successfully broken by the use of post dependencies.
|
||
|
|
$ dune build
|