From 4fa643580a1ccde85c2aa8feb5764c92a816ae9c Mon Sep 17 00:00:00 2001 From: Hannes Mehnert Date: Wed, 5 Feb 2025 20:18:50 +0100 Subject: [PATCH 1/4] [new release] happy-eyeballs (4 packages) (2.0.0) CHANGES: * Use mirage-sleep and mirage-mtime (dune variants) instead of functorising over TIME and MCLOCK --- .../happy-eyeballs-lwt.2.0.0/opam | 44 +++++++++++++++++++ .../happy-eyeballs-miou-unix.2.0.0/opam | 43 ++++++++++++++++++ .../happy-eyeballs-mirage.2.0.0/opam | 44 +++++++++++++++++++ .../happy-eyeballs/happy-eyeballs.2.0.0/opam | 41 +++++++++++++++++ 4 files changed, 172 insertions(+) create mode 100644 packages/happy-eyeballs-lwt/happy-eyeballs-lwt.2.0.0/opam create mode 100644 packages/happy-eyeballs-miou-unix/happy-eyeballs-miou-unix.2.0.0/opam create mode 100644 packages/happy-eyeballs-mirage/happy-eyeballs-mirage.2.0.0/opam create mode 100644 packages/happy-eyeballs/happy-eyeballs.2.0.0/opam diff --git a/packages/happy-eyeballs-lwt/happy-eyeballs-lwt.2.0.0/opam b/packages/happy-eyeballs-lwt/happy-eyeballs-lwt.2.0.0/opam new file mode 100644 index 00000000000..a441cc1f667 --- /dev/null +++ b/packages/happy-eyeballs-lwt/happy-eyeballs-lwt.2.0.0/opam @@ -0,0 +1,44 @@ +opam-version: "2.0" +maintainer: "Robur " +authors: ["Robur "] +homepage: "https://github.com/robur-coop/happy-eyeballs" +dev-repo: "git+https://github.com/robur-coop/happy-eyeballs.git" +bug-reports: "https://github.com/robur-coop/happy-eyeballs/issues" +doc: "https://robur-coop.github.io/happy-eyeballs/" +license: "ISC" + +depends: [ + "ocaml" {>= "4.08.0"} + "dune" {>= "2.0.0"} + "happy-eyeballs" {=version} + "cmdliner" {>= "1.1.0"} + "duration" + "dns" {>= "7.0.0"} + "domain-name" + "ipaddr" + "fmt" + "logs" + "lwt" + "mtime" {>= "1.0.0"} +] +build: [ + ["dune" "subst"] {dev} + ["dune" "build" "-p" name "-j" jobs] +] + +synopsis: "Connecting to a remote host via IP version 4 or 6 using Lwt_unix" +description: """ +Happy eyeballs is an implementation of RFC 8305 which specifies how to connect +to a remote host using either IP protocol version 4 or IP protocol version 6. +This uses Lwt and Lwt_unix for side effects. +""" +x-maintenance-intent: [ "(latest)" ] +url { + src: + "https://github.com/robur-coop/happy-eyeballs/releases/download/v2.0.0/happy-eyeballs-2.0.0.tbz" + checksum: [ + "sha256=a4d0135c87dbeb214d675831e9c4d98a4718bb61c3b86e94aa6f884f80fd9d0f" + "sha512=13dcca220f861ac4535d1256f6ab363a51418ccad2fa0c36cbc879c3acdca3d64eb38cb847bab93d39c0525ad76e2db3f965def6eb2c726ad0388f385393b757" + ] +} +x-commit-hash: "545d1ee750d0453d743e90aa3400710fcf902634" diff --git a/packages/happy-eyeballs-miou-unix/happy-eyeballs-miou-unix.2.0.0/opam b/packages/happy-eyeballs-miou-unix/happy-eyeballs-miou-unix.2.0.0/opam new file mode 100644 index 00000000000..6fe3f3af40c --- /dev/null +++ b/packages/happy-eyeballs-miou-unix/happy-eyeballs-miou-unix.2.0.0/opam @@ -0,0 +1,43 @@ +opam-version: "2.0" +maintainer: "Robur " +authors: ["Robur "] +homepage: "https://github.com/robur-coop/happy-eyeballs" +dev-repo: "git+https://github.com/robur-coop/happy-eyeballs.git" +bug-reports: "https://github.com/robur-coop/happy-eyeballs/issues" +doc: "https://robur-coop.github.io/happy-eyeballs/" +license: "ISC" + +depends: [ + "ocaml" {>= "5.0.0"} + "dune" {>= "2.0.0"} + "happy-eyeballs" {= version} + "miou" {>= "0.2.0"} + "mtime" {>= "2.0.0"} + "duration" + "domain-name" + "ipaddr" {>= "5.6.0"} + "fmt" + "logs" {>= "0.7.0"} + "cmdliner" {>= "1.3.0"} +] +build: [ + ["dune" "subst"] {dev} + ["dune" "build" "-p" name "-j" jobs] +] + +synopsis: "Connecting to a remote host via IP version 4 or 6 using Miou" +description: """ +Happy eyeballs is an implementation of RFC 8305 which specifies how to connect +to a remote host using either IP protocol version 4 or IP protocol version 6. +This uses Miou for side effects. +""" +x-maintenance-intent: [ "(latest)" ] +url { + src: + "https://github.com/robur-coop/happy-eyeballs/releases/download/v2.0.0/happy-eyeballs-2.0.0.tbz" + checksum: [ + "sha256=a4d0135c87dbeb214d675831e9c4d98a4718bb61c3b86e94aa6f884f80fd9d0f" + "sha512=13dcca220f861ac4535d1256f6ab363a51418ccad2fa0c36cbc879c3acdca3d64eb38cb847bab93d39c0525ad76e2db3f965def6eb2c726ad0388f385393b757" + ] +} +x-commit-hash: "545d1ee750d0453d743e90aa3400710fcf902634" diff --git a/packages/happy-eyeballs-mirage/happy-eyeballs-mirage.2.0.0/opam b/packages/happy-eyeballs-mirage/happy-eyeballs-mirage.2.0.0/opam new file mode 100644 index 00000000000..d7fa5ab4b2f --- /dev/null +++ b/packages/happy-eyeballs-mirage/happy-eyeballs-mirage.2.0.0/opam @@ -0,0 +1,44 @@ +opam-version: "2.0" +maintainer: "Robur " +authors: ["Robur "] +homepage: "https://github.com/robur-coop/happy-eyeballs" +dev-repo: "git+https://github.com/robur-coop/happy-eyeballs.git" +bug-reports: "https://github.com/robur-coop/happy-eyeballs/issues" +doc: "https://robur-coop.github.io/happy-eyeballs/" +license: "ISC" + +depends: [ + "ocaml" {>= "4.08.0"} + "dune" {>= "2.0.0"} + "happy-eyeballs" {=version} + "duration" + "domain-name" + "ipaddr" + "fmt" + "logs" + "lwt" + "mirage-mtime" {>= "4.0.0"} + "tcpip" {>= "7.0.0"} + "mirage-sleep" {>= "4.0.0"} +] +build: [ + ["dune" "subst"] {dev} + ["dune" "build" "-p" name "-j" jobs] +] + +synopsis: "Connecting to a remote host via IP version 4 or 6 using Mirage" +description: """ +Happy eyeballs is an implementation of RFC 8305 which specifies how to connect +to a remote host using either IP protocol version 4 or IP protocol version 6. +This uses Lwt and Mirage for side effects. +""" +x-maintenance-intent: [ "(latest)" ] +url { + src: + "https://github.com/robur-coop/happy-eyeballs/releases/download/v2.0.0/happy-eyeballs-2.0.0.tbz" + checksum: [ + "sha256=a4d0135c87dbeb214d675831e9c4d98a4718bb61c3b86e94aa6f884f80fd9d0f" + "sha512=13dcca220f861ac4535d1256f6ab363a51418ccad2fa0c36cbc879c3acdca3d64eb38cb847bab93d39c0525ad76e2db3f965def6eb2c726ad0388f385393b757" + ] +} +x-commit-hash: "545d1ee750d0453d743e90aa3400710fcf902634" diff --git a/packages/happy-eyeballs/happy-eyeballs.2.0.0/opam b/packages/happy-eyeballs/happy-eyeballs.2.0.0/opam new file mode 100644 index 00000000000..a2488e2a2a1 --- /dev/null +++ b/packages/happy-eyeballs/happy-eyeballs.2.0.0/opam @@ -0,0 +1,41 @@ +opam-version: "2.0" +maintainer: "Robur " +authors: ["Robur "] +homepage: "https://github.com/robur-coop/happy-eyeballs" +dev-repo: "git+https://github.com/robur-coop/happy-eyeballs.git" +bug-reports: "https://github.com/robur-coop/happy-eyeballs/issues" +doc: "https://robur-coop.github.io/happy-eyeballs/" +license: "ISC" + +depends: [ + "ocaml" {>= "4.08.0"} + "dune" {>= "2.0.0"} + "duration" + "domain-name" {>= "0.2.0"} + "ipaddr" {>= "5.2.0"} + "fmt" {>= "0.8.7"} + "logs" +] +build: [ + ["dune" "subst"] {dev} + ["dune" "build" "-p" name "-j" jobs] +] + +synopsis: "Connecting to a remote host via IP version 4 or 6" +description: """ +Happy eyeballs is an implementation of +[RFC 8305](https://datatracker.ietf.org/doc/html/rfc8305) which specifies how +to connect to a remote host using either IP protocol version 4 or IP protocol +version 6. This is the core of the algorithm in value passing style, with a +slick dependency cone. +""" +x-maintenance-intent: [ "(latest)" ] +url { + src: + "https://github.com/robur-coop/happy-eyeballs/releases/download/v2.0.0/happy-eyeballs-2.0.0.tbz" + checksum: [ + "sha256=a4d0135c87dbeb214d675831e9c4d98a4718bb61c3b86e94aa6f884f80fd9d0f" + "sha512=13dcca220f861ac4535d1256f6ab363a51418ccad2fa0c36cbc879c3acdca3d64eb38cb847bab93d39c0525ad76e2db3f965def6eb2c726ad0388f385393b757" + ] +} +x-commit-hash: "545d1ee750d0453d743e90aa3400710fcf902634" From c3c46691a6a15348956cb29baafa0ee0790b8842 Mon Sep 17 00:00:00 2001 From: Hannes Mehnert Date: Thu, 6 Feb 2025 12:45:42 +0100 Subject: [PATCH 2/4] upper bound conduit-mirage Error: ``` File "src/conduit-mirage/resolver_mirage.ml", line 96, characters 13-51: 96 | module H = Happy_eyeballs_mirage.Make (T) (C) (S) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error: The functor application is ill-typed. These arguments: T C S do not match these parameters: functor (S : Tcpip.Stack.V4V6) -> ... 1. The following extra argument is provided T : sig val sleep_ns : int64 -> unit Lwt.t end 2. The following extra argument is provided C : sig val elapsed_ns : unit -> int64 val period_ns : unit -> int64 option end 3. Module S matches the expected module type Tcpip.Stack.V4V6 ``` --- packages/conduit-mirage/conduit-mirage.6.2.3/opam | 1 + packages/conduit-mirage/conduit-mirage.7.0.0/opam | 1 + packages/conduit-mirage/conduit-mirage.7.1.0/opam | 1 + 3 files changed, 3 insertions(+) diff --git a/packages/conduit-mirage/conduit-mirage.6.2.3/opam b/packages/conduit-mirage/conduit-mirage.6.2.3/opam index d7be0c80130..d2562b3af06 100644 --- a/packages/conduit-mirage/conduit-mirage.6.2.3/opam +++ b/packages/conduit-mirage/conduit-mirage.6.2.3/opam @@ -28,6 +28,7 @@ depends: [ "ipaddr-sexp" "tcpip" {>= "7.0.0"} "fmt" {>= "0.8.7"} + "happy-eyeballs-mirage" {< "2.0.0"} ] conflicts: [ "mirage-conduit" diff --git a/packages/conduit-mirage/conduit-mirage.7.0.0/opam b/packages/conduit-mirage/conduit-mirage.7.0.0/opam index 663ad690670..2fccedd6897 100644 --- a/packages/conduit-mirage/conduit-mirage.7.0.0/opam +++ b/packages/conduit-mirage/conduit-mirage.7.0.0/opam @@ -28,6 +28,7 @@ depends: [ "ipaddr-sexp" "tcpip" {>= "7.0.0"} "fmt" {>= "0.8.7"} + "happy-eyeballs-mirage" {< "2.0.0"} ] conflicts: [ "mirage-conduit" diff --git a/packages/conduit-mirage/conduit-mirage.7.1.0/opam b/packages/conduit-mirage/conduit-mirage.7.1.0/opam index 3235b2756f0..33f544a2721 100644 --- a/packages/conduit-mirage/conduit-mirage.7.1.0/opam +++ b/packages/conduit-mirage/conduit-mirage.7.1.0/opam @@ -28,6 +28,7 @@ depends: [ "ipaddr-sexp" "tcpip" {>= "7.0.0"} "fmt" {>= "0.8.7"} + "happy-eyeballs-mirage" {< "2.0.0"} ] conflicts: [ "mirage-conduit" From 44d80366912cd192da7a5357f110a22d2be4f054 Mon Sep 17 00:00:00 2001 From: Hannes Mehnert Date: Thu, 6 Feb 2025 12:46:44 +0100 Subject: [PATCH 3/4] Upper bounds for dns-stub Error: ``` File "mirage/stub/dns_stub_mirage.ml", line 61, characters 13-48: 61 | module H = Happy_eyeballs_mirage.Make(T)(C)(S) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error: The functor application is ill-typed. These arguments: T C S do not match these parameters: functor (S : Tcpip.Stack.V4V6) -> ... 1. The following extra argument is provided T : sig val sleep_ns : int64 -> unit Lwt.t end 2. The following extra argument is provided C : sig val elapsed_ns : unit -> int64 val period_ns : unit -> int64 option end 3. Module S matches the expected module type Tcpip.Stack.V4V6 ``` --- packages/dns-stub/dns-stub.8.0.0/opam | 1 + packages/dns-stub/dns-stub.9.0.0/opam | 1 + packages/dns-stub/dns-stub.9.1.0/opam | 1 + 3 files changed, 3 insertions(+) diff --git a/packages/dns-stub/dns-stub.8.0.0/opam b/packages/dns-stub/dns-stub.8.0.0/opam index 3dbd667cd1e..dca11c83133 100644 --- a/packages/dns-stub/dns-stub.8.0.0/opam +++ b/packages/dns-stub/dns-stub.8.0.0/opam @@ -25,6 +25,7 @@ depends: [ "mirage-random" {>= "2.0.0"} "tcpip" {>= "7.0.0"} "metrics" + "happy-eyeballs-mirage" {< "2.0.0"} ] build: [ diff --git a/packages/dns-stub/dns-stub.9.0.0/opam b/packages/dns-stub/dns-stub.9.0.0/opam index 992d8cc0f0c..ffc8995001d 100644 --- a/packages/dns-stub/dns-stub.9.0.0/opam +++ b/packages/dns-stub/dns-stub.9.0.0/opam @@ -25,6 +25,7 @@ depends: [ "tcpip" {>= "8.2.0"} "metrics" "mirage-crypto-rng-mirage" {>= "1.0.0"} + "happy-eyeballs-mirage" {< "2.0.0"} ] build: [ diff --git a/packages/dns-stub/dns-stub.9.1.0/opam b/packages/dns-stub/dns-stub.9.1.0/opam index 21fe20b89e8..597dc5549cb 100644 --- a/packages/dns-stub/dns-stub.9.1.0/opam +++ b/packages/dns-stub/dns-stub.9.1.0/opam @@ -25,6 +25,7 @@ depends: [ "tcpip" {>= "8.2.0"} "metrics" "mirage-crypto-rng-mirage" {>= "1.0.0"} + "happy-eyeballs-mirage" {< "2.0.0"} ] build: [ From 5fd97cedfe0f31789710efc133f35948430ea2b3 Mon Sep 17 00:00:00 2001 From: Hannes Mehnert Date: Thu, 6 Feb 2025 12:47:57 +0100 Subject: [PATCH 4/4] Upper bounds in http-mirage-client Error: ``` File "test/test.ml", line 22, characters 2-70: 22 | Happy_eyeballs_mirage.Make (Time) (Mclock) (Tcpip_stack_socket.V4V6) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error: The functor application is ill-typed. These arguments: Time Mclock Tcpip_stack_socket.V4V6 do not match these parameters: functor (S : Tcpip.Stack.V4V6) -> ... 1. The following extra argument is provided Time : sig val sleep_ns : int64 -> unit Lwt.t end 2. The following extra argument is provided Mclock : sig val elapsed_ns : unit -> int64 val period_ns : unit -> int64 option end 3. Modules do not match: Tcpip_stack_socket.V4V6 : sig type t = Tcpip_stack_socket.V4V6.t val disconnect : t -> unit Lwt.t module UDP = Tcpip_stack_socket.V4V6.UDP module TCP = Tcpip_stack_socket.V4V6.TCP module IP = Tcpip_stack_socket.V4V6.IP val udp : t -> UDP.t val tcp : t -> TCP.t val ip : t -> IP.t val listen : t -> unit Lwt.t val connect : Udpv4v6_socket.t -> Tcpv4v6_socket.t -> t Lwt.t end is not included in Tcpip.Stack.V4V6 ... In module UDP: Values do not match: val listen : t -> port:int -> (src:Ipaddr.t -> dst:('a, Ipaddr.V6.t) Ipaddr.v4v6 -> src_port:int -> Cstruct.t -> unit Lwt.t) -> unit is not included in val listen : t -> port:int -> callback -> unit The type t -> port:int -> (src:Ipaddr.t -> dst:('a, Ipaddr.V6.t) Ipaddr.v4v6 -> src_port:int -> Cstruct.t -> unit Lwt.t) -> unit is not compatible with the type t -> port:int -> callback -> unit Type src:Ipaddr.t -> dst:('a, Ipaddr.V6.t) Ipaddr.v4v6 -> src_port:int -> Cstruct.t -> unit Lwt.t is not compatible with type callback = src:ipaddr -> dst:ipaddr -> src_port:int -> Cstruct.t -> unit Lwt.t Type ('a, Ipaddr.V6.t) Ipaddr.v4v6 is not compatible with type ipaddr = Ipaddr.t File "src/core/udp.mli", line 26, characters 2-48: Expected declaration File "src/stack-unix/udpv4v6_socket.ml", line 170, characters 4-10: Actual declaration ``` --- packages/http-mirage-client/http-mirage-client.0.0.6/opam | 1 + packages/http-mirage-client/http-mirage-client.0.0.7/opam | 1 + packages/http-mirage-client/http-mirage-client.0.0.8/opam | 1 + 3 files changed, 3 insertions(+) diff --git a/packages/http-mirage-client/http-mirage-client.0.0.6/opam b/packages/http-mirage-client/http-mirage-client.0.0.6/opam index 15098bb36b7..32c16eead2d 100644 --- a/packages/http-mirage-client/http-mirage-client.0.0.6/opam +++ b/packages/http-mirage-client/http-mirage-client.0.0.6/opam @@ -22,6 +22,7 @@ depends: [ "mirage-crypto-rng" {with-test} "mirage-time-unix" {with-test & >= "3.0.0"} "h2" {>= "0.10.0"} + "happy-eyeballs-mirage" {< "2.0.0"} ] build: [ ["dune" "subst"] {dev} diff --git a/packages/http-mirage-client/http-mirage-client.0.0.7/opam b/packages/http-mirage-client/http-mirage-client.0.0.7/opam index ab7e17cf1d1..73a218baa4e 100644 --- a/packages/http-mirage-client/http-mirage-client.0.0.7/opam +++ b/packages/http-mirage-client/http-mirage-client.0.0.7/opam @@ -24,6 +24,7 @@ depends: [ "h2" {>= "0.10.0"} "tls" {>= "1.0.0"} "x509" {>= "1.0.0"} + "happy-eyeballs-mirage" {< "2.0.0"} ] build: [ ["dune" "subst"] {dev} diff --git a/packages/http-mirage-client/http-mirage-client.0.0.8/opam b/packages/http-mirage-client/http-mirage-client.0.0.8/opam index 556e6a67968..3fc27da74b0 100644 --- a/packages/http-mirage-client/http-mirage-client.0.0.8/opam +++ b/packages/http-mirage-client/http-mirage-client.0.0.8/opam @@ -24,6 +24,7 @@ depends: [ "h2" {>= "0.10.0"} "tls" {>= "1.0.0"} "x509" {>= "1.0.0"} + "happy-eyeballs-mirage" {< "2.0.0"} ] build: [ ["dune" "subst"] {dev}