Skip to content

Commit

Permalink
dev-ml/ocaml-conduit: Fix build with lwt3.
Browse files Browse the repository at this point in the history
Package-Manager: Portage-2.3.5, Repoman-2.3.2
  • Loading branch information
aballier committed Apr 12, 2017
1 parent 133e85b commit 484e623
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 2 deletions.
58 changes: 58 additions & 0 deletions dev-ml/ocaml-conduit/files/lwt3.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
Index: ocaml-conduit-0.15.0/lib/conduit_lwt_server.ml
===================================================================
--- ocaml-conduit-0.15.0.orig/lib/conduit_lwt_server.ml
+++ ocaml-conduit-0.15.0/lib/conduit_lwt_server.ml
@@ -15,10 +15,10 @@ let close (ic, oc) =
let listen ?(backlog=128) sa =
let fd = Lwt_unix.socket (Unix.domain_of_sockaddr sa) Unix.SOCK_STREAM 0 in
Lwt_unix.(setsockopt fd SO_REUSEADDR true);
- Lwt_unix.bind fd sa;
+ Lwt_unix.bind fd sa >>= fun _ ->
Lwt_unix.listen fd backlog;
Lwt_unix.set_close_on_exec fd;
- fd
+ Lwt.return fd

let with_socket sockaddr f =
let fd =
Index: ocaml-conduit-0.15.0/lib/conduit_lwt_server.mli
===================================================================
--- ocaml-conduit-0.15.0.orig/lib/conduit_lwt_server.mli
+++ ocaml-conduit-0.15.0/lib/conduit_lwt_server.mli
@@ -3,7 +3,7 @@ val close : 'a Lwt_io.channel * 'b Lwt_i

val set_max_active : int -> unit

-val listen : ?backlog:int -> Unix.sockaddr -> Lwt_unix.file_descr
+val listen : ?backlog:int -> Unix.sockaddr -> Lwt_unix.file_descr Lwt.t

val with_socket
: Unix.sockaddr
Index: ocaml-conduit-0.15.0/lib/conduit_lwt_unix.ml
===================================================================
--- ocaml-conduit-0.15.0.orig/lib/conduit_lwt_unix.ml
+++ ocaml-conduit-0.15.0/lib/conduit_lwt_unix.ml
@@ -167,11 +167,12 @@ let init ?src ?(tls_server_key=`None) ()
module Sockaddr_client = struct
let connect ?src sa =
Conduit_lwt_server.with_socket sa (fun fd ->
- let () =
+ let tx () =
match src with
- | None -> ()
+ | None -> Lwt.return ()
| Some src_sa -> Lwt_unix.bind fd src_sa
- in
+ in
+ tx () >>= fun () ->
Lwt_unix.connect fd sa >>= fun () ->
let ic = Lwt_io.of_fd ~mode:Lwt_io.input fd in
let oc = Lwt_io.of_fd ~mode:Lwt_io.output fd in
@@ -199,6 +200,7 @@ module Sockaddr_server = struct
match on with
| `Socket s -> s
| `Sockaddr sockaddr -> Conduit_lwt_server.listen ?backlog sockaddr in
+ s >>= fun s ->
Conduit_lwt_server.init ?stop (process_accept ?timeout callback) s
end

8 changes: 6 additions & 2 deletions dev-ml/ocaml-conduit/ocaml-conduit-0.15.0.ebuild
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

EAPI=5

inherit findlib
inherit findlib eutils

DESCRIPTION="Dereference URIs into communication channels for Async or Lwt"
HOMEPAGE="https://github.com/mirage/ocaml-conduit"
Expand All @@ -23,7 +23,7 @@ DEPEND="
dev-ml/ocaml-cstruct:=
dev-ml/ocaml-ipaddr:=
dev-ml/lwt:=
>=dev-ml/lwt-3:=
dev-ml/async:=
dev-ml/ocaml-dns:=
dev-ml/ocaml-ssl:=
Expand All @@ -39,6 +39,10 @@ DEPEND="${DEPEND}

DOCS=( TODO.md README.md CHANGES )

src_prepare() {
epatch "${FILESDIR}/lwt3.patch"
}

src_install() {
findlib_src_preinst
default
Expand Down

0 comments on commit 484e623

Please sign in to comment.