summaryrefslogtreecommitdiff
path: root/dev-ml/labltk
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
committerV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
commit4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch)
treeba5f07bf3f9d22d82e54a462313f5d244036c768 /dev-ml/labltk
reinit the tree, so we can have metadata
Diffstat (limited to 'dev-ml/labltk')
-rw-r--r--dev-ml/labltk/Manifest9
-rw-r--r--dev-ml/labltk/files/findlib.patch20
-rw-r--r--dev-ml/labltk/files/ocaml405.patch382
-rw-r--r--dev-ml/labltk/labltk-8.06.2.ebuild44
-rw-r--r--dev-ml/labltk/labltk-8.06.3.ebuild43
-rw-r--r--dev-ml/labltk/metadata.xml8
6 files changed, 506 insertions, 0 deletions
diff --git a/dev-ml/labltk/Manifest b/dev-ml/labltk/Manifest
new file mode 100644
index 000000000000..fcb8e2286022
--- /dev/null
+++ b/dev-ml/labltk/Manifest
@@ -0,0 +1,9 @@
+AUX findlib.patch 645 SHA256 68e6dbe7c2d67e4590949cd1321de9fdd4952c051a9b162f162649c42c0a95b9 SHA512 4f5172bc7d603375bda331d40708ad14e7e9e7374f97cbd11da56473ca704421f7c801559dbcc753fe8004a809b80142158974a1c5c469eb2894580121cc9442 WHIRLPOOL 3fe3567cdb7c51171d60ba2005a547baddf38dbdb32a9d72323e7c94efcdace89ceabd8363ad755d7d6bd9379613a7928e0942b4d70f1517f8518f50dad74079
+AUX ocaml405.patch 13731 SHA256 ddadf02211c0b4055b8375d975fd73603723100ebfff1fe7eb16e38eec68afd1 SHA512 a246af35b932e773e0c58b745d3885f98162892945f359dc4781489d76715c0564efa2ea985a43808e431fb8fd4225d4ad7b6a753abd54a8f12dc65ae43cfa9d WHIRLPOOL 14d35e7814497bd97055eccc44a36c4a35e90106ad181f78a0bf35cc24c9f89cbb25bdf9e18edc24785b91bd69fa4a26cc31f1362ddbc168cc00909c4d09bb5b
+DIST labltk-8.06.2.tar.gz 369508 SHA256 b32ea0465ec2fff89ebf5219845656f8334f61857e01ea3d59b3ab31749227dd SHA512 d9342d49ba8769edd7a4ed051844f6ae5d3e62a7c2c76e895bfd1162d0433c4ea54f2314b29b708551fba63daec1123553b56f0abb6412807ab00d7bb40b73d6 WHIRLPOOL 4300efb9bc6499901f7b984bb10230fdea0084d6346f5f8acc832eb054f44e52c00425994196721a966caabc917a93210a20b8bea25eefde08b4288f58a04b21
+DIST labltk-8.06.3.tar.gz 369924 SHA256 b6b7076f6a2a7b2f63095013cb4e37a1f2a6eb3d4abb57dbb1b8cff1ae4c6ae6 SHA512 c2002d519c1fcfdd2b13ae6d5836880273dac2660f07f6ee0e7bb932e3fec6f5cc959202efdf712758a17d24dbe50c3f6697c7b125e3123fa8153130d7ece979 WHIRLPOOL 5fb97fba547a99655a2ecce3014f4ef9ef9e57ae5f9db531bb166c066210738aba48c5c79e6900e6559bd40ef11c123dbd8fc9ccdbf056ce813e7b79124c492a
+EBUILD labltk-8.06.2.ebuild 1118 SHA256 81b72d98577fdee8ad909c32e84f233e8388fbdf97466131d3ba95d06f46c601 SHA512 387bcab89c39ed0ed80dac5e878bbf4f1dc4e62dd6b8384db9b3a68a57ab5f360e095ff05e41b5785b44c773dde25ef8f6941b64d0935473410067a9c4e48baa WHIRLPOOL 7796c51616c3734b1379fb50e91f8f92f2c942db71f123ad9bcd0105b68ccd25efa623f8b84ef089d9ef80bc4258fd9ce5557070101bc942af7b7fd80b4f5720
+EBUILD labltk-8.06.3.ebuild 1044 SHA256 28e767fb17268805c28f2225bb5f77377a35731cdff9239dbe89ffe8302b5d36 SHA512 eb8948252b7aa811219bc2980a436d8d7b1cb5121d3025a908f32cf6cab3105982560509397fd65d09e93fb93c036644f4e5906f1c17292fd7bdaa01d95e3d56 WHIRLPOOL 7baafcd3aaf98ba51dc915fcc31dfa174403be690560331e6b879fd211ce61bd2c4e4f5652e1bcc294c287f8420cc95c8a3065a2bb26fc4553abcb3c073ee0b6
+MISC ChangeLog 4034 SHA256 283ba1020b31a02d424c98c65af45f86d925333333f1d61d7cac03e465121a5f SHA512 1c1b834bce2ffc4561ec27a3bb608f6e962e6e3b27205a86e74e1c8a29d084c87a7229e83cd5d960f81bf58c400c3aada51984238cfe2b5173332d9777a30d72 WHIRLPOOL 0e94b9ff77c3fed25fd3ce8802b42016bdf07c12257dde39c72c91667fbd8bad5608eea17099b23e7618e52cb5b8ece1350c2923535319d1830b4a9ceaae5224
+MISC ChangeLog-2015 890 SHA256 ea96173f7287c7cc4cc11b725bb313ad2ede7223303d08427e0c2d7eb4d00cba SHA512 4690e4a8a73c5ac11ab68626029ec7a738f640fc256514e140a394c4da7288822ca666dfa2874b12891306e13396118dc4183c494545e6bca64cad945d609cef WHIRLPOOL 48cc1be3886754b3a27e687fa3e12d4f3b96874b536ca56aa2bc11f24fad9c7a7a5a7cba03570a5a118f7ad3b80865e2ca00ba1a84260057c5a6140682616c8a
+MISC metadata.xml 243 SHA256 5e9b58b0b795266f973d066675839499e3a56d7d932d702404a4b91ded8eb26c SHA512 1c5b4b2163017e496999d1f87e5c9c5ac6c11b2e9187450ccfb3df258f34e54d278972f04ee0e8429476c6f87e091a869ac2a28c6e8c8e6d20678c3e74061449 WHIRLPOOL 085df2e84901cbe563c7c1d30d04c229547f15f8ee26ac61d44d07c3f6999f2bbfa4cf309963172fb507cce5450d27598b762c3ccab92351601965c3afc05e3a
diff --git a/dev-ml/labltk/files/findlib.patch b/dev-ml/labltk/files/findlib.patch
new file mode 100644
index 000000000000..9b9a63bdede8
--- /dev/null
+++ b/dev-ml/labltk/files/findlib.patch
@@ -0,0 +1,20 @@
+Index: labltk-8.06.0/lib/Makefile
+===================================================================
+--- labltk-8.06.0.orig/lib/Makefile
++++ labltk-8.06.0/lib/Makefile
+@@ -84,7 +84,7 @@ install-script: $(LIBNAME)
+ install-batch:
+ cp labltk.bat $(INSTALLBINDIR)
+
+-ifeq ($USE_FINDLIB,yes)
++ifeq ($(USE_FINDLIB),yes)
+ install:
+ ocamlfind install labltk -add $(LIBNAME).cma $(LIBNAME)top$(EXE)
+ chmod 755 $(INSTALLDIR)/$(LIBNAME)top$(EXE)
+@@ -114,4 +114,4 @@ installopt:
+ cd $(INSTALLDIR); $(RANLIB) $(LIBNAME).$(A)
+ chmod 644 $(INSTALLDIR)/$(LIBNAME).cmxa
+ chmod 644 $(INSTALLDIR)/$(LIBNAME).$(A)
+-endif
+\ No newline at end of file
++endif
diff --git a/dev-ml/labltk/files/ocaml405.patch b/dev-ml/labltk/files/ocaml405.patch
new file mode 100644
index 000000000000..8503646f71ec
--- /dev/null
+++ b/dev-ml/labltk/files/ocaml405.patch
@@ -0,0 +1,382 @@
+Index: labltk-8.06.2/support/cltkCaml.c
+===================================================================
+--- labltk-8.06.2.orig/support/cltkCaml.c
++++ labltk-8.06.2/support/cltkCaml.c
+@@ -39,7 +39,7 @@ int CamlCBCmd(ClientData clientdata, Tcl
+ int id;
+ if (Tcl_GetInt(interp, argv[1], &id) != TCL_OK)
+ return TCL_ERROR;
+- callback2(*handler_code,Val_int(id),
++ caml_callback2(*handler_code,Val_int(id),
+ copy_string_list(argc - 2,(char **)&argv[2]));
+ /* Never fails (OCaml would have raised an exception) */
+ /* but result may have been set by callback */
+@@ -65,7 +65,7 @@ CAMLprim value camltk_return (value v)
+ /* Note: raise_with_string WILL copy the error message */
+ CAMLprim void tk_error(const char *errmsg)
+ {
+- raise_with_string(*tkerror_exn, errmsg);
++ caml_raise_with_string(*tkerror_exn, errmsg);
+ }
+
+
+Index: labltk-8.06.2/support/cltkDMain.c
+===================================================================
+--- labltk-8.06.2.orig/support/cltkDMain.c
++++ labltk-8.06.2/support/cltkDMain.c
+@@ -56,7 +56,7 @@ void invoke_pending_caml_signals (client
+ /* Rearm timer */
+ Tk_CreateTimerHandler(SIGNAL_INTERVAL, invoke_pending_caml_signals, NULL);
+ signal_events = 1;
+- leave_blocking_section();
++ caml_leave_blocking_section();
+ }
+ /* The following is taken from byterun/startup.c */
+ header_t atom_table[256];
+@@ -222,10 +222,10 @@ int Caml_Init(interp)
+ strcat(f, RCNAME);
+ if (0 == access(f,R_OK))
+ if (TCL_OK != Tcl_EvalFile(cltclinterp,f)) {
+- stat_free(f);
++ caml_stat_free(f);
+ tk_error(Tcl_GetStringResult(cltclinterp));
+ };
+- stat_free(f);
++ caml_stat_free(f);
+ }
+ }
+
+Index: labltk-8.06.2/support/cltkEval.c
+===================================================================
+--- labltk-8.06.2.orig/support/cltkEval.c
++++ labltk-8.06.2/support/cltkEval.c
+@@ -45,7 +45,7 @@ value copy_string_list(int argc, char **
+ for (i = argc-1; i >= 0; i--) {
+ oldres = res;
+ str = tcl_string_to_caml(argv[i]);
+- res = alloc(2, 0);
++ res = caml_alloc(2, 0);
+ Field(res, 0) = str;
+ Field(res, 1) = oldres;
+ }
+@@ -71,7 +71,7 @@ CAMLprim value camltk_tcl_eval(value str
+ Tcl_ResetResult(cltclinterp);
+ cmd = caml_string_to_tcl(str);
+ code = Tcl_Eval(cltclinterp, cmd);
+- stat_free(cmd);
++ caml_stat_free(cmd);
+
+ switch (code) {
+ case TCL_OK:
+@@ -143,8 +143,8 @@ int fill_args (char **argv, int where, v
+ fill_args(tmpargv,0,Field(v,0));
+ tmpargv[size] = NULL;
+ merged = Tcl_Merge(size,(const char *const*)tmpargv);
+- for(i = 0; i<size; i++){ stat_free(tmpargv[i]); }
+- stat_free((char *)tmpargv);
++ for(i = 0; i<size; i++){ caml_stat_free(tmpargv[i]); }
++ caml_stat_free((char *)tmpargv);
+ /* must be freed by stat_free */
+ argv[where] = (char*)caml_stat_alloc(strlen(merged)+1);
+ strcpy(argv[where], merged);
+@@ -227,10 +227,10 @@ CAMLprim value camltk_tcl_direct_eval(va
+
+ /* Free the various things we allocated */
+ for(i=0; i< size; i ++){
+- stat_free((char *) allocated[i]);
++ caml_stat_free((char *) allocated[i]);
+ }
+- stat_free((char *)argv);
+- stat_free((char *)allocated);
++ caml_stat_free((char *)argv);
++ caml_stat_free((char *)allocated);
+
+ switch (result) {
+ case TCL_OK:
+Index: labltk-8.06.2/support/cltkEvent.c
+===================================================================
+--- labltk-8.06.2.orig/support/cltkEvent.c
++++ labltk-8.06.2/support/cltkEvent.c
+@@ -49,6 +49,6 @@ CAMLprim value camltk_dooneevent(value f
+
+ CheckInit();
+
+- ret = Tk_DoOneEvent(convert_flag_list(flags, event_flag_table));
++ ret = Tk_DoOneEvent(caml_convert_flag_list(flags, event_flag_table));
+ return Val_int(ret);
+ }
+Index: labltk-8.06.2/support/cltkFile.c
+===================================================================
+--- labltk-8.06.2.orig/support/cltkFile.c
++++ labltk-8.06.2/support/cltkFile.c
+@@ -33,7 +33,7 @@
+
+ void FileProc(ClientData clientdata, int mask)
+ {
+- callback2(*handler_code,Val_int(clientdata),Val_int(0));
++ caml_callback2(*handler_code,Val_int(clientdata),Val_int(0));
+ }
+
+ /* Map Unix.file_descr values to Tcl file handles */
+Index: labltk-8.06.2/support/cltkImg.c
+===================================================================
+--- labltk-8.06.2.orig/support/cltkImg.c
++++ labltk-8.06.2/support/cltkImg.c
+@@ -47,7 +47,7 @@ CAMLprim value camltk_getimgdata (value
+
+ code = Tk_PhotoGetImage(ph,&pib); /* never fails ? */
+ size = pib.width * pib.height * pib.pixelSize;
+- res = alloc_string(size);
++ res = caml_alloc_string(size);
+
+ /* no holes, default format ? */
+ if ((pib.pixelSize == 3) &&
+Index: labltk-8.06.2/support/cltkMain.c
+===================================================================
+--- labltk-8.06.2.orig/support/cltkMain.c
++++ labltk-8.06.2/support/cltkMain.c
+@@ -51,11 +51,11 @@ int signal_events = 0; /* do we have a p
+ void invoke_pending_caml_signals (ClientData clientdata)
+ {
+ signal_events = 0;
+- enter_blocking_section(); /* triggers signal handling */
++ caml_enter_blocking_section(); /* triggers signal handling */
+ /* Rearm timer */
+ Tk_CreateTimerHandler(SIGNAL_INTERVAL, invoke_pending_caml_signals, NULL);
+ signal_events = 1;
+- leave_blocking_section();
++ caml_leave_blocking_section();
+ }
+
+ /* Now the real Tk stuff */
+@@ -77,7 +77,7 @@ CAMLprim value camltk_opentk(value argv)
+ tmp = Val_unit;
+
+ if ( argv == Val_int(0) ){
+- failwith("camltk_opentk: argv is empty");
++ caml_failwith("camltk_opentk: argv is empty");
+ }
+ argv0 = String_val( Field( argv, 0 ) );
+
+@@ -91,7 +91,7 @@ CAMLprim value camltk_opentk(value argv)
+ /* Register cltclinterp for use in other related extensions */
+ value *interp = caml_named_value("cltclinterp");
+ if (interp != NULL)
+- Store_field(*interp,0,copy_nativeint((intnat)cltclinterp));
++ Store_field(*interp,0,caml_copy_nativeint((intnat)cltclinterp));
+ }
+
+ if (Tcl_Init(cltclinterp) != TCL_OK)
+@@ -128,7 +128,7 @@ CAMLprim value camltk_opentk(value argv)
+ args = Tcl_Merge(argc, (const char *const*)tkargv); /* args must be freed by Tcl_Free */
+ Tcl_SetVar(cltclinterp, "argv", args, TCL_GLOBAL_ONLY);
+ Tcl_Free(args);
+- stat_free( tkargv );
++ caml_stat_free( tkargv );
+ }
+ }
+ if (Tk_Init(cltclinterp) != TCL_OK)
+@@ -164,10 +164,10 @@ CAMLprim value camltk_opentk(value argv)
+ strcat(f, RCNAME);
+ if (0 == access(f,R_OK))
+ if (TCL_OK != Tcl_EvalFile(cltclinterp,f)) {
+- stat_free(f);
++ caml_stat_free(f);
+ tk_error(Tcl_GetStringResult(cltclinterp));
+ };
+- stat_free(f);
++ caml_stat_free(f);
+ }
+ }
+
+Index: labltk-8.06.2/support/cltkMisc.c
+===================================================================
+--- labltk-8.06.2.orig/support/cltkMisc.c
++++ labltk-8.06.2/support/cltkMisc.c
+@@ -41,12 +41,12 @@ CAMLprim value camltk_splitlist (value v
+ { value res = copy_string_list(argc,argv);
+ Tcl_Free((char *)argv); /* only one large block was allocated */
+ /* argv points into utf: utf must be freed after argv are freed */
+- stat_free( utf );
++ caml_stat_free( utf );
+ return res;
+ }
+ case TCL_ERROR:
+ default:
+- stat_free( utf );
++ caml_stat_free( utf );
+ tk_error(Tcl_GetStringResult(cltclinterp));
+ }
+ }
+@@ -54,7 +54,7 @@ CAMLprim value camltk_splitlist (value v
+ /* Copy an OCaml string to the C heap. Should deallocate with stat_free */
+ char *string_to_c(value s)
+ {
+- int l = string_length(s);
++ int l = caml_string_length(s);
+ char *res = caml_stat_alloc(l + 1);
+ memmove (res, String_val (s), l);
+ res[l] = '\0';
+Index: labltk-8.06.2/support/cltkTimer.c
+===================================================================
+--- labltk-8.06.2.orig/support/cltkTimer.c
++++ labltk-8.06.2/support/cltkTimer.c
+@@ -26,7 +26,7 @@
+ /* Basically the same thing as FileProc */
+ void TimerProc (ClientData clientdata)
+ {
+- callback2(*handler_code,Val_long(clientdata),Val_int(0));
++ caml_callback2(*handler_code,Val_long(clientdata),Val_int(0));
+ }
+
+ CAMLprim value camltk_add_timer(value milli, value cbid)
+Index: labltk-8.06.2/support/cltkUtf.c
+===================================================================
+--- labltk-8.06.2.orig/support/cltkUtf.c
++++ labltk-8.06.2/support/cltkUtf.c
+@@ -76,14 +76,14 @@ value tcl_string_to_caml( const char *s
+ char *str;
+
+ str = utf_to_external( s );
+- res = copy_string(str);
+- stat_free(str);
++ res = caml_copy_string(str);
++ caml_stat_free(str);
+ CAMLreturn(res);
+ }
+
+ #else
+
+ char *caml_string_to_tcl(value s){ return string_to_c(s); }
+-value tcl_string_to_caml(char *s){ return copy_string(s); }
++value tcl_string_to_caml(char *s){ return caml_copy_string(s); }
+
+ #endif
+Index: labltk-8.06.2/support/cltkVar.c
+===================================================================
+--- labltk-8.06.2.orig/support/cltkVar.c
++++ labltk-8.06.2/support/cltkVar.c
+@@ -35,7 +35,7 @@ CAMLprim value camltk_getvar(value var)
+ stable_var = string_to_c(var);
+ s = (char *)Tcl_GetVar(cltclinterp,stable_var,
+ TCL_GLOBAL_ONLY|TCL_LEAVE_ERR_MSG);
+- stat_free(stable_var);
++ caml_stat_free(stable_var);
+
+ if (s == NULL)
+ tk_error(Tcl_GetStringResult(cltclinterp));
+@@ -57,11 +57,11 @@ CAMLprim value camltk_setvar(value var,
+ utf_contents = caml_string_to_tcl(contents);
+ s = (char *)Tcl_SetVar(cltclinterp,stable_var, utf_contents,
+ TCL_GLOBAL_ONLY|TCL_LEAVE_ERR_MSG);
+- stat_free(stable_var);
++ caml_stat_free(stable_var);
+ if( s == utf_contents ){
+ tk_error("camltk_setvar: Tcl_SetVar returned strange result. Call the author of mlTk!");
+ }
+- stat_free(utf_contents);
++ caml_stat_free(utf_contents);
+
+ if (s == NULL)
+ tk_error(Tcl_GetStringResult(cltclinterp));
+@@ -84,7 +84,7 @@ static char * tracevar(clientdata, inter
+ Tcl_UntraceVar2(interp, name1, name2,
+ TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
+ tracevar, clientdata);
+- callback2(*handler_code,Val_int(clientdata),Val_unit);
++ caml_callback2(*handler_code,Val_int(clientdata),Val_unit);
+ return (char *)NULL;
+ }
+
+@@ -103,10 +103,10 @@ CAMLprim value camltk_trace_var(value va
+ tracevar,
+ (ClientData) (Long_val(cbid)))
+ != TCL_OK) {
+- stat_free(cvar);
++ caml_stat_free(cvar);
+ tk_error(Tcl_GetStringResult(cltclinterp));
+ };
+- stat_free(cvar);
++ caml_stat_free(cvar);
+ return Val_unit;
+ }
+
+@@ -123,6 +123,6 @@ CAMLprim value camltk_untrace_var(value
+ TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
+ tracevar,
+ (ClientData) (Long_val(cbid)));
+- stat_free(cvar);
++ caml_stat_free(cvar);
+ return Val_unit;
+ }
+Index: labltk-8.06.2/support/cltkWait.c
+===================================================================
+--- labltk-8.06.2.orig/support/cltkWait.c
++++ labltk-8.06.2/support/cltkWait.c
+@@ -54,8 +54,8 @@ static void WaitVisibilityProc(clientDat
+ Tk_DeleteEventHandler(vis->win, VisibilityChangeMask,
+ WaitVisibilityProc, clientData);
+
+- stat_free((char *)vis);
+- callback2(*handler_code,cbid,Val_int(0));
++ caml_stat_free((char *)vis);
++ caml_callback2(*handler_code,cbid,Val_int(0));
+ }
+
+ /* Sets up a callback upon Visibility of a window */
+@@ -65,7 +65,7 @@ CAMLprim value camltk_wait_vis(value win
+ (struct WinCBData *)caml_stat_alloc(sizeof(struct WinCBData));
+ vis->win = Tk_NameToWindow(cltclinterp, String_val(win), cltk_mainWindow);
+ if (vis -> win == NULL) {
+- stat_free((char *)vis);
++ caml_stat_free((char *)vis);
+ tk_error(Tcl_GetStringResult(cltclinterp));
+ };
+ vis->cbid = Int_val(cbid);
+@@ -79,9 +79,9 @@ static void WaitWindowProc(ClientData cl
+ if (eventPtr->type == DestroyNotify) {
+ struct WinCBData *vis = clientData;
+ value cbid = Val_int(vis->cbid);
+- stat_free((char *)clientData);
++ caml_stat_free((char *)clientData);
+ /* The handler is destroyed by Tk itself */
+- callback2(*handler_code,cbid,Val_int(0));
++ caml_callback2(*handler_code,cbid,Val_int(0));
+ }
+ }
+
+@@ -92,7 +92,7 @@ CAMLprim value camltk_wait_des(value win
+ (struct WinCBData *)caml_stat_alloc(sizeof(struct WinCBData));
+ vis->win = Tk_NameToWindow(cltclinterp, String_val(win), cltk_mainWindow);
+ if (vis -> win == NULL) {
+- stat_free((char *)vis);
++ caml_stat_free((char *)vis);
+ tk_error(Tcl_GetStringResult(cltclinterp));
+ };
+ vis->cbid = Int_val(cbid);
+Index: labltk-8.06.2/browser/searchpos.ml
+===================================================================
+--- labltk-8.06.2.orig/browser/searchpos.ml
++++ labltk-8.06.2/browser/searchpos.ml
+@@ -782,7 +782,7 @@ and search_pos_expr ~pos exp =
+ search_pos_expr exp' ~pos
+ end;
+ search_pos_expr exp ~pos
+- | Texp_function (_, l, _) ->
++ | Texp_function { arg_label = _; param = _ ; cases = l; partial = _; } ->
+ List.iter l ~f:(search_case ~pos)
+ | Texp_apply (exp, l) ->
+ List.iter l ~f:(fun (_, x) -> Misc.may (search_pos_expr ~pos) x);
+Index: labltk-8.06.2/jpf/fileselect.ml
+===================================================================
+--- labltk-8.06.2.orig/jpf/fileselect.ml
++++ labltk-8.06.2/jpf/fileselect.ml
+@@ -55,7 +55,7 @@ let myentry_create p ~variable =
+ let subshell cmd =
+ let r,w = pipe () in
+ match fork () with
+- 0 -> close r; dup2 ~src:w ~dst:stdout;
++ 0 -> close r; dup2 ~cloexec:false ~src:w ~dst:stdout;
+ execv ~prog:"/bin/sh" ~args:[| "/bin/sh"; "-c"; cmd |]
+ | id ->
+ close w;
diff --git a/dev-ml/labltk/labltk-8.06.2.ebuild b/dev-ml/labltk/labltk-8.06.2.ebuild
new file mode 100644
index 000000000000..8181f906cb12
--- /dev/null
+++ b/dev-ml/labltk/labltk-8.06.2.ebuild
@@ -0,0 +1,44 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+inherit findlib eutils
+
+DESCRIPTION="OCaml interface to the Tcl/Tk GUI framework"
+HOMEPAGE="https://forge.ocamlcore.org/projects/labltk/"
+SRC_URI="https://forge.ocamlcore.org/frs/download.php/1628/${P}.tar.gz"
+
+LICENSE="QPL-1.0 LGPL-2"
+SLOT="0/${PV}"
+KEYWORDS="alpha amd64 arm ~arm64 hppa ia64 ~mips ppc ppc64 sparc x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux"
+IUSE="+ocamlopt X"
+
+RDEPEND=">=dev-lang/tk-8.0.3:=
+ >=dev-lang/ocaml-4.04:=[ocamlopt?,X?]"
+DEPEND="${RDEPEND}
+ >=dev-ml/findlib-1.5.5-r1"
+
+src_prepare() {
+ epatch "${FILESDIR}/findlib.patch"
+ has_version '>=dev-lang/ocaml-4.05.0_beta' && epatch "${FILESDIR}/ocaml405.patch"
+}
+
+src_configure() {
+ ./configure --use-findlib --verbose $(use X || echo "--tk-no-x11") || die "configure failed!"
+}
+
+src_compile() {
+ emake -j1
+ use ocamlopt && emake -j1 opt
+}
+
+src_install() {
+ findlib_src_preinst
+ dodir /usr/bin
+ emake \
+ INSTALLDIR="${D}$(ocamlc -where)/labltk" \
+ INSTALLBINDIR="${ED}/usr/bin/" \
+ install
+ dodoc Changes README.mlTk
+}
diff --git a/dev-ml/labltk/labltk-8.06.3.ebuild b/dev-ml/labltk/labltk-8.06.3.ebuild
new file mode 100644
index 000000000000..7bf520571181
--- /dev/null
+++ b/dev-ml/labltk/labltk-8.06.3.ebuild
@@ -0,0 +1,43 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+inherit findlib eutils
+
+DESCRIPTION="OCaml interface to the Tcl/Tk GUI framework"
+HOMEPAGE="https://forge.ocamlcore.org/projects/labltk/"
+SRC_URI="https://forge.ocamlcore.org/frs/download.php/1701/${P}.tar.gz"
+
+LICENSE="QPL-1.0 LGPL-2"
+SLOT="0/${PV}"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux"
+IUSE="+ocamlopt X"
+
+RDEPEND=">=dev-lang/tk-8.0.3:=
+ >=dev-lang/ocaml-4.04:=[ocamlopt?,X?]"
+DEPEND="${RDEPEND}
+ >=dev-ml/findlib-1.5.5-r1"
+
+src_prepare() {
+ epatch "${FILESDIR}/findlib.patch"
+}
+
+src_configure() {
+ ./configure --use-findlib --verbose $(use X || echo "--tk-no-x11") || die "configure failed!"
+}
+
+src_compile() {
+ emake -j1
+ use ocamlopt && emake -j1 opt
+}
+
+src_install() {
+ findlib_src_preinst
+ dodir /usr/bin
+ emake \
+ INSTALLDIR="${D}$(ocamlc -where)/labltk" \
+ INSTALLBINDIR="${ED}/usr/bin/" \
+ install
+ dodoc Changes README.mlTk
+}
diff --git a/dev-ml/labltk/metadata.xml b/dev-ml/labltk/metadata.xml
new file mode 100644
index 000000000000..ffac4d7ebc01
--- /dev/null
+++ b/dev-ml/labltk/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>ml@gentoo.org</email>
+ <name>Gentoo ML Project</name>
+</maintainer>
+</pkgmetadata>