Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

opam monorepo ignores upper bounds #331

Open
hannesm opened this issue Aug 25, 2022 · 13 comments
Open

opam monorepo ignores upper bounds #331

hannesm opened this issue Aug 25, 2022 · 13 comments
Labels
bug Something isn't working requires dune change Would need additional dune features to implement upstream Fix has to be implemented upstream

Comments

@hannesm
Copy link
Contributor

hannesm commented Aug 25, 2022

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"
@Leonidas-from-XIV
Copy link
Member

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 :-)

@hannesm
Copy link
Contributor Author

hannesm commented Aug 29, 2022

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.

@hannesm
Copy link
Contributor Author

hannesm commented Aug 29, 2022

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

@hannesm
Copy link
Contributor Author

hannesm commented Aug 29, 2022

#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).

@Leonidas-from-XIV
Copy link
Member

@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.

@Leonidas-from-XIV
Copy link
Member

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).

@RyanGibb
Copy link

RyanGibb commented Sep 22, 2022

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 }

@Leonidas-from-XIV
Copy link
Member

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.

@reynir
Copy link
Contributor

reynir commented Mar 21, 2023

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.

@Leonidas-from-XIV
Copy link
Member

@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?

@reynir
Copy link
Contributor

reynir commented Mar 21, 2023

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?

@samoht
Copy link
Collaborator

samoht commented Aug 28, 2023

This should be fixed by #396

@Leonidas-from-XIV
Copy link
Member

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working requires dune change Would need additional dune features to implement upstream Fix has to be implemented upstream
Projects
None yet
Development

No branches or pull requests

6 participants