tarides / opam-monorepo

Assemble dune workspaces to build your project and its dependencies as a whole

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

opam monorepo ignores upper bounds

hannesm opened this issue · comments

Dear Madam or Sir,

from the following (generated) opam file, the "opam monorepo lock pull" and "dune build" fails. It seems to me that while "hpack 0.9.0" could be used, "h2 0.8.0" must be used (there's an upper bound on "paf 0.9.0" in opam-repository to use "h2 < 0.9.0". Somehow, opam monorepo does not respect this bound -- though pin-depends contains h2 0.8.0, the "duniverse-dirs" only lists "ocaml-h2" with 0.9.0.

Here's the opam file:

opam-version: "2.0"
maintainer: "dummy"
authors: "dummy"
homepage: "dummy"
bug-reports: "dummy"
dev-repo: "git://dummy"
synopsis: "Unikernel minipaf - switch dependencies"
description: """
It assumes that local dependencies are already
fetched.
"""

build: ["sh" "-exc" "mirage build"]

install: [
  [ "cp" "dist/minipaf" "%{bin}%/minipaf" ]
]

depends: [
  "dns-client" { ?monorepo & >= "6.2.0" & < "7.0.0" }
  "lwt" { ?monorepo }
  "mirage" { build & >= "4.2.0" & < "4.3.0" }
  "mirage-bootvar-unix" { ?monorepo & >= "0.1.0" & < "0.2.0" }
  "mirage-clock-unix" { ?monorepo & >= "3.0.0" & >= "4.1.0" & < "5.0.0" }
  "mirage-console-unix" { ?monorepo & >= "5.1.0" & < "6.0.0" }
  "mirage-crypto-rng-mirage" { ?monorepo & >= "0.8.0" & < "0.11.0" }
  "mirage-logs" { ?monorepo & >= "1.2.0" & < "2.0.0" }
  "mirage-random" { ?monorepo & >= "3.0.0" & < "4.0.0" }
  "mirage-runtime" { ?monorepo & >= "4.2.0" & < "4.3.0" }
  "mirage-time" { ?monorepo }
  "mirage-unix" { ?monorepo & >= "5.0.0" & < "6.0.0" }
  "ocaml" { build & >= "4.08.0" }
  "opam-monorepo" { build & >= "0.3.2" }
  "paf" { ?monorepo & >= "0.0.9" }
  "tcpip" { ?monorepo & >= "7.0.0" & < "8.0.0" }
]

x-mirage-opam-lock-location: "mirage/minipaf-unix.opam.locked"

x-mirage-configure: ["sh" "-exc" "mirage configure --context ./mirage/context --no-extra-repo"]

x-mirage-pre-build: [make "lock" "pull"]

x-mirage-extra-repo: [
["opam-overlays" "https://github.com/dune-universe/opam-overlays.git"]

["mirage-overlays" "https://github.com/dune-universe/mirage-opam-overlays.git"]]

x-opam-monorepo-opam-provided: ["mirage"
"ocaml"
"opam-monorepo"]

Here's the ".lock" file:

opam-version: "2.0"
synopsis: "opam-monorepo generated lockfile"
maintainer: "opam-monorepo"
depends: [
  "angstrom" {= "0.15.0" & ?vendor}
  "arp" {= "3.0.0" & ?vendor}
  "asn1-combinators" {= "0.2.6" & ?vendor}
  "astring" {= "0.8.5+dune" & ?vendor}
  "base" {= "v0.15.0" & ?vendor}
  "base-bigarray" {= "base"}
  "base-bytes" {= "base"}
  "base-threads" {= "base"}
  "base-unix" {= "base"}
  "base64" {= "3.5.0" & ?vendor}
  "bigstringaf" {= "0.9.0" & ?vendor}
  "bos" {= "0.2.1+dune" & ?vendor}
  "ca-certs" {= "0.2.2" & ?vendor}
  "ca-certs-nss" {= "3.80" & ?vendor}
  "cmdliner" {= "1.1.1+dune" & ?vendor}
  "conf-gmp" {= "4"}
  "conf-gmp-powm-sec" {= "3"}
  "conf-m4" {= "1"}
  "conf-pkg-config" {= "2"}
  "cppo" {= "1.6.9" & ?vendor}
  "csexp" {= "1.5.1" & ?vendor}
  "cstruct" {= "6.1.1" & ?vendor}
  "cstruct-lwt" {= "6.1.1" & ?vendor}
  "cstruct-sexp" {= "6.1.1" & ?vendor}
  "dns" {= "6.3.0" & ?vendor}
  "dns-client" {= "6.3.0" & ?vendor}
  "domain-name" {= "0.4.0" & ?vendor}
  "dune" {= "3.4.1"}
  "dune-configurator" {= "3.4.1" & ?vendor}
  "duration" {= "0.2.0" & ?vendor}
  "emile" {= "1.1"}
  "eqaf" {= "0.9" & ?vendor}
  "ethernet" {= "3.0.0" & ?vendor}
  "faraday" {= "0.8.1" & ?vendor}
  "findlib" {= "1.8.1+dune" & ?vendor}
  "fmt" {= "0.9.0+dune" & ?vendor}
  "fpath" {= "0.7.3+dune" & ?vendor}
  "functoria" {= "4.2.0"}
  "functoria-runtime" {= "4.2.0" & ?vendor}
  "gmap" {= "0.3.0" & ?vendor}
  "gmp" {= "6.2.1-2" & ?vendor}
  "h2" {= "0.8.0" & ?vendor}
  "happy-eyeballs" {= "0.3.0" & ?vendor}
  "hkdf" {= "1.0.4" & ?vendor}
  "hpack" {= "0.9.0" & ?vendor}
  "httpaf" {= "0.7.1" & ?vendor}
  "io-page" {= "3.0.0" & ?vendor}
  "ipaddr" {= "5.3.1" & ?vendor}
  "ipaddr-sexp" {= "5.3.1" & ?vendor}
  "ke" {= "0.6" & ?vendor}
  "logs" {= "0.7.0+dune2" & ?vendor}
  "lru" {= "0.3.0" & ?vendor}
  "lwt" {= "5.6.1" & ?vendor}
  "lwt-dllist" {= "1.0.1" & ?vendor}
  "macaddr" {= "5.3.1" & ?vendor}
  "macaddr-cstruct" {= "5.3.1" & ?vendor}
  "metrics" {= "0.4.0" & ?vendor}
  "mimic" {= "0.0.5" & ?vendor}
  "mirage" {= "4.2.0"}
  "mirage-bootvar-unix" {= "0.1.0" & ?vendor}
  "mirage-clock" {= "4.2.0" & ?vendor}
  "mirage-clock-unix" {= "4.2.0" & ?vendor}
  "mirage-console" {= "5.1.0" & ?vendor}
  "mirage-console-unix" {= "5.1.0" & ?vendor}
  "mirage-crypto" {= "0.10.6" & ?vendor}
  "mirage-crypto-ec" {= "0.10.6" & ?vendor}
  "mirage-crypto-pk" {= "0.10.6" & ?vendor}
  "mirage-crypto-rng" {= "0.10.6" & ?vendor}
  "mirage-crypto-rng-mirage" {= "0.10.6" & ?vendor}
  "mirage-flow" {= "3.0.0" & ?vendor}
  "mirage-kv" {= "4.0.1" & ?vendor}
  "mirage-logs" {= "1.2.0" & ?vendor}
  "mirage-net" {= "4.0.0" & ?vendor}
  "mirage-no-solo5" {= "1"}
  "mirage-no-xen" {= "1"}
  "mirage-profile" {= "0.9.1" & ?vendor}
  "mirage-random" {= "3.0.0" & ?vendor}
  "mirage-runtime" {= "4.2.0" & ?vendor}
  "mirage-time" {= "3.0.0" & ?vendor}
  "mirage-unix" {= "5.0.0" & ?vendor}
  "mtime" {= "1.4.0+dune2" & ?vendor}
  "num" {= "1.4+dune2" & ?vendor}
  "ocaml" {= "4.14.0"}
  "ocaml-base-compiler" {= "4.14.0"}
  "ocaml-compiler-libs" {= "v0.12.4" & ?vendor}
  "ocaml-config" {= "2"}
  "ocaml-options-vanilla" {= "1"}
  "ocaml-syntax-shims" {= "1.0.0" & ?vendor}
  "ocamlfind" {= "1.8.1+dune" & ?vendor}
  "ocplib-endian" {= "1.2" & ?vendor}
  "opam-monorepo" {= "0.3.3"}
  "paf" {= "0.0.9" & ?vendor}
  "parse-argv" {= "0.2.0" & ?vendor}
  "parsexp" {= "v0.15.0" & ?vendor}
  "pbkdf" {= "1.2.0" & ?vendor}
  "pecu" {= "0.6"}
  "ppx_cstruct" {= "6.1.1" & ?vendor}
  "ppx_derivers" {= "1.2.1" & ?vendor}
  "ppx_sexp_conv" {= "v0.15.1" & ?vendor}
  "ppxlib" {= "0.27.0" & ?vendor}
  "psq" {= "0.2.0" & ?vendor}
  "ptime" {= "1.0.0+dune2" & ?vendor}
  "randomconv" {= "0.1.3" & ?vendor}
  "result" {= "1.5" & ?vendor}
  "rresult" {= "0.7.0+dune" & ?vendor}
  "seq" {= "base+dune" & ?vendor}
  "sexplib" {= "v0.15.1" & ?vendor}
  "sexplib0" {= "v0.15.1" & ?vendor}
  "stdlib-shims" {= "0.3.0" & ?vendor}
  "stringext" {= "1.6.0"}
  "tcpip" {= "7.1.2" & ?vendor}
  "tls" {= "0.15.3" & ?vendor}
  "tls-mirage" {= "0.15.3" & ?vendor}
  "uri" {= "4.2.0"}
  "uutf" {= "1.0.3+dune"}
  "x509" {= "0.16.0" & ?vendor}
  "zarith" {= "1.12+dune+mirage" & ?vendor}
]
depexts: [
  ["ca_root_nss"] {os = "freebsd"}
  ["devel/pkgconf"] {os = "openbsd"}
  ["gmp"] {os = "freebsd"}
  ["gmp"] {os = "openbsd"}
  ["gmp"] {os-distribution = "nixos"}
  ["gmp"] {os = "macos" & os-distribution = "homebrew"}
  ["gmp"] {os = "win32" & os-distribution = "cygwinports"}
  ["gmp"] {os-distribution = "macports" & os = "macos"}
  ["gmp" "gmp-devel"] {os-distribution = "centos"}
  ["gmp" "gmp-devel"] {os-distribution = "fedora"}
  ["gmp" "gmp-devel"] {os-distribution = "ol"}
  ["gmp-dev"] {os-distribution = "alpine"}
  ["gmp-devel"] {os-family = "suse"}
  ["libgmp-dev"] {os-family = "debian"}
  ["libgmp-dev"] {os-family = "ubuntu"}
  ["m4"] {os-distribution = "alpine"}
  ["m4"] {os-distribution = "arch"}
  ["m4"] {os-distribution = "centos"}
  ["m4"] {os-distribution = "fedora"}
  ["m4"] {os-distribution = "nixos"}
  ["m4"] {os-distribution = "ol"}
  ["m4"] {os-distribution = "rhel"}
  ["m4"] {os-family = "debian"}
  ["m4"] {os-family = "suse"}
  ["pkg-config"] {os-family = "debian"}
  ["pkg-config"] {os = "macos" & os-distribution = "homebrew"}
  ["pkgconf"] {os = "freebsd"}
  ["pkgconf"] {os-distribution = "alpine"}
  ["pkgconf"] {os-distribution = "arch"}
  ["pkgconf-pkg-config"] {os-distribution = "fedora"}
  ["pkgconf-pkg-config"] {os-distribution = "mageia"}
  ["pkgconf-pkg-config"] {os-distribution = "centos" & os-version >= "8"}
  ["pkgconf-pkg-config"] {os-distribution = "ol" & os-version >= "8"}
  ["pkgconf-pkg-config"] {os-distribution = "rhel" & os-version >= "8"}
  ["pkgconfig"] {os-distribution = "nixos"}
  ["pkgconfig"] {os = "macos" & os-distribution = "macports"}
  ["pkgconfig"] {os-distribution = "centos" & os-version <= "7"}
  ["pkgconfig"] {os-distribution = "ol" & os-version <= "7"}
  ["pkgconfig"] {os-distribution = "rhel" & os-version <= "7"}
  ["system:pkgconf"] {os = "win32" & os-distribution = "cygwinports"}
]
pin-depends: [
  [
    "angstrom.0.15.0"
    "https://github.com/inhabitedtype/angstrom/archive/0.15.0.tar.gz"
  ]
  [
    "arp.3.0.0"
    "https://github.com/mirage/arp/releases/download/v3.0.0/arp-v3.0.0.tbz"
  ]
  [
    "asn1-combinators.0.2.6"
    "https://github.com/mirleft/ocaml-asn1-combinators/releases/download/v0.2.6/asn1-combinators-v0.2.6.tbz"
  ]
  [
    "astring.0.8.5+dune"
    "https://github.com/dune-universe/astring/archive/v0.8.5+dune.tar.gz"
  ]
  [
    "base.v0.15.0"
    "https://ocaml.janestreet.com/ocaml-core/v0.15/files/base-v0.15.0.tar.gz"
  ]
  [
    "base64.3.5.0"
    "https://github.com/mirage/ocaml-base64/releases/download/v3.5.0/base64-v3.5.0.tbz"
  ]
  [
    "bigstringaf.0.9.0"
    "https://github.com/inhabitedtype/bigstringaf/archive/0.9.0.tar.gz"
  ]
  [
    "bos.0.2.1+dune"
    "https://github.com/dune-universe/bos/releases/download/v0.2.1%2Bdune/bos-0.2.1.dune.tbz"
  ]
  [
    "ca-certs.0.2.2"
    "https://github.com/mirage/ca-certs/releases/download/v0.2.2/ca-certs-v0.2.2.tbz"
  ]
  [
    "ca-certs-nss.3.80"
    "https://github.com/mirage/ca-certs-nss/releases/download/v3.80/ca-certs-nss-3.80.tbz"
  ]
  [
    "cmdliner.1.1.1+dune"
    "https://erratique.ch/software/cmdliner/releases/cmdliner-1.1.1.tbz"
  ]
  [
    "cppo.1.6.9"
    "https://github.com/ocaml-community/cppo/archive/v1.6.9.tar.gz"
  ]
  [
    "csexp.1.5.1"
    "https://github.com/ocaml-dune/csexp/releases/download/1.5.1/csexp-1.5.1.tbz"
  ]
  [
    "cstruct.6.1.1"
    "https://github.com/mirage/ocaml-cstruct/releases/download/v6.1.1/cstruct-6.1.1.tbz"
  ]
  [
    "cstruct-lwt.6.1.1"
    "https://github.com/mirage/ocaml-cstruct/releases/download/v6.1.1/cstruct-6.1.1.tbz"
  ]
  [
    "cstruct-sexp.6.1.1"
    "https://github.com/mirage/ocaml-cstruct/releases/download/v6.1.1/cstruct-6.1.1.tbz"
  ]
  [
    "dns.6.3.0"
    "https://github.com/mirage/ocaml-dns/releases/download/v6.3.0/dns-6.3.0.tbz"
  ]
  [
    "dns-client.6.3.0"
    "https://github.com/mirage/ocaml-dns/releases/download/v6.3.0/dns-6.3.0.tbz"
  ]
  [
    "domain-name.0.4.0"
    "https://github.com/hannesm/domain-name/releases/download/v0.4.0/domain-name-0.4.0.tbz"
  ]
  [
    "dune-configurator.3.4.1"
    "https://github.com/ocaml/dune/releases/download/3.4.1/dune-3.4.1.tbz"
  ]
  [
    "duration.0.2.0"
    "https://github.com/hannesm/duration/releases/download/0.2.0/duration-0.2.0.tbz"
  ]
  [
    "eqaf.0.9"
    "https://github.com/mirage/eqaf/releases/download/v0.9/eqaf-0.9.tbz"
  ]
  [
    "ethernet.3.0.0"
    "https://github.com/mirage/ethernet/releases/download/v3.0.0/ethernet-v3.0.0.tbz"
  ]
  [
    "faraday.0.8.1"
    "https://github.com/inhabitedtype/faraday/archive/0.8.1.tar.gz"
  ]
  [
    "findlib.1.8.1+dune"
    "https://github.com/dune-universe/lib-findlib/archive/v1.8.1+dune.tar.gz"
  ]
  [
    "fmt.0.9.0+dune"
    "https://github.com/dune-universe/fmt/releases/download/v0.9.0%2Bdune/fmt-0.9.0.dune.tbz"
  ]
  [
    "fpath.0.7.3+dune"
    "https://github.com/dune-universe/fpath/archive/v0.7.3+dune.tar.gz"
  ]
  [
    "functoria-runtime.4.2.0"
    "https://github.com/mirage/mirage/releases/download/v4.2.0/mirage-4.2.0.tbz"
  ]
  [
    "gmap.0.3.0"
    "https://github.com/hannesm/gmap/releases/download/0.3.0/gmap-0.3.0.tbz"
  ]
  [
    "gmp.6.2.1-2"
    "git+file:///usr/home/hannes/devel/mirage/ocaml-gmp#93eb456af09d9ee180bec4b850b7bf570bbe5465"
  ]
  [
    "h2.0.8.0"
    "https://github.com/anmonteiro/ocaml-h2/releases/download/0.9.0/h2-0.9.0.tbz"
  ]
  [
    "happy-eyeballs.0.3.0"
    "https://github.com/roburio/happy-eyeballs/releases/download/v0.3.0/happy-eyeballs-0.3.0.tbz"
  ]
  [
    "hkdf.1.0.4"
    "https://github.com/hannesm/ocaml-hkdf/releases/download/v1.0.4/hkdf-v1.0.4.tbz"
  ]
  [
    "hpack.0.9.0"
    "https://github.com/anmonteiro/ocaml-h2/releases/download/0.9.0/h2-0.9.0.tbz"
  ]
  [
    "httpaf.0.7.1"
    "https://github.com/inhabitedtype/httpaf/archive/0.7.1.tar.gz"
  ]
  [
    "io-page.3.0.0"
    "https://github.com/mirage/io-page/releases/download/v3.0.0/io-page-3.0.0.tbz"
  ]
  [
    "ipaddr.5.3.1"
    "https://github.com/mirage/ocaml-ipaddr/releases/download/v5.3.1/ipaddr-5.3.1.tbz"
  ]
  [
    "ipaddr-sexp.5.3.1"
    "https://github.com/mirage/ocaml-ipaddr/releases/download/v5.3.1/ipaddr-5.3.1.tbz"
  ]
  ["ke.0.6" "https://github.com/mirage/ke/releases/download/v0.6/ke-0.6.tbz"]
  [
    "logs.0.7.0+dune2"
    "https://github.com/dune-universe/logs/releases/download/v0.7.0%2Bdune2/logs-0.7.0.dune2.tbz"
  ]
  [
    "lru.0.3.0"
    "https://github.com/pqwy/lru/releases/download/v0.3.0/lru-v0.3.0.tbz"
  ]
  ["lwt.5.6.1" "https://github.com/ocsigen/lwt/archive/5.6.1.tar.gz"]
  [
    "lwt-dllist.1.0.1"
    "https://github.com/mirage/lwt-dllist/releases/download/v1.0.1/lwt-dllist-v1.0.1.tbz"
  ]
  [
    "macaddr.5.3.1"
    "https://github.com/mirage/ocaml-ipaddr/releases/download/v5.3.1/ipaddr-5.3.1.tbz"
  ]
  [
    "macaddr-cstruct.5.3.1"
    "https://github.com/mirage/ocaml-ipaddr/releases/download/v5.3.1/ipaddr-5.3.1.tbz"
  ]
  [
    "metrics.0.4.0"
    "https://github.com/mirage/metrics/releases/download/v0.4.0/metrics-0.4.0.tbz"
  ]
  [
    "mimic.0.0.5"
    "https://github.com/dinosaure/mimic/releases/download/0.0.5/mimic-0.0.5.tbz"
  ]
  [
    "mirage-bootvar-unix.0.1.0"
    "https://github.com/mirage/mirage-bootvar-unix/releases/download/0.1.0/mirage-bootvar-unix-0.1.0.tbz"
  ]
  [
    "mirage-clock.4.2.0"
    "https://github.com/mirage/mirage-clock/releases/download/v4.2.0/mirage-clock-4.2.0.tbz"
  ]
  [
    "mirage-clock-unix.4.2.0"
    "https://github.com/mirage/mirage-clock/releases/download/v4.2.0/mirage-clock-4.2.0.tbz"
  ]
  [
    "mirage-console.5.1.0"
    "https://github.com/mirage/mirage-console/releases/download/v5.1.0/mirage-console-5.1.0.tbz"
  ]
  [
    "mirage-console-unix.5.1.0"
    "https://github.com/mirage/mirage-console/releases/download/v5.1.0/mirage-console-5.1.0.tbz"
  ]
  [
    "mirage-crypto.0.10.6"
    "https://github.com/mirage/mirage-crypto/releases/download/v0.10.6/mirage-crypto-0.10.6.tbz"
  ]
  [
    "mirage-crypto-ec.0.10.6"
    "https://github.com/mirage/mirage-crypto/releases/download/v0.10.6/mirage-crypto-0.10.6.tbz"
  ]
  [
    "mirage-crypto-pk.0.10.6"
    "https://github.com/mirage/mirage-crypto/releases/download/v0.10.6/mirage-crypto-0.10.6.tbz"
  ]
  [
    "mirage-crypto-rng.0.10.6"
    "https://github.com/mirage/mirage-crypto/releases/download/v0.10.6/mirage-crypto-0.10.6.tbz"
  ]
  [
    "mirage-crypto-rng-mirage.0.10.6"
    "https://github.com/mirage/mirage-crypto/releases/download/v0.10.6/mirage-crypto-0.10.6.tbz"
  ]
  [
    "mirage-flow.3.0.0"
    "https://github.com/mirage/mirage-flow/releases/download/v3.0.0/mirage-flow-v3.0.0.tbz"
  ]
  [
    "mirage-kv.4.0.1"
    "https://github.com/mirage/mirage-kv/releases/download/v4.0.1/mirage-kv-4.0.1.tbz"
  ]
  [
    "mirage-logs.1.2.0"
    "https://github.com/mirage/mirage-logs/releases/download/v1.2.0/mirage-logs-v1.2.0.tbz"
  ]
  [
    "mirage-net.4.0.0"
    "https://github.com/mirage/mirage-net/releases/download/v4.0.0/mirage-net-v4.0.0.tbz"
  ]
  [
    "mirage-profile.0.9.1"
    "https://github.com/mirage/mirage-profile/releases/download/v0.9.1/mirage-profile-v0.9.1.tbz"
  ]
  [
    "mirage-random.3.0.0"
    "https://github.com/mirage/mirage-random/releases/download/v3.0.0/mirage-random-v3.0.0.tbz"
  ]
  [
    "mirage-runtime.4.2.0"
    "https://github.com/mirage/mirage/releases/download/v4.2.0/mirage-4.2.0.tbz"
  ]
  [
    "mirage-time.3.0.0"
    "https://github.com/mirage/mirage-time/releases/download/v3.0.0/mirage-time-v3.0.0.tbz"
  ]
  [
    "mirage-unix.5.0.0"
    "https://github.com/mirage/mirage-unix/releases/download/v5.0.0/mirage-unix-5.0.0.tbz"
  ]
  [
    "mtime.1.4.0+dune2"
    "https://github.com/dune-universe/mtime/releases/download/v1.4.0%2Bdune2/mtime-v1.4.0.dune2.tbz"
  ]
  [
    "num.1.4+dune2"
    "https://github.com/dune-universe/num/releases/download/v1.4%2Bdune2/num-v1.4.dune2.tbz"
  ]
  [
    "ocaml-compiler-libs.v0.12.4"
    "https://github.com/janestreet/ocaml-compiler-libs/releases/download/v0.12.4/ocaml-compiler-libs-v0.12.4.tbz"
  ]
  [
    "ocaml-syntax-shims.1.0.0"
    "https://github.com/ocaml-ppx/ocaml-syntax-shims/releases/download/1.0.0/ocaml-syntax-shims-1.0.0.tbz"
  ]
  [
    "ocamlfind.1.8.1+dune"
    "https://github.com/dune-universe/lib-findlib/archive/v1.8.1+dune.tar.gz"
  ]
  [
    "ocplib-endian.1.2"
    "https://github.com/OCamlPro/ocplib-endian/archive/refs/tags/1.2.tar.gz"
  ]
  [
    "paf.0.0.9"
    "https://github.com/dinosaure/paf-le-chien/releases/download/0.0.9/paf-0.0.9.tbz"
  ]
  [
    "parse-argv.0.2.0"
    "https://github.com/mirage/parse-argv/releases/download/v0.2.0/parse-argv-v0.2.0.tbz"
  ]
  [
    "parsexp.v0.15.0"
    "https://ocaml.janestreet.com/ocaml-core/v0.15/files/parsexp-v0.15.0.tar.gz"
  ]
  [
    "pbkdf.1.2.0"
    "https://github.com/abeaumont/ocaml-pbkdf/archive/1.2.0.tar.gz"
  ]
  [
    "ppx_cstruct.6.1.1"
    "https://github.com/mirage/ocaml-cstruct/releases/download/v6.1.1/cstruct-6.1.1.tbz"
  ]
  [
    "ppx_derivers.1.2.1"
    "https://github.com/ocaml-ppx/ppx_derivers/archive/1.2.1.tar.gz"
  ]
  [
    "ppx_sexp_conv.v0.15.1"
    "https://github.com/janestreet/ppx_sexp_conv/archive/refs/tags/v0.15.1.tar.gz"
  ]
  [
    "ppxlib.0.27.0"
    "https://github.com/ocaml-ppx/ppxlib/releases/download/0.27.0/ppxlib-0.27.0.tbz"
  ]
  [
    "psq.0.2.0"
    "https://github.com/pqwy/psq/releases/download/v0.2.0/psq-v0.2.0.tbz"
  ]
  [
    "ptime.1.0.0+dune2"
    "https://github.com/dune-universe/ptime/releases/download/v1.0.0%2Bdune2/ptime-1.0.0.dune2.tbz"
  ]
  [
    "randomconv.0.1.3"
    "https://github.com/hannesm/randomconv/releases/download/v0.1.3/randomconv-v0.1.3.tbz"
  ]
  [
    "result.1.5"
    "https://github.com/janestreet/result/releases/download/1.5/result-1.5.tbz"
  ]
  [
    "rresult.0.7.0+dune"
    "https://github.com/dune-universe/rresult/releases/download/v0.7.0%2Bdune/rresult-0.7.0.dune.tbz"
  ]
  ["seq.base+dune" "https://github.com/c-cube/seq/archive/0.2.2.tar.gz"]
  [
    "sexplib.v0.15.1"
    "https://github.com/janestreet/sexplib/archive/refs/tags/v0.15.1.tar.gz"
  ]
  [
    "sexplib0.v0.15.1"
    "https://github.com/janestreet/sexplib0/archive/refs/tags/v0.15.1.tar.gz"
  ]
  [
    "stdlib-shims.0.3.0"
    "https://github.com/ocaml/stdlib-shims/releases/download/0.3.0/stdlib-shims-0.3.0.tbz"
  ]
  [
    "tcpip.7.1.2"
    "https://github.com/mirage/mirage-tcpip/releases/download/v7.1.2/tcpip-7.1.2.tbz"
  ]
  [
    "tls.0.15.3"
    "https://github.com/mirleft/ocaml-tls/releases/download/v0.15.3/tls-0.15.3.tbz"
  ]
  [
    "tls-mirage.0.15.3"
    "https://github.com/mirleft/ocaml-tls/releases/download/v0.15.3/tls-0.15.3.tbz"
  ]
  [
    "x509.0.16.0"
    "https://github.com/mirleft/ocaml-x509/releases/download/v0.16.0/x509-0.16.0.tbz"
  ]
  [
    "zarith.1.12+dune+mirage"
    "https://github.com/mirage/Zarith/releases/download/release-1.12%2Bdune/zarith-release-1.12.dune.tbz"
  ]
]
x-opam-monorepo-cli-args: [
  "--require-cross-compile"
  "--build-only"
  "minipaf-unix"
  "-l"
  "mirage/minipaf-unix.opam.locked"
  "--ocaml-version"
  "4.14.0"
]
x-opam-monorepo-duniverse-dirs: [
  [
    "git+file:///usr/home/hannes/devel/mirage/ocaml-gmp#93eb456af09d9ee180bec4b850b7bf570bbe5465"
    "ocaml-gmp"
  ]
  [
    "https://erratique.ch/software/cmdliner/releases/cmdliner-1.1.1.tbz"
    "cmdliner"
    [
      "sha512=5478ad833da254b5587b3746e3a8493e66e867a081ac0f653a901cc8a7d944f66e4387592215ce25d939be76f281c4785702f54d4a74b1700bc8838a62255c9e"
    ]
  ]
  [
    "https://github.com/OCamlPro/ocplib-endian/archive/refs/tags/1.2.tar.gz"
    "ocplib-endian"
    [
      "md5=8d5492eeb7c6815ade72a7415ea30949"
      "sha512=2e70be5f3d6e377485c60664a0e235c3b9b24a8d6b6a03895d092c6e40d53810bfe1f292ee69e5181ce6daa8a582bfe3d59f3af889f417134f658812be5b8b85"
    ]
  ]
  [
    "https://github.com/abeaumont/ocaml-pbkdf/archive/1.2.0.tar.gz"
    "ocaml-pbkdf"
    [
      "md5=1e0e69de61b2d9d4f9843572ecc6655c"
      "sha512=d6f7d5efd761b87dd420ddcf97c2f9d4402dcc81d65cd1f4d81039b70c4d8c1e803bbaf4251482de8de7076da9f40b48c7eb1684e31e7a316deb5036c192bd3c"
    ]
  ]
  [
    "https://github.com/anmonteiro/ocaml-h2/releases/download/0.9.0/h2-0.9.0.tbz"
    "ocaml-h2"
    [
      "sha256=ee08d1849b369ae7d06c89805e22854fd999d641c64871f08c25593397f40b5e"
      "sha512=a226c64b8084688cc93e19fcf649d228d3e441949ea576ec3d89d5d29404ed07a2e0ed87539d48afc59c3cdd16b9621646ac98a1b62ceefc9c5dec57a73b9ec4"
    ]
  ]
  [
    "https://github.com/c-cube/seq/archive/0.2.2.tar.gz"
    "seq"
    [
      "md5=9033e02283aa3bde9f97f24e632902e3"
      "sha512=cab0eb4cb6d9788b7cbd7acbefefc15689d706c97ff7f75dd97faf3c21e466af4d0ff110541a24729db587e7172b1a30a3c2967e17ec2e49cbd923360052c07c"
    ]
  ]
  [
    "https://github.com/dinosaure/mimic/releases/download/0.0.5/mimic-0.0.5.tbz"
    "mimic"
    [
      "sha256=dea163b6d54b8172873acafbd79e74cfb69505c1cf633c1d15e329c078163dad"
      "sha512=154ae5d3a1ff6561dc6f5562ad96be1ba34f54ed5fc1428fda57bd839b78ee39ebf978c6d2d31338f85882a11fa14d056d8636e7b5142c664b75d43077d6699b"
    ]
  ]
  [
    "https://github.com/dinosaure/paf-le-chien/releases/download/0.0.9/paf-0.0.9.tbz"
    "paf-le-chien"
    [
      "sha256=7b4e56372b20c3c3f193298464efbd4ed1b369b872cedc8d00bec9b904930fff"
      "sha512=c8c522242838e51989206f30891baaf4454967926689a5ae5f3bf6374ecb2508539ee292338bd991373e31ef2cdf2ad0a9568537a3280eecbcd2c94f28ab8d01"
    ]
  ]
  [
    "https://github.com/dune-universe/astring/archive/v0.8.5+dune.tar.gz"
    "astring"
    [
      "sha256=11327c202fd0115f3a2bf7710c9c603b979a32ba9b16c1a64ba155857233acc8"
    ]
  ]
  [
    "https://github.com/dune-universe/bos/releases/download/v0.2.1%2Bdune/bos-0.2.1.dune.tbz"
    "bos"
    [
      "sha256=c6a34311946ff906824cedc2d12825ee9ad73b73bfa1581fb8100d6fc3dd5c35"
      "sha512=5a1422809050dfbebab9691f29109e8219e27ecc4bc50c2eb714dc59036811936e9c5860b13583ab0ba7c15a00ee5b515af25642cdc312a4814076d8e76e3fd7"
    ]
  ]
  [
    "https://github.com/dune-universe/fmt/releases/download/v0.9.0%2Bdune/fmt-0.9.0.dune.tbz"
    "fmt"
    [
      "sha256=844ce674b3146aaf9c14088a0b817cef10c7152054d3cc984543463da978ff81"
      "sha512=27765423f43bdfbbdee50906faad14ecf653aaf2fdfc4db6b94791460aa32f3a3490b9d0c1a04aa3ecb0ac4333ea7ce5054251a67a0d67b64f3eb6d737afbf93"
    ]
  ]
  [
    "https://github.com/dune-universe/fpath/archive/v0.7.3+dune.tar.gz"
    "fpath"
    [
      "sha256=792ecf88d2a311596106e30775864629558ed0c2d0501590fda55f363dbb6ebc"
    ]
  ]
  [
    "https://github.com/dune-universe/lib-findlib/archive/v1.8.1+dune.tar.gz"
    "lib-findlib"
    [
      "sha256=1a337aaedca94837d4d6a1689ed18109e4a2cfd4aa99a56252a6f19fe1291bb0"
    ]
  ]
  [
    "https://github.com/dune-universe/logs/releases/download/v0.7.0%2Bdune2/logs-0.7.0.dune2.tbz"
    "logs"
    [
      "sha256=ae2f76b6bb42122371041d389d0d4348346a79b38ffbb7c20d08e85df2fedf76"
      "sha512=4c1fdc23c5f9709d50fa1ee518e2ec4cf1a35fb1cedf466bcc849ae47c113b317db2bf95c788d48faacb67952d942d4b378904e3c37e71ef7babb56e2f11ce8b"
    ]
  ]
  [
    "https://github.com/dune-universe/mtime/releases/download/v1.4.0%2Bdune2/mtime-v1.4.0.dune2.tbz"
    "mtime"
    [
      "sha256=8da1cbd3a3b24e0d26571f1bf3874a1523195518bec5f53ffa82ad4d4aa53301"
      "sha512=a5166aec2ae9631e42db18731f17dece339b1b5f15fb693fcfe94c6a96fccc47182bfc75bf0bffa46ae94cd316271be64ec811da2caad36122deb140ea73b959"
    ]
  ]
  [
    "https://github.com/dune-universe/num/releases/download/v1.4%2Bdune2/num-v1.4.dune2.tbz"
    "num"
    [
      "sha256=ec52dcab09b6b638d1a2048e733ec402ee687e89383c3a62d7c0e12f8ed661ad"
      "sha512=7d6035bd96a71d248c31662b877330656cd29040f45a143695bfa96765b91cea2f4c04b6ff78fdfa5876c1032c3baf4fd22c679b0ae09858d93cf46c1474b5cb"
    ]
  ]
  [
    "https://github.com/dune-universe/ptime/releases/download/v1.0.0%2Bdune2/ptime-1.0.0.dune2.tbz"
    "ptime"
    [
      "sha256=10097ae4e8426f2e8cf64df150fb43179a7493a02e0ccef4f45124e3f08512a1"
      "sha512=c49781faba1b9bf4cd01fe810e46354cdfa945f24642fb8aeabe2ab4a576717a18de7439b015f288ebaddcae9bde2fd01eff465c986a0e9ebcb2c82e8ce8d9b4"
    ]
  ]
  [
    "https://github.com/dune-universe/rresult/releases/download/v0.7.0%2Bdune/rresult-0.7.0.dune.tbz"
    "rresult"
    [
      "sha256=3726c0ddf709e1886ef9adae83bf3696fa65466cc675d2494fa6ea9da9945a9f"
      "sha512=e29d1a41fca85a301df370183740d89c6a23ceb7fa530e8ba3693917032d5784b7899b6f713fd5f66d49c3426811a65465f5709af23b3f9120017f94cd9a448e"
    ]
  ]
  [
    "https://github.com/hannesm/domain-name/releases/download/v0.4.0/domain-name-0.4.0.tbz"
    "domain-name"
    [
      "sha256=a5c06e22845895201973e812fe3019274d1db81c0a7873da6c8007c4ad2108c5"
      "sha512=f25aedb1ddf6ab8c49b1545cf88f4990114a9e7954d91cabf260e6ce470abd42dd135e8a55084262a77d4c9ee4bff6dc00c71307b23a48d82d50593b910ee173"
    ]
  ]
  [
    "https://github.com/hannesm/duration/releases/download/0.2.0/duration-0.2.0.tbz"
    "duration"
    [
      "sha256=ad14fb75a5a6f73fff7ef1721178925ee555cf0f23b23e3ab329184bc0c1ce69"
      "sha512=6a259ca406739bfc6020c7de767e39c2a7ee06169aa1966d43d426b2a54fc69b81be6465d04b9bd8fbbbbfd9ebe1c82a1cbfbf62100a37eb0f7403f6cf53e3b8"
    ]
  ]
  [
    "https://github.com/hannesm/gmap/releases/download/0.3.0/gmap-0.3.0.tbz"
    "gmap"
    [
      "sha256=04dd9e6226ac8f8fb4ccb6021048702e34a482fb9c1d240d3852829529507c1c"
      "sha512=71616981f5a15d6b2a47e18702083e52e81f6547076085b1489f676f50b0cc47c7c2c4fa19cb581e2878dc3d4f7133d0c50d8b51a8390be0e6e30318907d81d3"
    ]
  ]
  [
    "https://github.com/hannesm/ocaml-hkdf/releases/download/v1.0.4/hkdf-v1.0.4.tbz"
    "ocaml-hkdf"
    [
      "sha256=b926d6da4ac45aab999735dd2bbfd1f7511316710d791afa361006b6fe36fd5b"
      "sha512=d08e50857f7761572adc4d382975fde5808898c1d92d9e6e943a496cba8780ffabe1edf67844063b70d9727c0fe10b24391e001a3f65c978a5326ac82199cc88"
    ]
  ]
  [
    "https://github.com/hannesm/randomconv/releases/download/v0.1.3/randomconv-v0.1.3.tbz"
    "randomconv"
    [
      "sha256=9b286aaac68fe3e5f69ed34115153ce74c613270a534b04642bae35934c863c7"
      "sha512=f5186f7669a6b1b943442fdcfcdb37cf6c8199a1c644ed815f351f50428b9b7e1e5408ff4a0fcdfb093451b5237e48602af60f87a1b93e49897576c8aa2cd23f"
    ]
  ]
  [
    "https://github.com/inhabitedtype/angstrom/archive/0.15.0.tar.gz"
    "angstrom"
    ["md5=5104768c404ea92fd0a53a5b0f75cd50"]
  ]
  [
    "https://github.com/inhabitedtype/bigstringaf/archive/0.9.0.tar.gz"
    "bigstringaf"
    ["md5=0d8ceddeb7db821fd4e5235a75ae9752"]
  ]
  [
    "https://github.com/inhabitedtype/faraday/archive/0.8.1.tar.gz"
    "faraday"
    ["md5=51b97f082af4679e3b428a03c3b657de"]
  ]
  [
    "https://github.com/inhabitedtype/httpaf/archive/0.7.1.tar.gz"
    "httpaf"
    ["md5=8c8b199d0553f02fb361cf52c57c0412"]
  ]
  [
    "https://github.com/janestreet/ocaml-compiler-libs/releases/download/v0.12.4/ocaml-compiler-libs-v0.12.4.tbz"
    "ocaml-compiler-libs"
    [
      "sha256=4ec9c9ec35cc45c18c7a143761154ef1d7663036a29297f80381f47981a07760"
      "sha512=978dba8dfa61f98fa24fda7a9c26c2e837081f37d1685fe636dc19cfc3278a940cf01a10293504b185c406706bc1008bc54313d50f023bcdea6d5ac6c0788b35"
    ]
  ]
  [
    "https://github.com/janestreet/ppx_sexp_conv/archive/refs/tags/v0.15.1.tar.gz"
    "ppx_sexp_conv"
    [
      "sha256=e34647850c58992a463f29b11b863f9b1322adc0a98d3b16028012507e0c2e9d"
    ]
  ]
  [
    "https://github.com/janestreet/result/releases/download/1.5/result-1.5.tbz"
    "result"
    ["md5=1b82dec78849680b49ae9a8a365b831b"]
  ]
  [
    "https://github.com/janestreet/sexplib/archive/refs/tags/v0.15.1.tar.gz"
    "sexplib"
    [
      "sha256=75da7d290d92d758c01f441f9589ccce031e11301563efde1c19149d39edbcbc"
    ]
  ]
  [
    "https://github.com/janestreet/sexplib0/archive/refs/tags/v0.15.1.tar.gz"
    "sexplib0"
    ["md5=ab8fd6273f35a792cad48cbb3024a7f9"]
  ]
  [
    "https://github.com/mirage/Zarith/releases/download/release-1.12%2Bdune/zarith-release-1.12.dune.tbz"
    "Zarith"
    [
      "sha256=d3ba741bcba41e840c26565b7e71c35b1194165dafa0064b0d72b123ba068c41"
      "sha512=1d50ced87218dd020d3f0a8f74595b7e677f47292634df734553ca2783fafdba3fb11c13c5849a674cb53e5aef9a4fff4201a47340315855f6d4493acf42d6c3"
    ]
  ]
  [
    "https://github.com/mirage/arp/releases/download/v3.0.0/arp-v3.0.0.tbz"
    "arp"
    [
      "sha256=f66bc9b03fa5ff66459ce63be0a223573d85160112b8c559e683716fd24674f4"
      "sha512=52eb9fdb00729a5b6c1d7dd9d14fca213aecddc6e2893c0e670dea3b31576e6765061f557b6521a065ed15a931f4cbbf432b4db8fe53df40dc801695acd242d4"
    ]
  ]
  [
    "https://github.com/mirage/ca-certs-nss/releases/download/v3.80/ca-certs-nss-3.80.tbz"
    "ca-certs-nss"
    [
      "sha256=65629c806ca4beaa25b085bbf01bfe0bbd56684012aabe001dc44f18a6d3b2c1"
      "sha512=fd5e3f357c06fc56c7c326d9c418eeaf69534fef5e8515478e76ddeb3621554bc064cd1ad6f85396a3a01c95ccb894dea49bc40f25cfa797c5bdf4675365e235"
    ]
  ]
  [
    "https://github.com/mirage/ca-certs/releases/download/v0.2.2/ca-certs-v0.2.2.tbz"
    "ca-certs"
    [
      "sha256=4f1e77cc125e99987738387ff22cda8710e826f5ef3452f2000f0b30cd668652"
      "sha512=70e564a5bb69a66018ff3387bf7b4b6af2ec1507d9f2f140f2aa8519e405920ec1469e56d1fa2aa8b452d05531a35f22df2c1ac08071f9a322525e95de8e3e1f"
    ]
  ]
  [
    "https://github.com/mirage/eqaf/releases/download/v0.9/eqaf-0.9.tbz"
    "eqaf"
    [
      "sha256=ec0e28a946ac6817f95d5854f05a9961ae3a8408bb610e79cfad01b9b255dfe0"
      "sha512=4df7fd3ea35156953a172c1a021aab05b8b122ee8d3cfdb34f96edb1b5133d1fe2721b90cb64287841d770b16c2ffe70559c66e90f8d61a92b73857da22548c4"
    ]
  ]
  [
    "https://github.com/mirage/ethernet/releases/download/v3.0.0/ethernet-v3.0.0.tbz"
    "ethernet"
    [
      "sha256=e95974f6363bd21e995a1c72ca03d09674c32ed2fbffada5aa82f096ee460929"
      "sha512=171d061b16f2e00b9caa3dfc1cd9b5b358d380e892281ac5c137dc2a3119c3fa288ea927dcb4e9efbcf4850f6857ed0d4b754f56dbb248c1c6150779e57d24e4"
    ]
  ]
  [
    "https://github.com/mirage/io-page/releases/download/v3.0.0/io-page-3.0.0.tbz"
    "io-page"
    [
      "sha256=0e36ca74d9056ba6108090cb98bb2ebf2af079be3f4cdbea022820723ff786ee"
      "sha512=777e5cf4cb82bfc21d026ea2a44a2c30f388a2daa570ad30a396d498b7e4845c0b887402fc002560e2bf17dd49ee7c9839675a3c587e6104f395997eef3c9667"
    ]
  ]
  [
    "https://github.com/mirage/ke/releases/download/v0.6/ke-0.6.tbz"
    "ke"
    [
      "sha256=61217207e2200b04b17759736610ff9208269a647f854cb5ae72cdac0d672305"
      "sha512=be277780a7a6c9109068b6c8d54fa88c35180802ff86951516a32a6b7c0335fd6584753d1c670e02632b3956c09ae31bfec70e3dd5ea94697e9e032ba3b9248b"
    ]
  ]
  [
    "https://github.com/mirage/lwt-dllist/releases/download/v1.0.1/lwt-dllist-v1.0.1.tbz"
    "lwt-dllist"
    [
      "sha256=e86ce75e40f00d51514cf8b2e71e5184c4cb5dae96136be24613406cfc0dba6e"
      "sha512=1df7e8e12e01a5d32e1db746f922e05f23a67c0d20e72a5b9126fead1e04decdb062081574b1c410c822305ef4eac990b7dd69f36673db8f50b9db2152abad80"
    ]
  ]
  [
    "https://github.com/mirage/metrics/releases/download/v0.4.0/metrics-0.4.0.tbz"
    "metrics"
    [
      "sha256=91b8755a4b5090371713c3b55919bebed6a055f4aa97c4b982bd1b5e7fe389af"
      "sha512=00b271b74b7081b2fe202f402c9be6fef70da7241ee82a82b7a52329aad7c1d73c0eb7ee579a20a08c0e54f546351104dd822052624654ecbfc1c33d067656fa"
    ]
  ]
  [
    "https://github.com/mirage/mirage-bootvar-unix/releases/download/0.1.0/mirage-bootvar-unix-0.1.0.tbz"
    "mirage-bootvar-unix"
    ["md5=78c9ad7c38d97de16450d516ab0d6977"]
  ]
  [
    "https://github.com/mirage/mirage-clock/releases/download/v4.2.0/mirage-clock-4.2.0.tbz"
    "mirage-clock"
    [
      "sha256=fa17d15d5be23c79ba741f5f7cb88ed7112de16a4410cea81c71b98086889847"
      "sha512=05a359dc8400d4ca200ff255dbd030acd33d2c4acb5020838f772c02cdb5f243f3dbafbc43a8cd51e6b5923a140f84c9e7ea25b2c0fa277bb68b996190d36e3b"
    ]
  ]
  [
    "https://github.com/mirage/mirage-console/releases/download/v5.1.0/mirage-console-5.1.0.tbz"
    "mirage-console"
    [
      "sha256=9a36118ac6cd3896d8a12b96686a0fb9e5da926a80c265a1d004ef2cbb2fa4d3"
      "sha512=2b27d4a34889e2152436dc650fa02d04d1b2690889f4c2d6e412381a76bf3417bc4a918663e565d9ccb02f67614ceb7242a989021237ca3a69198fc21a314ef1"
    ]
  ]
  [
    "https://github.com/mirage/mirage-crypto/releases/download/v0.10.6/mirage-crypto-0.10.6.tbz"
    "mirage-crypto"
    [
      "sha256=01d6477a4edcad007b56983955d327f0e61c3f36494822f3755017d26e8f9410"
      "sha512=870b7d0d32acde970afcd3fac2cb51131ac74bb20c887d07ddfccd239467a5dc8b700adf463427fa916393c503f106feb733cba5bf4b9d1f8eb57f52b5af9f9c"
    ]
  ]
  [
    "https://github.com/mirage/mirage-flow/releases/download/v3.0.0/mirage-flow-v3.0.0.tbz"
    "mirage-flow"
    [
      "sha256=d70bda6c85ec2747bed88bc4d95f269d2810503b92913f0807be5291696138fc"
      "sha512=2aeb397799621bc0ea2485b68058949c99b3da8d454939d594a9b2d39ef47aa2c16489f06adfa2dea3b34fd15e60a23abc6b8e214dfbc8b7da2e958de7c36b57"
    ]
  ]
  [
    "https://github.com/mirage/mirage-kv/releases/download/v4.0.1/mirage-kv-4.0.1.tbz"
    "mirage-kv"
    [
      "sha256=a7a8b8cd4560c6d4e75220488dbf16eaef71453733565e16c1f15c979b55aa71"
      "sha512=e6ac8b8638eac760d245edb0159366c313ff9f5986fd310557fa6bec6f9fb87a3bb59d73065b42d2a798779d7b41cb81da235624db8e836f44801c4ae20c0293"
    ]
  ]
  [
    "https://github.com/mirage/mirage-logs/releases/download/v1.2.0/mirage-logs-v1.2.0.tbz"
    "mirage-logs"
    [
      "sha256=411d00b52c1826059d530655a4705360225cf8766745a62595c700dfe5af0a40"
      "sha512=04e7f08c7dd1b9049ffb38618e51620bd87d36ca93ecb11bb677983b9483790e2fc2fe5bd3184997fff4964aa4d089d8714777300013dc92cde8530bfeb4eb07"
    ]
  ]
  [
    "https://github.com/mirage/mirage-net/releases/download/v4.0.0/mirage-net-v4.0.0.tbz"
    "mirage-net"
    [
      "sha256=668effd187b81a0ab32450870c15dbb89ff911397ff338a8951807e250e194ce"
      "sha512=52064dc704ebd0d305fd234b6d89fc313d5a80016d8875ef93212a1962ad8b1f332f7b0338244afbb2d2f207a28d476e7d7639be9dc607d95145afee7fccc483"
    ]
  ]
  [
    "https://github.com/mirage/mirage-profile/releases/download/v0.9.1/mirage-profile-v0.9.1.tbz"
    "mirage-profile"
    [
      "sha256=2bb6cf03c73c6f45dedc34365c9131b8bdda62390b04d26eb76793a6422a0352"
      "sha512=23cc4a2a62f5cc05b48d626bd6c8171a442fd46490da6810b1c507fcd7661c7fcd901d8328cddf687af4144136bf0d34b63f8484e32550077ab63d23e6eaea2b"
    ]
  ]
  [
    "https://github.com/mirage/mirage-random/releases/download/v3.0.0/mirage-random-v3.0.0.tbz"
    "mirage-random"
    [
      "sha256=49fe3f281d6430cc1723ecabe47fc9b8e9b29d83cd5f0964f5d000fa014066cf"
      "sha512=5d16855740e04f8efe5bcd5a7596ccffb5b927a616c5e6de4a5f5bd96e2f9f8f3b030d8b216156cac897d49a64b0f5bd7f89c30c787c3d9be63ab952c9984160"
    ]
  ]
  [
    "https://github.com/mirage/mirage-tcpip/releases/download/v7.1.2/tcpip-7.1.2.tbz"
    "mirage-tcpip"
    [
      "sha256=96b6aeafa35f143f7275d1becb6d639472adf3680b8180416de765b6581c466d"
      "sha512=3f873c986de5c58df72db2953c6b2a6319963dbbbd0781b55c2878fd1eaa081ebb7cecbee595db7cb3680a6f438904f98cb69ca17e70c7a6d2d1f61277e929bd"
    ]
  ]
  [
    "https://github.com/mirage/mirage-time/releases/download/v3.0.0/mirage-time-v3.0.0.tbz"
    "mirage-time"
    [
      "sha256=0d40949b58e2c7e8b762ccc8ce066345046233c8c95d0e3d17a242ff289cbd7c"
      "sha512=066f9271c7871eb754cf9b3f8853f4861ce80d1cc31eb9a2384f3cd62441e15aa7636d19cc3bee6d56219fa5653b9f7da7d9b9d659fd1f7cd17326e7ba1715eb"
    ]
  ]
  [
    "https://github.com/mirage/mirage-unix/releases/download/v5.0.0/mirage-unix-5.0.0.tbz"
    "mirage-unix"
    [
      "sha256=810d7a69fef779bb20d77d5df83a94cbb88acdd956af1a7669ccd02784fc1e9b"
      "sha512=5100244a75ab02b680758c371f3b099e76617f74059a0e6c813df67f6bbe43e096a37f0bc5ab02f983ade9eb6c4090a97e9c6bd4b1be2634a1b6fd070bd9375c"
    ]
  ]
  [
    "https://github.com/mirage/mirage/releases/download/v4.2.0/mirage-4.2.0.tbz"
    "mirage"
    [
      "sha256=ad9f72f3ec1b0e3aa3635b31f93992a11e36854291306a5e842091d9c1206eff"
      "sha512=84db845343a91bd536e924b2a2ffcbc71979f05416a8515f3587a1af1f2adc1c56c50da3a7fe659230c341e61ae3de41f70a4763b07b041762e79dbe6f294712"
    ]
  ]
  [
    "https://github.com/mirage/ocaml-base64/releases/download/v3.5.0/base64-v3.5.0.tbz"
    "ocaml-base64"
    [
      "sha256=589de9c00578ebfe784198ac9818d3586c474b2316b6cd3e1c46ccb1f62ae3a4"
      "sha512=82efc76ca75717dbd533eac20845ca8731f535233f6a3e6081114d7e3dc7ee8367ded16f402ef05ad0bf1217a3a6224161c92b9467023e44fc7f3598a314a432"
    ]
  ]
  [
    "https://github.com/mirage/ocaml-cstruct/releases/download/v6.1.1/cstruct-6.1.1.tbz"
    "ocaml-cstruct"
    [
      "sha256=1b74f9870f6a7ee6008924590716dd533a728a3ca10bb18da9fea8be467f518d"
      "sha512=6fdd4517436c501ff0f39088eb0c3ea18e93370e020fa4d10dbf7aad29f1ee9cef881d52499f02c738e8aa0d78b568622a793c68f50ef51f282ee03160171317"
    ]
  ]
  [
    "https://github.com/mirage/ocaml-dns/releases/download/v6.3.0/dns-6.3.0.tbz"
    "ocaml-dns"
    [
      "sha256=dc40237a737d1088b83ec5c26437af9843c3692e316c449b71b07ba458307351"
      "sha512=4716559298ab5c5c47bcb94f3614ea3309033a710469ca2a16e1eda8012b596897a9f26007ed8fb360e6119cf94e88c4ae7e74137863959a4c54aa9983277020"
    ]
  ]
  [
    "https://github.com/mirage/ocaml-ipaddr/releases/download/v5.3.1/ipaddr-5.3.1.tbz"
    "ocaml-ipaddr"
    [
      "sha256=9820bcbccadb6e6d9e22fe26b2f9a044897c8f47c29d157f464b41a2f191e7d4"
      "sha512=1d400f8344d1a8c2ac1c55e4a7167484034094e2227ce7c8f2f45843b0875a83030851400ceb96b5cdb756fa8798d83c77d839705fcb9e3f2bd5e46d337d63d0"
    ]
  ]
  [
    "https://github.com/mirage/parse-argv/releases/download/v0.2.0/parse-argv-v0.2.0.tbz"
    "parse-argv"
    ["md5=0621122768b81e089e5d5ebd7fd2c856"]
  ]
  [
    "https://github.com/mirleft/ocaml-asn1-combinators/releases/download/v0.2.6/asn1-combinators-v0.2.6.tbz"
    "ocaml-asn1-combinators"
    [
      "sha256=012ade0d8869ef621063752c1cf8ea026f6bc702fed10df9af56688e291b1a91"
      "sha512=4c1b28f1d230395ff1ad3b8e8d03981b10015062ec270f29e2521914eb64c2fa4d5df68363e339e9a1158c3b58aef0e25156f7ec6addd85a580fecadc17edfac"
    ]
  ]
  [
    "https://github.com/mirleft/ocaml-tls/releases/download/v0.15.3/tls-0.15.3.tbz"
    "ocaml-tls"
    [
      "sha256=5db456f98a2da3778296152f33dfb73e900c691c958805899fc8e6981f74465a"
      "sha512=371b85c6afebeda0fcc8cc5252e3333d9c3ef3a6bdbee160bb194e2a5928fd537c811c6eec729f16852070944e627257d44c97142a259d00d0db66956a95df49"
    ]
  ]
  [
    "https://github.com/mirleft/ocaml-x509/releases/download/v0.16.0/x509-0.16.0.tbz"
    "ocaml-x509"
    [
      "sha256=67a6727fb4c38b919334eef2f8ef4eac0237029a439ff981d408eca8b9833595"
      "sha512=c9b4cf55d16d8b1e6b6faa18fc9ac08065fa09937f07a3447d4b637539b37bea6374c98d184eba159a8ba8eba860303a78563097e47ef30529fedaaf722115c6"
    ]
  ]
  [
    "https://github.com/ocaml-community/cppo/archive/v1.6.9.tar.gz"
    "cppo"
    [
      "md5=d23ffe85ac7dc8f0afd1ddf622770d09"
      "sha512=26ff5a7b7f38c460661974b23ca190f0feae3a99f1974e0fd12ccf08745bd7d91b7bc168c70a5385b837bfff9530e0e4e41cf269f23dd8cf16ca658008244b44"
    ]
  ]
  [
    "https://github.com/ocaml-dune/csexp/releases/download/1.5.1/csexp-1.5.1.tbz"
    "csexp"
    [
      "sha256=d605e4065fa90a58800440ef2f33a2d931398bf2c22061a8acb7df845c0aac02"
      "sha512=d785bbabaff9f6bf601399149ef0a42e5e99647b54e27f97ef1625907793dda22a45bf83e0e8a1eba2c63634c5484b54739ff0904ef556f5fc592efa38af7505"
    ]
  ]
  [
    "https://github.com/ocaml-ppx/ocaml-syntax-shims/releases/download/1.0.0/ocaml-syntax-shims-1.0.0.tbz"
    "ocaml-syntax-shims"
    [
      "sha256=89b2e193e90a0c168b6ec5ddf6fef09033681bdcb64e11913c97440a2722e8c8"
      "sha512=75c4c6b0bfa1267a8a49a82ba494d08cf0823fc8350863d6d3d4971528cb09e5a2a29e2981d04c75e76ad0f49360b05a432c9efeff9a4fbc1ec6b28960399852"
    ]
  ]
  [
    "https://github.com/ocaml-ppx/ppx_derivers/archive/1.2.1.tar.gz"
    "ppx_derivers"
    ["md5=5dc2bf130c1db3c731fe0fffc5648b41"]
  ]
  [
    "https://github.com/ocaml-ppx/ppxlib/releases/download/0.27.0/ppxlib-0.27.0.tbz"
    "ppxlib"
    [
      "sha256=764b96121d6ffd6a73820e0ec5235176bfc42b94cf2ff97e32d068a5c4b28c62"
      "sha512=2dcce0be6acdb3e185bfdad2785303a405c617f99949316abe6793f785d7227c10795ca49e79290bd385873da635191b44e8a5c211de114a168846d5d26f505c"
    ]
  ]
  [
    "https://github.com/ocaml/dune/releases/download/3.4.1/dune-3.4.1.tbz"
    "dune_"
    [
      "sha256=299fa33cffc108cc26ff59d5fc9d09f6cb0ab3ac280bf23a0114cfdc0b40c6c5"
      "sha512=cb425d08c989fd27e1a87a6c72f37494866b508b0fe4ec05070adad995a99710b223a9047b6649776f63943dafb61903eefe4d5efde4c439103a89e2d6ff5337"
    ]
  ]
  [
    "https://github.com/ocaml/stdlib-shims/releases/download/0.3.0/stdlib-shims-0.3.0.tbz"
    "stdlib-shims"
    [
      "sha256=babf72d3917b86f707885f0c5528e36c63fccb698f4b46cf2bab5c7ccdd6d84a"
      "sha512=1151d7edc8923516e9a36995a3f8938d323aaade759ad349ed15d6d8501db61ffbe63277e97c4d86149cf371306ac23df0f581ec7e02611f58335126e1870980"
    ]
  ]
  [
    "https://github.com/ocsigen/lwt/archive/5.6.1.tar.gz"
    "lwt"
    [
      "md5=279024789a0ec84a9d97d98bad847f97"
      "sha512=698875bd3bfcd5baa47eb48e412f442d289f9972421321541860ebe110b9af1949c3fbc253768495726ec547fe4ba25483cd97ff39bc668496fba95b2ed9edd8"
    ]
  ]
  [
    "https://github.com/pqwy/lru/releases/download/v0.3.0/lru-v0.3.0.tbz"
    "lru"
    ["md5=ecaa8c9f5f708879140961ce35bcdba4"]
  ]
  [
    "https://github.com/pqwy/psq/releases/download/v0.2.0/psq-v0.2.0.tbz"
    "psq"
    ["md5=b94fb15f8878172bf58446b7d0fb7c1e"]
  ]
  [
    "https://github.com/roburio/happy-eyeballs/releases/download/v0.3.0/happy-eyeballs-0.3.0.tbz"
    "happy-eyeballs"
    [
      "sha256=a60ea0a1ef7d160a6fd62d63991b9e84e35ca5a9c07e5c7fa035e0fd428bb69e"
      "sha512=0c43180c635c1ac807bd6a2abbb0403afca646870936baa451f6eadcd37d1b32ceea916d7b441b190392c4b32d32292bf6196de00faa198e2e8e59c3b4fdef56"
    ]
  ]
  [
    "https://ocaml.janestreet.com/ocaml-core/v0.15/files/base-v0.15.0.tar.gz"
    "base"
    [
      "sha256=8657ae4324a9948457112245c49d97d2da95f157f780f5d97f0b924312a6a53d"
    ]
  ]
  [
    "https://ocaml.janestreet.com/ocaml-core/v0.15/files/parsexp-v0.15.0.tar.gz"
    "parsexp"
    [
      "sha256=d1ee902b12ac7c0c888863025990d06845530fb75328454814e5ce5b6d43d193"
    ]
  ]
]
x-opam-monorepo-opam-provided: ["mirage" "ocaml" "opam-monorepo"]
x-opam-monorepo-root-packages: ["minipaf-unix"]
x-opam-monorepo-version: "0.3"

Hi @hannesm, thanks for your report. Just came back from a long weekend, so it took a moment to check out the ticket.

That is indeed very strange. For a moment I thought that maybe the OPAM metadata is wrong and h2.0.8.0 references the 0.9.0 tarball but it doesn't seem to be the case. I'll investigate, thanks for the reproducible case.

Also, btw, ocaml is always considered "opam provided" (actually, it's more complicated than that but that doesn't matter), no need to add it. opam-monorepo is always special-casing it as well as it special cases a small set of other packages, otherwise it would always need to be added :-)

FWIW, this was with opam-repository at 46185c6ddabbdb605810a7c2c4f545fe9f92fbfd

Also, note that "h2" depends on "hpack" -- which is part of the very same archive (i.e. the h2 release includes the hpack opam file), and indeed h2 0.8.0 works fine with hpack 0.9.0. BUT it seems opam-monorepo is taking some shortcut and throwing away the bound between paf 0.9.0 and h2 < 0.9.0...

Also, btw, ocaml is always considered "opam provided" (actually, it's more complicated than that but that doesn't matter), no need to add it. opam-monorepo is always special-casing it as well as it special cases a small set of other packages, otherwise it would always need to be added :-)

I'm sorry I've had no clue that opam-monorepo is special-casing "a small set of other packages". I guess that "ocaml" dependency is introduced by some code inside the mirage utility.

And thanks for your answer @Leonidas-from-XIV!

#145 looks related to this -- maybe this is "expected behaviour", but then I'm not sure what the semantics of version bounds should be, and how to express the situation above (requiring an older h2 to be able to compile paf).

@hannesm Yes, I think this is exactly the case here, opam-monorepo only ever chooses one tarball per repo and if the versions diverge then it can only pick one. The reason for this is, if in unpacks both 0.8.0 and 0.9.0 tarballs you suddenly have two h2 and two hpack projects and dune wouldn't know which ones to build and which ones to ignore.

We recently had a case where it would fail because while tarballs often contain all packages of the repo, that package did not so it ended up failing.

It seems we need a different solution to this problem because we keep having issues.

I tried reproducing it and turns out that the problem somewhat solved itself because 2 days ago paf 0.1.0 was released, which requires h2 > 0.9.0, so opam-monorepo can use that as a solution. So that should at least unlock your specific problem.

Of course if I set the constraint to use force paf.0.0.9 I get the exact behavior you report. Will discuss how to solve this in the future, we might need some additional dune features to disable packages in vendored trees (or prune these trees).

Is this comment relevant here?

(* If packages from the same repo were resolved to different URLs, we need to pick
a single one. Here we decided to go with the one associated with the package
that has the higher version. We need a better long term solution as this won't
play nicely with pins for instance.
The best solution here would be to use source trimming, so we can pull each individual
package to its own directory and strip out all the unrelated source code but we would
need dune to provide that feature. *)
let highest_version_package =
List.max_exn packages ~compare:(fun p p' ->
OpamPackage.Version.compare p.Package.opam.version p'.opam.version)
in
log_url_selection ~dev_repo ~packages ~highest_version_package;
let url = highest_version_package.url in
let hashes = highest_version_package.hashes in
{ dir; url; hashes; provided_packages }

Yes that's exactly what is happening here. We need either source trimming or (in my opinion better) a way to enable just certain subtrees for dune to build, basically a way to prune specific packages from the build tree that it discovers.

Could it be possible to synthesize constraints for the solver such that all packages with the same dev repo use the same source? Could for example use the url.checksum.

@reynir You mean, solving to get a solution, then resolving conflicts (by picking the higher version of all duplicate packages) and feeding that solution back into the solver to see if it still works?

No, that's not what I mean. I don't know too much about opam-monorepo internals.

What I imagine could be done is for h2 and hpack a new virtual package "git+https://github.com/anmonteiro/ocaml-h2.git" is synthesized. Then h2.0.9.0 depends on "git+https://github.com/anmonteiro/ocaml-h2.git" {= "sha256=ee08d1849b369ae7d06c89805e22854fd999d641c64871f08c25593397f40b5e"} (or = "https://github.com/anmonteiro/ocaml-h2/releases/download/0.9.0/h2-0.9.0.tbz"), and hpack.0.10.0 depends on "git+https://github.com/anmonteiro/ocaml-h2.git" {= "sha256=9fd6afa552fa1c3d8a04e3761699d47ae1f71ce503380dbd8929a375cc4c46f1"} (or = "https://github.com/anmonteiro/ocaml-h2/releases/download/0.10.0/h2-0.10.0.tbz"). With this you can't install h2.0.9.0 and hpack.0.10.0 at the same time as they depend on different "versions" of the synthesized package "git+https://github.com/anmonteiro/ocaml-h2.git".

Does this make sense?

This should be fixed by #396

The issue with @reynir's solution is that the problem is not the deduplication (the deduplication is rather a band-aid to be even able to build these packages at all). The solver is perfectly capable of finding a solution where hpack.0.10.0 and h2.0.9.0 are a valid solution. We can also perfectly well fetch the sources of these. The issue is that it can't be built without a change to dune:

Which one to pick? dune doesn't know and gives up. So if you put them in the duniverse you'll get something like this:

Error: Too many opam files for package "hpack":
- duniverse/h2/hpack.opam
- duniverse/hpack/hpack.opam

And if you manage to make dune ignore the opam files (e.g. by making public_names into names), it will complain that you have multiple libraries called hpack. There is no way to tell dune which one to use and which one not to use.