initial import of lwt-2.4.0; espie@ ok

Does not include the enhanced top-level, which will be added in a later update.
From Christopher Zimmermann <madroach@gmerlin.de>

--
Lwt provides very light-weight cooperative threads for OCaml;
``launching'' a thread is a very fast operation, it does not require
a new stack, a new process, or anything else. Moreover context
switches are very fast. In fact, it is so easy that a thread can
be launched for every system call. And composing cooperative threads
will allow highly asynchronous programs.
This commit is contained in:
avsm 2012-08-19 00:27:50 +00:00
parent 4e17c8a397
commit 0852c11f05
11 changed files with 557 additions and 0 deletions

38
devel/ocaml-lwt/Makefile Normal file
View File

@ -0,0 +1,38 @@
# $OpenBSD: Makefile,v 1.1.1.1 2012/08/19 00:27:50 avsm Exp $
COMMENT = cooperative lightweight thread library
CATEGORIES = devel
DISTNAME = lwt-2.4.0
PKGNAME = ocaml-${DISTNAME}
MASTER_SITES = http://ocsigen.org/download/
HOMEPAGE = http://ocsigen.org/lwt/
# LGPLv2.1
PERMIT_PACKAGE_FTP = Yes
PERMIT_PACKAGE_CDROM = Yes
PERMIT_DISTFILES_FTP = Yes
PERMIT_DISTFILES_CDROM = Yes
MODULES = lang/ocaml
MYDEPENDS = devel/ocaml-react \
textproc/ocaml-text \
security/ocaml-ssl
BUILD_DEPENDS = ${MYDEPENDS} sysutils/findlib
RUN_DEPENDS = ${MYDEPENDS} lang/ocaml
LIB_DEPENDS = devel/glib2 devel/libev converters/libiconv
WANTLIB = glib-2.0 ev iconv intl pthread
CONFIGURE_STYLE = oasis
CONFIGURE_ARGS = --enable-tests --enable-react --enable-glib --enable-ssl
post-install:
${INSTALL_DATA} \
${WRKDIST}/{CHANGES,COPYING,README} \
${PREFIX}/share/doc/ocaml-lwt/
.include <bsd.port.mk>

2
devel/ocaml-lwt/distinfo Normal file
View File

@ -0,0 +1,2 @@
SHA256 (lwt-2.4.0.tar.gz) = mY0rIcnq9SrWPHysF5SABh/tTmp1hdh5eMZs7var30g=
SIZE (lwt-2.4.0.tar.gz) = 501062

View File

@ -0,0 +1,74 @@
$OpenBSD: patch-discover_ml,v 1.1.1.1 2012/08/19 00:27:50 avsm Exp $
--- discover.ml.orig Thu Jul 19 13:35:56 2012
+++ discover.ml Sat Aug 18 07:23:25 2012
@@ -114,15 +114,18 @@ CAMLprim value lwt_test()
}
"
-let get_credentials_code = "
+let get_credentials_code struct_name = "
+#define _GNU_SOURCE
#include <caml/mlvalues.h>
#include <sys/types.h>
#include <sys/socket.h>
CAMLprim value lwt_test()
{
- getsockopt(0, SOL_SOCKET, SO_PEERCRED, 0, 0);
- return Val_unit;
+ struct " ^ struct_name ^ " cred;
+ socklen_t cred_len = sizeof(cred);
+ getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
+ return Val_unit;
}
"
@@ -133,10 +136,10 @@ let get_peereid_code = "
CAMLprim value lwt_test()
{
- uid_t euid;
- gid_t egid;
- getpeereid(0, &euid, &egid);
- return Val_unit;
+ uid_t euid;
+ gid_t egid;
+ getpeereid(0, &euid, &egid);
+ return Val_unit;
}
"
@@ -461,10 +464,32 @@ Lwt can use pthread or the win32 API.
test_feature ~do_check "fd passing" "HAVE_FD_PASSING" (fun () -> test_code ([], []) fd_passing_code);
test_feature ~do_check "sched_getcpu" "HAVE_GETCPU" (fun () -> test_code ([], []) getcpu_code);
test_feature ~do_check "affinity getting/setting" "HAVE_AFFINITY" (fun () -> test_code ([], []) affinity_code);
- test_feature ~do_check "credentials getting (getsockopt)" "HAVE_GET_CREDENTIALS" (fun () -> test_code ([], []) get_credentials_code);
+ test_feature ~do_check "credentials getting (Linux)" "HAVE_GET_CREDENTIALS_LINUX" (fun () -> test_code ([], []) (get_credentials_code "ucred"));
+ test_feature ~do_check "credentials getting (NetBSD)" "HAVE_GET_CREDENTIALS_NETBSD" (fun () -> test_code ([], []) (get_credentials_code "sockcred"));
+ test_feature ~do_check "credentials getting (OpenBSD)" "HAVE_GET_CREDENTIALS_OPENBSD" (fun () -> test_code ([], []) (get_credentials_code "sockpeercred"));
+ test_feature ~do_check "credentials getting (FreeBSD)" "HAVE_GET_CREDENTIALS_FREEBSD" (fun () -> test_code ([], []) (get_credentials_code "cmsgcred"));
test_feature ~do_check "credentials getting (getpeereid)" "HAVE_GETPEEREID" (fun () -> test_code ([], []) get_peereid_code);
test_feature ~do_check "fdatasync" "HAVE_FDATASYNC" (fun () -> test_code ([], []) fdatasync_code);
test_feature ~do_check "netdb_reentrant" "HAVE_NETDB_REENTRANT" (fun () -> test_code ([], []) netdb_reentrant_code);
+
+ let get_cred_vars = [
+ "HAVE_GET_CREDENTIALS_LINUX";
+ "HAVE_GET_CREDENTIALS_NETBSD";
+ "HAVE_GET_CREDENTIALS_OPENBSD";
+ "HAVE_GET_CREDENTIALS_FREEBSD";
+ "HAVE_GETPEEREID";
+ ] in
+
+ Printf.fprintf config "\
+#if %s
+# define HAVE_GET_CREDENTIALS
+#endif
+"
+ (String.concat " || " (List.map (Printf.sprintf "defined(%s)") get_cred_vars));
+
+ Printf.fprintf config_ml
+ "#let HAVE_GET_CREDENTIALS = %s\n"
+ (String.concat " || " get_cred_vars);
if !os_type = "Win32" then begin
output_string config "#define LWT_ON_WINDOWS\n";

View File

@ -0,0 +1,30 @@
$OpenBSD: patch-setup_ml,v 1.1.1.1 2012/08/19 00:27:50 avsm Exp $
--- setup.ml.orig Thu Jul 19 13:36:00 2012
+++ setup.ml Fri Aug 17 15:44:30 2012
@@ -5748,7 +5748,7 @@ let setup_t =
CustomPlugin.cmd_main =
[
(OASISExpr.EBool true,
- ("make", ["-C"; "manual"; "manual.pdf"]))
+ ("gmake", ["-C"; "manual"; "manual.pdf"]))
];
cmd_clean = [(OASISExpr.EBool true, None)];
cmd_distclean = [(OASISExpr.EBool true, None)];
@@ -5801,7 +5801,7 @@ let setup_t =
CustomPlugin.cmd_main =
[
(OASISExpr.EBool true,
- ("make", ["-C"; "manual"; "manual.pdf"]))
+ ("gmake", ["-C"; "manual"; "manual.pdf"]))
];
cmd_clean = [(OASISExpr.EBool true, None)];
cmd_distclean = [(OASISExpr.EBool true, None)];
@@ -5852,7 +5852,7 @@ let setup_t =
CustomPlugin.cmd_main =
[
(OASISExpr.EBool true,
- ("make", ["-C"; "manual"; "manual.pdf"]))
+ ("gmake", ["-C"; "manual"; "manual.pdf"]))
];
cmd_clean = [(OASISExpr.EBool true, None)];
cmd_distclean = [(OASISExpr.EBool true, None)];

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-src_unix_lwt_unix_ml,v 1.1.1.1 2012/08/19 00:27:50 avsm Exp $
--- src/unix/lwt_unix.ml.orig Thu Jul 19 13:35:56 2012
+++ src/unix/lwt_unix.ml Sat Aug 18 07:23:25 2012
@@ -1748,7 +1748,7 @@ type credentials = {
cred_gid : int;
}
-#if HAVE_GET_CREDENTIALS || HAVE_GETPEEREID
+#if HAVE_GET_CREDENTIALS
external stub_get_credentials : Unix.file_descr -> credentials = "lwt_unix_get_credentials"

View File

@ -0,0 +1,77 @@
$OpenBSD: patch-src_unix_lwt_unix_unix_c,v 1.1.1.1 2012/08/19 00:27:50 avsm Exp $
--- src/unix/lwt_unix_unix.c.orig Thu Jul 19 13:35:56 2012
+++ src/unix/lwt_unix_unix.c Sat Aug 18 09:30:51 2012
@@ -26,12 +26,17 @@
#define ARGS(args...) args
+#include <sys/uio.h>
+#include <sys/un.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <sys/wait.h>
+#include <poll.h>
+
/* +-----------------------------------------------------------------+
| Test for readability/writability |
+-----------------------------------------------------------------+ */
-#include <poll.h>
-
CAMLprim value lwt_unix_readable(value fd)
{
struct pollfd pollfd;
@@ -411,24 +416,36 @@ CAMLprim value lwt_unix_bytes_send_msg(value val_fd, v
| Credentials |
+-----------------------------------------------------------------+ */
-#if defined(HAVE_GET_CREDENTIALS)
+#if defined(HAVE_GET_CREDENTIALS_LINUX)
+# define CREDENTIALS_TYPE struct ucred
+# define CREDENTIALS_FIELD(id) id
+#elif defined(HAVE_GET_CREDENTIALS_NETBSD)
+# define CREDENTIALS_TYPE struct sockcred
+# define CREDENTIALS_FIELD(id) sc_ ## id
+#elif defined(HAVE_GET_CREDENTIALS_OPENBSD)
+# define CREDENTIALS_TYPE struct sockpeercred
+# define CREDENTIALS_FIELD(id) id
+#elif defined(HAVE_GET_CREDENTIALS_FREEBSD)
+# define CREDENTIALS_TYPE struct cmsgcred
+# define CREDENTIALS_FIELD(id) cmsgcred_ ## id
+#endif
-#include <sys/un.h>
+#if defined(CREDENTIALS_TYPE)
CAMLprim value lwt_unix_get_credentials(value fd)
{
CAMLparam1(fd);
CAMLlocal1(res);
- struct ucred cred;
+ CREDENTIALS_TYPE cred;
socklen_t cred_len = sizeof(cred);
if (getsockopt(Int_val(fd), SOL_SOCKET, SO_PEERCRED, &cred, &cred_len) == -1)
uerror("get_credentials", Nothing);
res = caml_alloc_tuple(3);
- Store_field(res, 0, Val_int(cred.pid));
- Store_field(res, 1, Val_int(cred.uid));
- Store_field(res, 2, Val_int(cred.gid));
+ Store_field(res, 0, Val_int(cred.CREDENTIALS_FIELD(pid)));
+ Store_field(res, 1, Val_int(cred.CREDENTIALS_FIELD(uid)));
+ Store_field(res, 2, Val_int(cred.CREDENTIALS_FIELD(gid)));
CAMLreturn(res);
}
@@ -458,10 +475,6 @@ CAMLprim value lwt_unix_get_credentials(value fd)
+-----------------------------------------------------------------+ */
/* Some code duplicated from OCaml's otherlibs/unix/wait.c */
-
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <sys/wait.h>
CAMLextern int caml_convert_signal_number (int);
CAMLextern int caml_rev_convert_signal_number (int);

View File

@ -0,0 +1,6 @@
Lwt provides very light-weight cooperative threads for OCaml;
``launching'' a thread is a very fast operation, it does not require
a new stack, a new process, or anything else. Moreover context
switches are very fast. In fact, it is so easy that a thread can
be launched for every system call. And composing cooperative threads
will allow highly asynchronous programs.

View File

@ -0,0 +1,12 @@
@comment $OpenBSD: PFRAG.dynlink-native,v 1.1.1.1 2012/08/19 00:27:50 avsm Exp $
@bin lib/ocaml/lwt/lwt-extra.cmxs
@bin lib/ocaml/lwt/lwt-glib.cmxs
@bin lib/ocaml/lwt/lwt-preemptive.cmxs
@bin lib/ocaml/lwt/lwt-react.cmxs
@bin lib/ocaml/lwt/lwt-simple-top.cmxs
@bin lib/ocaml/lwt/lwt-ssl.cmxs
@bin lib/ocaml/lwt/lwt-syntax-log.cmxs
@bin lib/ocaml/lwt/lwt-syntax-options.cmxs
@bin lib/ocaml/lwt/lwt-syntax.cmxs
@bin lib/ocaml/lwt/lwt-unix.cmxs
@bin lib/ocaml/lwt/lwt.cmxs

View File

@ -0,0 +1,61 @@
@comment $OpenBSD: PFRAG.native,v 1.1.1.1 2012/08/19 00:27:50 avsm Exp $
%%dynlink%%
lib/ocaml/lwt/lwt-extra.a
lib/ocaml/lwt/lwt-extra.cmxa
lib/ocaml/lwt/lwt-glib.a
lib/ocaml/lwt/lwt-glib.cmxa
lib/ocaml/lwt/lwt-preemptive.a
lib/ocaml/lwt/lwt-preemptive.cmxa
lib/ocaml/lwt/lwt-react.a
lib/ocaml/lwt/lwt-react.cmxa
lib/ocaml/lwt/lwt-simple-top.a
lib/ocaml/lwt/lwt-simple-top.cmxa
lib/ocaml/lwt/lwt-ssl.a
lib/ocaml/lwt/lwt-ssl.cmxa
lib/ocaml/lwt/lwt-syntax-log.a
lib/ocaml/lwt/lwt-syntax-log.cmxa
lib/ocaml/lwt/lwt-syntax-options.a
lib/ocaml/lwt/lwt-syntax-options.cmxa
lib/ocaml/lwt/lwt-syntax.a
lib/ocaml/lwt/lwt-syntax.cmxa
lib/ocaml/lwt/lwt-unix.a
lib/ocaml/lwt/lwt-unix.cmxa
lib/ocaml/lwt/lwt.a
lib/ocaml/lwt/lwt.cmx
lib/ocaml/lwt/lwt.cmxa
lib/ocaml/lwt/lwt_bytes.cmx
lib/ocaml/lwt/lwt_chan.cmx
lib/ocaml/lwt/lwt_condition.cmx
lib/ocaml/lwt/lwt_daemon.cmx
lib/ocaml/lwt/lwt_engine.cmx
lib/ocaml/lwt/lwt_event.cmx
lib/ocaml/lwt/lwt_gc.cmx
lib/ocaml/lwt/lwt_glib.cmx
lib/ocaml/lwt/lwt_io.cmx
lib/ocaml/lwt/lwt_lib.cmx
lib/ocaml/lwt/lwt_list.cmx
lib/ocaml/lwt/lwt_log.cmx
lib/ocaml/lwt/lwt_log_rules.cmx
lib/ocaml/lwt/lwt_main.cmx
lib/ocaml/lwt/lwt_mutex.cmx
lib/ocaml/lwt/lwt_mvar.cmx
lib/ocaml/lwt/lwt_pool.cmx
lib/ocaml/lwt/lwt_pqueue.cmx
lib/ocaml/lwt/lwt_preemptive.cmx
lib/ocaml/lwt/lwt_process.cmx
lib/ocaml/lwt/lwt_react.cmx
lib/ocaml/lwt/lwt_sequence.cmx
lib/ocaml/lwt/lwt_signal.cmx
lib/ocaml/lwt/lwt_simple_top.cmx
lib/ocaml/lwt/lwt_ssl.cmx
lib/ocaml/lwt/lwt_stream.cmx
lib/ocaml/lwt/lwt_switch.cmx
lib/ocaml/lwt/lwt_sys.cmx
lib/ocaml/lwt/lwt_throttle.cmx
lib/ocaml/lwt/lwt_timeout.cmx
lib/ocaml/lwt/lwt_unix.cmx
lib/ocaml/lwt/lwt_unix_jobs_generated.cmx
lib/ocaml/lwt/lwt_util.cmx
lib/ocaml/lwt/pa_lwt.cmx
lib/ocaml/lwt/pa_lwt_log.cmx
lib/ocaml/lwt/pa_lwt_options.cmx

View File

@ -0,0 +1,3 @@
@comment $OpenBSD: PFRAG.shared,v 1.1.1.1 2012/08/19 00:27:50 avsm Exp $
lib/ocaml/stublibs/dlllwt-glib_stubs.so
lib/ocaml/stublibs/dlllwt-unix_stubs.so

242
devel/ocaml-lwt/pkg/PLIST Normal file
View File

@ -0,0 +1,242 @@
@comment $OpenBSD: PLIST,v 1.1.1.1 2012/08/19 00:27:50 avsm Exp $
%%SHARED%%
%%native%%
lib/ocaml/lwt/
lib/ocaml/lwt/META
lib/ocaml/lwt/liblwt-glib_stubs.a
lib/ocaml/lwt/liblwt-unix_stubs.a
lib/ocaml/lwt/lwt-extra.cma
lib/ocaml/lwt/lwt-glib.cma
lib/ocaml/lwt/lwt-preemptive.cma
lib/ocaml/lwt/lwt-react.cma
lib/ocaml/lwt/lwt-simple-top.cma
lib/ocaml/lwt/lwt-ssl.cma
lib/ocaml/lwt/lwt-syntax-log.cma
lib/ocaml/lwt/lwt-syntax-options.cma
lib/ocaml/lwt/lwt-syntax.cma
lib/ocaml/lwt/lwt-unix.cma
lib/ocaml/lwt/lwt.cma
lib/ocaml/lwt/lwt.cmi
lib/ocaml/lwt/lwt.mli
lib/ocaml/lwt/lwt_bytes.cmi
lib/ocaml/lwt/lwt_bytes.mli
lib/ocaml/lwt/lwt_chan.cmi
lib/ocaml/lwt/lwt_chan.mli
lib/ocaml/lwt/lwt_condition.cmi
lib/ocaml/lwt/lwt_condition.mli
lib/ocaml/lwt/lwt_config.h
lib/ocaml/lwt/lwt_config.ml
lib/ocaml/lwt/lwt_daemon.cmi
lib/ocaml/lwt/lwt_daemon.mli
lib/ocaml/lwt/lwt_engine.cmi
lib/ocaml/lwt/lwt_engine.mli
lib/ocaml/lwt/lwt_event.cmi
lib/ocaml/lwt/lwt_event.mli
lib/ocaml/lwt/lwt_gc.cmi
lib/ocaml/lwt/lwt_gc.mli
lib/ocaml/lwt/lwt_glib.cmi
lib/ocaml/lwt/lwt_glib.mli
lib/ocaml/lwt/lwt_io.cmi
lib/ocaml/lwt/lwt_io.mli
lib/ocaml/lwt/lwt_lib.cmi
lib/ocaml/lwt/lwt_lib.mli
lib/ocaml/lwt/lwt_list.cmi
lib/ocaml/lwt/lwt_list.mli
lib/ocaml/lwt/lwt_log.cmi
lib/ocaml/lwt/lwt_log.mli
lib/ocaml/lwt/lwt_main.cmi
lib/ocaml/lwt/lwt_main.mli
lib/ocaml/lwt/lwt_mutex.cmi
lib/ocaml/lwt/lwt_mutex.mli
lib/ocaml/lwt/lwt_mvar.cmi
lib/ocaml/lwt/lwt_mvar.mli
lib/ocaml/lwt/lwt_pool.cmi
lib/ocaml/lwt/lwt_pool.mli
lib/ocaml/lwt/lwt_pqueue.cmi
lib/ocaml/lwt/lwt_pqueue.mli
lib/ocaml/lwt/lwt_preemptive.cmi
lib/ocaml/lwt/lwt_preemptive.mli
lib/ocaml/lwt/lwt_process.cmi
lib/ocaml/lwt/lwt_process.mli
lib/ocaml/lwt/lwt_react.cmi
lib/ocaml/lwt/lwt_react.mli
lib/ocaml/lwt/lwt_sequence.cmi
lib/ocaml/lwt/lwt_sequence.mli
lib/ocaml/lwt/lwt_signal.cmi
lib/ocaml/lwt/lwt_signal.mli
lib/ocaml/lwt/lwt_ssl.cmi
lib/ocaml/lwt/lwt_ssl.mli
lib/ocaml/lwt/lwt_stream.cmi
lib/ocaml/lwt/lwt_stream.mli
lib/ocaml/lwt/lwt_switch.cmi
lib/ocaml/lwt/lwt_switch.mli
lib/ocaml/lwt/lwt_sys.cmi
lib/ocaml/lwt/lwt_sys.mli
lib/ocaml/lwt/lwt_throttle.cmi
lib/ocaml/lwt/lwt_throttle.mli
lib/ocaml/lwt/lwt_timeout.cmi
lib/ocaml/lwt/lwt_timeout.mli
lib/ocaml/lwt/lwt_unix.cmi
lib/ocaml/lwt/lwt_unix.h
lib/ocaml/lwt/lwt_unix.mli
lib/ocaml/lwt/lwt_util.cmi
lib/ocaml/lwt/lwt_util.mli
lib/ocaml/lwt/pa_lwt.cmi
lib/ocaml/lwt/pa_lwt.mli
lib/ocaml/lwt/pa_lwt_log.cmi
lib/ocaml/lwt/pa_lwt_log.mli
@comment lib/ocaml/stublibs/dlllwt-glib_stubs.so.owner
@comment lib/ocaml/stublibs/dlllwt-unix_stubs.so.owner
share/doc/ocaml-lwt/
share/doc/ocaml-lwt/CHANGES
share/doc/ocaml-lwt/COPYING
share/doc/ocaml-lwt/README
share/doc/ocaml-lwt/api/
share/doc/ocaml-lwt/api/Lwt.html
share/doc/ocaml-lwt/api/Lwt_bytes.html
share/doc/ocaml-lwt/api/Lwt_chan.html
share/doc/ocaml-lwt/api/Lwt_condition.html
share/doc/ocaml-lwt/api/Lwt_daemon.html
share/doc/ocaml-lwt/api/Lwt_engine.abstract-c.html
share/doc/ocaml-lwt/api/Lwt_engine.html
share/doc/ocaml-lwt/api/Lwt_engine.libev-c.html
share/doc/ocaml-lwt/api/Lwt_engine.poll_based-c.html
share/doc/ocaml-lwt/api/Lwt_engine.select-c.html
share/doc/ocaml-lwt/api/Lwt_engine.select_based-c.html
share/doc/ocaml-lwt/api/Lwt_engine.t-c.html
share/doc/ocaml-lwt/api/Lwt_event.html
share/doc/ocaml-lwt/api/Lwt_gc.html
share/doc/ocaml-lwt/api/Lwt_glib.html
share/doc/ocaml-lwt/api/Lwt_io.BE.html
share/doc/ocaml-lwt/api/Lwt_io.LE.html
share/doc/ocaml-lwt/api/Lwt_io.NumberIO.html
share/doc/ocaml-lwt/api/Lwt_io.html
share/doc/ocaml-lwt/api/Lwt_lib.html
share/doc/ocaml-lwt/api/Lwt_list.html
share/doc/ocaml-lwt/api/Lwt_log.Section.html
share/doc/ocaml-lwt/api/Lwt_log.html
share/doc/ocaml-lwt/api/Lwt_main.html
share/doc/ocaml-lwt/api/Lwt_mutex.html
share/doc/ocaml-lwt/api/Lwt_mvar.html
share/doc/ocaml-lwt/api/Lwt_pool.html
share/doc/ocaml-lwt/api/Lwt_pqueue.Make.html
share/doc/ocaml-lwt/api/Lwt_pqueue.OrderedType.html
share/doc/ocaml-lwt/api/Lwt_pqueue.S.html
share/doc/ocaml-lwt/api/Lwt_pqueue.html
share/doc/ocaml-lwt/api/Lwt_preemptive.html
share/doc/ocaml-lwt/api/Lwt_process.html
share/doc/ocaml-lwt/api/Lwt_process.process-c.html
share/doc/ocaml-lwt/api/Lwt_process.process_full-c.html
share/doc/ocaml-lwt/api/Lwt_process.process_in-c.html
share/doc/ocaml-lwt/api/Lwt_process.process_none-c.html
share/doc/ocaml-lwt/api/Lwt_process.process_out-c.html
share/doc/ocaml-lwt/api/Lwt_react.E.html
share/doc/ocaml-lwt/api/Lwt_react.S.html
share/doc/ocaml-lwt/api/Lwt_react.html
share/doc/ocaml-lwt/api/Lwt_read_line.Command.html
share/doc/ocaml-lwt/api/Lwt_read_line.Control.html
share/doc/ocaml-lwt/api/Lwt_read_line.Engine.html
share/doc/ocaml-lwt/api/Lwt_read_line.Terminal.html
share/doc/ocaml-lwt/api/Lwt_read_line.clipboard-c.html
share/doc/ocaml-lwt/api/Lwt_read_line.html
share/doc/ocaml-lwt/api/Lwt_sequence.html
share/doc/ocaml-lwt/api/Lwt_signal.html
share/doc/ocaml-lwt/api/Lwt_ssl.html
share/doc/ocaml-lwt/api/Lwt_stream.bounded_push-c.html
share/doc/ocaml-lwt/api/Lwt_stream.html
share/doc/ocaml-lwt/api/Lwt_switch.html
share/doc/ocaml-lwt/api/Lwt_sys.html
share/doc/ocaml-lwt/api/Lwt_term.Draw.html
share/doc/ocaml-lwt/api/Lwt_term.Zone.html
share/doc/ocaml-lwt/api/Lwt_term.html
share/doc/ocaml-lwt/api/Lwt_text.html
share/doc/ocaml-lwt/api/Lwt_throttle.Make.html
share/doc/ocaml-lwt/api/Lwt_throttle.S.html
share/doc/ocaml-lwt/api/Lwt_throttle.html
share/doc/ocaml-lwt/api/Lwt_timeout.html
share/doc/ocaml-lwt/api/Lwt_top.html
share/doc/ocaml-lwt/api/Lwt_unix.LargeFile.html
share/doc/ocaml-lwt/api/Lwt_unix.html
share/doc/ocaml-lwt/api/Lwt_util.html
share/doc/ocaml-lwt/api/Pa_lwt.html
share/doc/ocaml-lwt/api/Pa_lwt_log.html
share/doc/ocaml-lwt/api/index.html
share/doc/ocaml-lwt/api/index_attributes.html
share/doc/ocaml-lwt/api/index_class_types.html
share/doc/ocaml-lwt/api/index_classes.html
share/doc/ocaml-lwt/api/index_exceptions.html
share/doc/ocaml-lwt/api/index_methods.html
share/doc/ocaml-lwt/api/index_module_types.html
share/doc/ocaml-lwt/api/index_modules.html
share/doc/ocaml-lwt/api/index_types.html
share/doc/ocaml-lwt/api/index_values.html
share/doc/ocaml-lwt/api/style.css
share/doc/ocaml-lwt/api/type_Lwt.html
share/doc/ocaml-lwt/api/type_Lwt_bytes.html
share/doc/ocaml-lwt/api/type_Lwt_chan.html
share/doc/ocaml-lwt/api/type_Lwt_condition.html
share/doc/ocaml-lwt/api/type_Lwt_daemon.html
share/doc/ocaml-lwt/api/type_Lwt_engine.abstract.html
share/doc/ocaml-lwt/api/type_Lwt_engine.html
share/doc/ocaml-lwt/api/type_Lwt_engine.libev.html
share/doc/ocaml-lwt/api/type_Lwt_engine.poll_based.html
share/doc/ocaml-lwt/api/type_Lwt_engine.select.html
share/doc/ocaml-lwt/api/type_Lwt_engine.select_based.html
share/doc/ocaml-lwt/api/type_Lwt_engine.t.html
share/doc/ocaml-lwt/api/type_Lwt_event.html
share/doc/ocaml-lwt/api/type_Lwt_gc.html
share/doc/ocaml-lwt/api/type_Lwt_glib.html
share/doc/ocaml-lwt/api/type_Lwt_io.BE.html
share/doc/ocaml-lwt/api/type_Lwt_io.LE.html
share/doc/ocaml-lwt/api/type_Lwt_io.NumberIO.html
share/doc/ocaml-lwt/api/type_Lwt_io.html
share/doc/ocaml-lwt/api/type_Lwt_lib.html
share/doc/ocaml-lwt/api/type_Lwt_list.html
share/doc/ocaml-lwt/api/type_Lwt_log.Section.html
share/doc/ocaml-lwt/api/type_Lwt_log.html
share/doc/ocaml-lwt/api/type_Lwt_main.html
share/doc/ocaml-lwt/api/type_Lwt_mutex.html
share/doc/ocaml-lwt/api/type_Lwt_mvar.html
share/doc/ocaml-lwt/api/type_Lwt_pool.html
share/doc/ocaml-lwt/api/type_Lwt_pqueue.Make.html
share/doc/ocaml-lwt/api/type_Lwt_pqueue.OrderedType.html
share/doc/ocaml-lwt/api/type_Lwt_pqueue.S.html
share/doc/ocaml-lwt/api/type_Lwt_pqueue.html
share/doc/ocaml-lwt/api/type_Lwt_preemptive.html
share/doc/ocaml-lwt/api/type_Lwt_process.html
share/doc/ocaml-lwt/api/type_Lwt_process.process.html
share/doc/ocaml-lwt/api/type_Lwt_process.process_full.html
share/doc/ocaml-lwt/api/type_Lwt_process.process_in.html
share/doc/ocaml-lwt/api/type_Lwt_process.process_none.html
share/doc/ocaml-lwt/api/type_Lwt_process.process_out.html
share/doc/ocaml-lwt/api/type_Lwt_react.E.html
share/doc/ocaml-lwt/api/type_Lwt_react.S.html
share/doc/ocaml-lwt/api/type_Lwt_react.html
share/doc/ocaml-lwt/api/type_Lwt_read_line.Command.html
share/doc/ocaml-lwt/api/type_Lwt_read_line.Control.html
share/doc/ocaml-lwt/api/type_Lwt_read_line.Engine.html
share/doc/ocaml-lwt/api/type_Lwt_read_line.Terminal.html
share/doc/ocaml-lwt/api/type_Lwt_read_line.clipboard.html
share/doc/ocaml-lwt/api/type_Lwt_read_line.html
share/doc/ocaml-lwt/api/type_Lwt_sequence.html
share/doc/ocaml-lwt/api/type_Lwt_signal.html
share/doc/ocaml-lwt/api/type_Lwt_ssl.html
share/doc/ocaml-lwt/api/type_Lwt_stream.bounded_push.html
share/doc/ocaml-lwt/api/type_Lwt_stream.html
share/doc/ocaml-lwt/api/type_Lwt_switch.html
share/doc/ocaml-lwt/api/type_Lwt_sys.html
share/doc/ocaml-lwt/api/type_Lwt_term.Draw.html
share/doc/ocaml-lwt/api/type_Lwt_term.Zone.html
share/doc/ocaml-lwt/api/type_Lwt_term.html
share/doc/ocaml-lwt/api/type_Lwt_text.html
share/doc/ocaml-lwt/api/type_Lwt_throttle.Make.html
share/doc/ocaml-lwt/api/type_Lwt_throttle.S.html
share/doc/ocaml-lwt/api/type_Lwt_throttle.html
share/doc/ocaml-lwt/api/type_Lwt_timeout.html
share/doc/ocaml-lwt/api/type_Lwt_top.html
share/doc/ocaml-lwt/api/type_Lwt_unix.LargeFile.html
share/doc/ocaml-lwt/api/type_Lwt_unix.html
share/doc/ocaml-lwt/api/type_Lwt_util.html
share/doc/ocaml-lwt/api/type_Pa_lwt.html
share/doc/ocaml-lwt/api/type_Pa_lwt_log.html
share/doc/ocaml-lwt/manual.pdf