This commit is contained in:
parent
aa2ff7b2f0
commit
2f3113f55d
11742 changed files with 1223940 additions and 0 deletions
|
|
@ -0,0 +1,148 @@
|
|||
$ . ./helpers.sh
|
||||
$ mkrepo
|
||||
|
||||
Set up two build contexts: a default one for linux and another for macos.
|
||||
$ cat >dune-workspace <<EOF
|
||||
> (lang dune 3.8)
|
||||
> (lock_dir
|
||||
> (path dune.lock)
|
||||
> (repositories mock)
|
||||
> (solver_env
|
||||
> (os linux)))
|
||||
> (lock_dir
|
||||
> (path dune.macos.lock)
|
||||
> (repositories mock)
|
||||
> (solver_env
|
||||
> (os macos)))
|
||||
> (context
|
||||
> (default))
|
||||
> (context
|
||||
> (default
|
||||
> (name macos)
|
||||
> (lock_dir dune.macos.lock)))
|
||||
> (repository
|
||||
> (name mock)
|
||||
> (url "file://$(pwd)/mock-opam-repository"))
|
||||
> EOF
|
||||
|
||||
Helper shell function to generate a dune-project file and generate lockdir for both contexts:
|
||||
|
||||
$ solve_project() {
|
||||
> cat >dune-project
|
||||
> dune pkg lock dune.lock
|
||||
> dune pkg lock dune.macos.lock
|
||||
> }
|
||||
|
||||
A package which is only available on linux:
|
||||
$ mkpkg linux-only 0.0.1 <<EOF
|
||||
> available: os = "linux"
|
||||
> EOF
|
||||
$ mkpkg linux-only 0.0.2 <<EOF
|
||||
> available: os = "linux"
|
||||
> EOF
|
||||
|
||||
A package with three versions with only the middle version available on macos:
|
||||
$ mkpkg macos-sometimes 0.0.1 <<EOF
|
||||
> available: os = "linux"
|
||||
> EOF
|
||||
$ mkpkg macos-sometimes 0.0.2 <<EOF
|
||||
> EOF
|
||||
$ mkpkg macos-sometimes 0.0.3 <<EOF
|
||||
> available: os = "linux"
|
||||
> EOF
|
||||
|
||||
A package with an undefined variable in its availability filter for 0.0.1, and
|
||||
which is only available on linux for 0.0.2:
|
||||
$ mkpkg undefined-var 0.0.1 <<EOF
|
||||
> available: xos = "linux"
|
||||
> EOF
|
||||
$ mkpkg undefined-var 0.0.2 <<EOF
|
||||
> available: os = "linux"
|
||||
> EOF
|
||||
|
||||
A package whose availability filter resolves to a string:
|
||||
$ mkpkg availability-string 0.0.1 <<EOF
|
||||
> available: "foo"
|
||||
> EOF
|
||||
$ mkpkg availability-string 0.0.2 <<EOF
|
||||
> available: os
|
||||
> EOF
|
||||
|
||||
A package whose oldest and newest version is only available if with-test is false.
|
||||
$ mkpkg with-test-check 0.0.1 <<EOF
|
||||
> available: ! with-test
|
||||
> EOF
|
||||
$ mkpkg with-test-check 0.0.2 <<EOF
|
||||
> EOF
|
||||
$ mkpkg with-test-check 0.0.3 <<EOF
|
||||
> available: ! with-test
|
||||
> EOF
|
||||
|
||||
No solution will be available on macos as all versions of this package are only
|
||||
available on linux.
|
||||
$ solve linux-only
|
||||
Solution for dune.lock:
|
||||
- linux-only.0.0.2
|
||||
Error: Unable to solve dependencies for the following lock directories:
|
||||
Lock directory dune.macos.lock:
|
||||
Couldn't solve the package dependency formula.
|
||||
Selected candidates: x.dev
|
||||
- linux-only -> (problem)
|
||||
No usable implementations:
|
||||
linux-only.0.0.2: Availability condition not satisfied
|
||||
linux-only.0.0.1: Availability condition not satisfied
|
||||
[1]
|
||||
|
||||
The latest version of the package will be chosen on linux but the middle
|
||||
version will be chosen on macos as that's the only version available on macos.
|
||||
$ solve macos-sometimes
|
||||
Solution for dune.lock:
|
||||
- macos-sometimes.0.0.3
|
||||
Solution for dune.macos.lock:
|
||||
- macos-sometimes.0.0.2
|
||||
|
||||
A warning will be printed as the undefined-var.0.0.1 package has an undefined
|
||||
variable in its `available` filter. The undefined-var.0.0.2 package has a valid
|
||||
`available` filter but is only available on linux.
|
||||
$ solve undefined-var
|
||||
Solution for dune.lock:
|
||||
- undefined-var.0.0.2
|
||||
Error: Unable to solve dependencies for the following lock directories:
|
||||
Lock directory dune.macos.lock:
|
||||
Couldn't solve the package dependency formula.
|
||||
Selected candidates: x.dev
|
||||
- undefined-var -> (problem)
|
||||
No usable implementations:
|
||||
undefined-var.0.0.2: Availability condition not satisfied
|
||||
undefined-var.0.0.1: Availability condition not satisfied
|
||||
[1]
|
||||
|
||||
Warnings will be printed and no solution will be found as the availability
|
||||
filter resolves to a string instead of to a boolean.
|
||||
$ solve availability-string
|
||||
Error: Unable to solve dependencies for the following lock directories:
|
||||
Lock directory dune.lock:
|
||||
Couldn't solve the package dependency formula.
|
||||
Selected candidates: x.dev
|
||||
- availability-string -> (problem)
|
||||
No usable implementations:
|
||||
availability-string.0.0.2: Availability condition not satisfied
|
||||
availability-string.0.0.1: Availability condition not satisfied
|
||||
Error: Unable to solve dependencies for the following lock directories:
|
||||
Lock directory dune.macos.lock:
|
||||
Couldn't solve the package dependency formula.
|
||||
Selected candidates: x.dev
|
||||
- availability-string -> (problem)
|
||||
No usable implementations:
|
||||
availability-string.0.0.2: Availability condition not satisfied
|
||||
availability-string.0.0.1: Availability condition not satisfied
|
||||
[1]
|
||||
|
||||
The middle version will be picked as this is the only one available if
|
||||
with-test is set. This exercises that we can handle flags in the available
|
||||
filter.
|
||||
$ solve with-test-check
|
||||
Solution for dune.lock:
|
||||
- with-test-check.0.0.2
|
||||
Solution for dune.macos.lock:
|
||||
- with-test-check.0.0.2
|
||||
Loading…
Add table
Add a link
Reference in a new issue