From nobody Sat Mar 25 09:31:56 2023 X-Original-To: dev-commits-ports-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4PkDP85mW1z41wGM; Sat, 25 Mar 2023 09:31:56 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4PkDP852t2z3M8b; Sat, 25 Mar 2023 09:31:56 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1679736716; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rVPKGPMMlNGDyONBeAg4CzJM/TPVq+jbQudYEX1G0BY=; b=GWhapxFA1JueHX4au3E2MBsnUnv47krKKwOkfP0+eC6zSRsLWsex/XS0OMP9ILIm1e2nI4 gzsASjqLb9O8Vy8FkIMaRJL/+jzVCMzq57yDZI786IwdA2FuiQ3GtaJfBtywVt049o+cDi Sy7Ggq1mCzYy8bNCOAm6vdwXks/o8CsLjXoDrkCMg7M2AWfMcwZ7N6iJePPi2kjZLrQz+R sMM6MGd8vIw5feTvMbzcvo2GuwAnmweCHIWfSnOfAPgSX9wN9y6m2dmYH+VxkTgE03Ah+r iFS9KGy0zUY6oR/BHPG+zBXt7zaeHOzlYrb5yYSQg0j+1aNrk58drnpHAxNrOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1679736716; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rVPKGPMMlNGDyONBeAg4CzJM/TPVq+jbQudYEX1G0BY=; b=p4DY+/IN2HLSue/OWCsnXgZ6x2hdqCVyVE7lOnzzuX0H1eRmJuNGhzPIuoVSLcBlL2A/9I 8iuVM2H0JR0ER3T0rZ1JZJIG4pj3YXouMa127nyyD+v7Uaogwa39q0PNAoiwWE51eFkZPa w2AfwOaj4RbWcPQuM+MkhET1XRLBHo1dFr6LWjatEYFPtwbDD1EvcNh75TgMR/LemEn/Oc Y2xBhaghv8A0elNvSxGCqQtV7e3AlaM+YL5u/x869k8W//pnkcGUkWTFWHNWhmVELnF8il F6DtuKWRdw/E1fLBXX+rNLEgnJEN0y9bU1Ac63ARGrifRcsCAkfQWBLIzDJ3NQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1679736716; a=rsa-sha256; cv=none; b=rzcSpxhmmjKXUG515tAijOiQkcB3it3ED6KT9Rx/yTJ06rrdhuL2CNLvVA/MEc1U3EJgYq I9hBqi9BGJ/cOrG2neY67InT4X+m6kLHpxSIP4SCfFXPwuV+PihK09e1/m+DCxknK1eVu5 DMSs5xi9gPV1UtszuxIiJMQ6m1bE9o0EqtRAVo0JuiivKb+a5w/QzieumDni/FAV5oEEU6 wwMcrWG7PLCaLqPX/19Zrh5KGect6eJEbkF3vtuVTunVYtqfFy07IrNuCKaxK9yfWHwaoz EN2mElmQRzOZInpT8nDBFgJlZwOaKBhspf+SzlXU2WUHKsrGDlmOe2vNOS8U1g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4PkDP848PCzv5X; Sat, 25 Mar 2023 09:31:56 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 32P9VuNS036915; Sat, 25 Mar 2023 09:31:56 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 32P9VuDq036914; Sat, 25 Mar 2023 09:31:56 GMT (envelope-from git) Date: Sat, 25 Mar 2023 09:31:56 GMT Message-Id: <202303250931.32P9VuDq036914@gitrepo.freebsd.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org From: Guido Falsi Subject: git: 456b04dab70d - main - net/unison: Update to 2.53.2 List-Id: Commit messages for all branches of the ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-ports-all@freebsd.org X-BeenThere: dev-commits-ports-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: madpilot X-Git-Repository: ports X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 456b04dab70da764581356d5c10c6c18aa31bff9 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by madpilot: URL: https://cgit.FreeBSD.org/ports/commit/?id=456b04dab70da764581356d5c10c6c18aa31bff9 commit 456b04dab70da764581356d5c10c6c18aa31bff9 Author: Guido Falsi AuthorDate: 2023-03-25 09:31:13 +0000 Commit: Guido Falsi CommitDate: 2023-03-25 09:31:13 +0000 net/unison: Update to 2.53.2 - Use portfmt(1) Many thanks to Tõivo Leedjärv (upstream developer) for providing a patch the allows compiling unison using ocaml 4.07 present in the ports tree. Upstream development requires version 4.08 minimum at present. PR: 270342 --- net/unison/Makefile | 44 ++--- net/unison/distinfo | 6 +- net/unison/files/patch-Makefile.OCaml | 38 +--- net/unison/files/patch-ocaml_4.07-compat | 303 +++++++++++++++++++++++++++++++ 4 files changed, 335 insertions(+), 56 deletions(-) diff --git a/net/unison/Makefile b/net/unison/Makefile index 8c990a02af13..4156f99912e1 100644 --- a/net/unison/Makefile +++ b/net/unison/Makefile @@ -1,6 +1,5 @@ PORTNAME= unison -PORTVERSION= 2.53.0 -PORTREVISION= 2 +PORTVERSION= 2.53.2 DISTVERSIONPREFIX= v CATEGORIES= net @@ -17,21 +16,22 @@ FLAVOR?= ${FLAVORS:[1]} nox11_PKGNAMESUFFIX= -nox11 nox11_CONFLICTS_INSTALL= unison -x11_CONFLICTS_INSTALL= unison-nox11 -x11_BUILD_DEPENDS= ocaml-lablgtk3>0:x11-toolkits/ocaml-lablgtk3 \ - icotool:graphics/icoutils +x11_CONFLICTS_INSTALL= unison-nox11 +x11_BUILD_DEPENDS= icotool:graphics/icoutils \ + ocaml-lablgtk3>0:x11-toolkits/ocaml-lablgtk3 x11_LIB_DEPENDS= libfontconfig.so:x11-fonts/fontconfig \ libfreetype.so:print/freetype2 \ libharfbuzz.so:print/harfbuzz -PLIST_SUB= PORTVERSION=${PORTVERSION} USES= gmake localbase USE_OCAML= yes WRKSRC_SUBDIR= src -NO_OCAML_RUNDEPENDS=yes +NO_OCAML_RUNDEPENDS= yes CONFLICTS= unison-devel -MAKE_ENV= CLIBS="${LIBS:S/^-/-ccopt -/}" COFLAGS="${CFLAGS:C/ *(-[^ ]*) */ -ccopt \"\1 \"/gW}" +MAKE_ENV= CLIBS="${LIBS:S/^-/-ccopt -/}" \ + COFLAGS="${CFLAGS:C/ *(-[^ ]*) */ -ccopt \"\1 \"/gW}" ALL_TARGET= unison all +PLIST_SUB= PORTVERSION=${PORTVERSION} USE_GITHUB= yes GH_ACCOUNT= bcpierce00 @@ -41,22 +41,22 @@ DOCS= NEWS.md README.md OPTIONS_DEFINE= DOCS FSMONITOR OPTIONS_DEFAULT?= FSMONITOR -FSMONITOR_DESC= Compile and install fsmonitor plugin +FSMONITOR_DESC= Compile and install fsmonitor plugin -OPTIONS_SUB= YES +OPTIONS_SUB= YES FSMONITOR_LIB_DEPENDS= libinotify.so:devel/libinotify .if ${FLAVOR} == nox11 -MAKE_ARGS= UISTYLE=text -PKGMESSAGE= ${PKGDIR}/pkg-message.nox11 -PLIST_SUB+= X11="@comment " +MAKE_ARGS= UISTYLE=text +PKGMESSAGE= ${PKGDIR}/pkg-message.nox11 +PLIST_SUB+= X11="@comment " .else -MAKE_ARGS= UISTYLE=gtk3 -SUB_FILES= ${PORTNAME}.desktop -USE_GNOME+= atk cairo gdkpixbuf2 glib20 gtk30 pango -USES+= gettext-runtime gnome -PLIST_SUB+= X11="" +MAKE_ARGS= UISTYLE=gtk3 +SUB_FILES= ${PORTNAME}.desktop +USE_GNOME+= atk cairo gdkpixbuf2 glib20 gtk30 pango +USES+= gettext-runtime gnome +PLIST_SUB+= X11="" .endif post-patch-FSMONITOR-off: @@ -64,13 +64,9 @@ post-patch-FSMONITOR-off: ${WRKSRC}/Makefile.OCaml post-patch: -.if ${FLAVOR} == nox11 - @${REINPLACE_CMD} -e 's/CFLAGS/COFLAGS/g' \ - ${WRKSRC}/Makefile.OCaml ${WRKSRC}/fsmonitor/linux/Makefile -.else +.if ${FLAVOR} == x11 @${REINPLACE_CMD} -Ee 's@(\+|/)(lablgtk3)@\1site-lib/\2@' \ - -e 's/CFLAGS/COFLAGS/g' \ - ${WRKSRC}/Makefile.OCaml ${WRKSRC}/fsmonitor/linux/Makefile + ${WRKSRC}/Makefile.OCaml .endif post-build: diff --git a/net/unison/distinfo b/net/unison/distinfo index 91d48791f149..f05f0fe44a51 100644 --- a/net/unison/distinfo +++ b/net/unison/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1669069594 -SHA256 (bcpierce00-unison-v2.53.0_GH0.tar.gz) = 9364477df4501b9c7377e2ca1a7c4b44c1f16fa7cbc12b7f5b543d08c3f0740a -SIZE (bcpierce00-unison-v2.53.0_GH0.tar.gz) = 1387266 +TIMESTAMP = 1679421059 +SHA256 (bcpierce00-unison-v2.53.2_GH0.tar.gz) = fb337c221722e496916b385e50e99a49604b8aed3f5fafcc45029c1d2aa1232b +SIZE (bcpierce00-unison-v2.53.2_GH0.tar.gz) = 1410117 diff --git a/net/unison/files/patch-Makefile.OCaml b/net/unison/files/patch-Makefile.OCaml index 6172ff5c8790..5df9f0758e48 100644 --- a/net/unison/files/patch-Makefile.OCaml +++ b/net/unison/files/patch-Makefile.OCaml @@ -1,4 +1,4 @@ ---- Makefile.OCaml.orig 2022-10-30 19:42:39 UTC +--- Makefile.OCaml.orig 2023-03-19 12:38:58 UTC +++ Makefile.OCaml @@ -34,7 +34,11 @@ ifeq ($(shell uname),NetBSD) else @@ -12,7 +12,7 @@ ifeq ($(shell uname),Linux) OSARCH=Linux endif -@@ -256,7 +260,7 @@ OCAMLOBJS+=main.cmo +@@ -271,7 +275,7 @@ OCAMLOBJS+=main.cmo # OCaml libraries for the bytecode version # File extensions will be substituted for the native code version @@ -21,35 +21,15 @@ INCLFLAGS+=-I +unix -I +str COBJS+=osxsupport$(OBJ_EXT) pty$(OBJ_EXT) bytearray_stubs$(OBJ_EXT) hash_compat$(OBJ_EXT) props_xattr$(OBJ_EXT) props_acl$(OBJ_EXT) -@@ -321,6 +325,11 @@ endif - INCLFLAGS+=-I fsmonitor -I fsmonitor/linux - endif +@@ -332,6 +336,11 @@ ifeq ($(OSARCH),Linux) + ### Filesystem monitoring -+ifeq ($(OSARCH),FreeBSD) + ifeq ($(OSARCH),Linux) +-include fsmonitor/linux/Makefile src/fsmonitor/linux/Makefile +INCLFLAGS+=-I fsmonitor -I fsmonitor/linux +endif + - ifeq ($(OSARCH),solaris) - -include fsmonitor/solaris/Makefile src/fsmonitor/solaris/Makefile - INCLFLAGS+=-I fsmonitor -I fsmonitor/solaris -@@ -434,6 +443,10 @@ win32rc/unison.res.lib: win32rc/unison.rc win32rc/U.ic - -$(RM) $@ - ocamllex $< - -+compat%.cmi: compat%.mli -+ @echo "$(CAMLC): $< ---> $@" -+ $(CAMLC) $(CAMLFLAGS) $(COMPATCAMLFLAGS) -c $(CWD)/$< -+ - %.cmi : %.mli - @echo "$(CAMLC): $< ---> $@" - $(CAMLC) $(CAMLFLAGS) -c $(CWD)/$< -@@ -448,7 +461,7 @@ win32rc/unison.res.lib: win32rc/unison.rc win32rc/U.ic - - %.o %.obj: %.c - @echo "$(CAMLC): $< ---> $@" -- $(CAMLC) $(CAMLFLAGS) -ccopt $(OUTPUT_SEL)$(CWD)/$@ -c $(CWD)/$< -+ $(CAMLC) $(CAMLFLAGS) -ccopt $(OUTPUT_SEL)$(CWD)/$@ -c $(CFLAGS) $(CWD)/$< - - $(NAME)$(EXEC_EXT): $(CAMLOBJS) $(COBJS) - @echo Linking $@ ++ifeq ($(OSARCH),FreeBSD) + -include fsmonitor/linux/Makefile src/fsmonitor/linux/Makefile + INCLFLAGS+=-I fsmonitor -I fsmonitor/linux + endif diff --git a/net/unison/files/patch-ocaml_4.07-compat b/net/unison/files/patch-ocaml_4.07-compat new file mode 100644 index 000000000000..33cf9da99040 --- /dev/null +++ b/net/unison/files/patch-ocaml_4.07-compat @@ -0,0 +1,303 @@ +From b787de04da85da2f911c8248e07342e58b4e8625 Mon Sep 17 00:00:00 2001 +From: Tõivo Leedjärv +Date: Fre, 24 Mar 2023 17:22:09 +0100 +Subject: [PATCH] Restore compatibility with OCaml 4.06 and 4.07 (temporary + patch) + +This patch should not break compilation with OCaml 4.x but it is +recommended to drop the patch for OCaml > 4.07. + +It will break compilation with OCaml >= 5.0 (due to the change in +Makefile.OCaml). +--- + src/fswatchold.ml | 25 +++-- + src/remote.ml | 3 +- + src/system/system_generic.ml | 204 +++++++++++++++++++++++++++++++++++ + src/uitext.ml | 1 - + 6 files changed, 326 insertions(+), 14 deletions(-) + +index 17f22dcb..13cab93b 100644 +--- fswatchold.ml ++++ fswatchold.ml +@@ -116,19 +116,22 @@ let readChanges wi = + let watcherRunning archHash = + RootMap.mem archHash !watchers && + let wi = RootMap.find archHash !watchers in ++ let cleanup () = ++ watchers := RootMap.remove archHash !watchers; ++ begin ++ try ignore (System.close_process_out wi.proc) ++ with Unix.Unix_error _ -> () ++ end; ++ begin match wi.ch with ++ | Some ch -> close_in_noerr ch ++ | None -> () ++ end; ++ false ++ in + match Unix.waitpid [Unix.WNOHANG] (System.process_out_pid wi.proc) with ++ | exception Unix.Unix_error (ECHILD, _, _) -> cleanup () + | (0, _) -> true +- | _ | exception Unix.Unix_error (ECHILD, _, _) -> +- watchers := RootMap.remove archHash !watchers; +- begin +- try ignore (System.close_process_out wi.proc) +- with Unix.Unix_error _ -> () +- end; +- begin match wi.ch with +- | Some ch -> close_in_noerr ch +- | None -> () +- end; +- false ++ | _ -> cleanup () + + let getChanges archHash = + if StringSet.mem archHash !newWatchers then +diff --git a/src/remote.ml b/src/remote.ml +index d320470a..0ed393ae 100644 +--- remote.ml ++++ remote.ml +@@ -1887,11 +1887,12 @@ let buildShellConnection shell host userOpt portOpt rootName termInteract = + let kill_noerr si = try Unix.kill pid si + with Unix.Unix_error _ -> () | Invalid_argument _ -> () in + match Unix.waitpid [WNOHANG] pid with ++ | exception Unix.Unix_error _ -> () + | (0, _) -> + (* Grace period before killing. Important to give ssh a chance + to restore terminal settings, should that be needed. *) + kill_noerr Sys.sigterm; Unix.sleepf 0.01; kill_noerr Sys.sigkill +- | _ | exception Unix.Unix_error _ -> () ++ | _ -> () + in + let () = at_exit end_ssh in + (None, pid) +diff --git a/src/system/system_generic.ml b/src/system/system_generic.ml +index 2147d44d..3ef4fb09 100644 +--- system/system_generic.ml ++++ system/system_generic.ml +@@ -15,6 +15,210 @@ + along with this program. If not, see . + *) + ++(* OCaml 4.07 compatibility ONLY *) ++module Unix = struct ++ ++include Unix ++ ++(* The following code is taken from OCaml sources. ++ Authors of code snippets: Xavier Leroy, Damien Doligez and Romain Beauxis *) ++ ++(**************************************************************************) ++(* *) ++(* OCaml *) ++(* *) ++(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *) ++(* *) ++(* Copyright 1996 Institut National de Recherche en Informatique et *) ++(* en Automatique. *) ++(* *) ++(* All rights reserved. This file is distributed under the terms of *) ++(* the GNU Lesser General Public License version 2.1, with the *) ++(* special exception on linking described in the file LICENSE. *) ++(* *) ++(**************************************************************************) ++ ++external dumpFd : Unix.file_descr -> int = "%identity" ++ ++external sys_exit : int -> 'a = "caml_sys_exit" ++ ++let rec waitpid_non_intr pid = ++ try waitpid [] pid ++ with Unix_error (EINTR, _, _) -> waitpid_non_intr pid ++ ++(* Duplicate [fd] if needed to make sure it isn't one of the ++ standard descriptors (stdin, stdout, stderr). ++ Note that this function always leaves the standard descriptors open, ++ the caller must take care of closing them if needed. ++ The "cloexec" mode doesn't matter, because ++ the descriptor returned by [dup] will be closed before the [exec], ++ and because no other thread is running concurrently ++ (we are in the child process of a fork). ++ *) ++let rec file_descr_not_standard fd = ++ if dumpFd fd >= 3 then fd else file_descr_not_standard (dup fd) ++ ++let safe_close fd = ++ try close fd with Unix_error(_,_,_) -> () ++ ++let perform_redirections new_stdin new_stdout new_stderr = ++ let new_stdin = file_descr_not_standard new_stdin in ++ let new_stdout = file_descr_not_standard new_stdout in ++ let new_stderr = file_descr_not_standard new_stderr in ++ (* The three dup2 close the original stdin, stdout, stderr, ++ which are the descriptors possibly left open ++ by file_descr_not_standard *) ++ dup2 ~cloexec:false new_stdin stdin; ++ dup2 ~cloexec:false new_stdout stdout; ++ dup2 ~cloexec:false new_stderr stderr; ++ safe_close new_stdin; ++ safe_close new_stdout; ++ safe_close new_stderr ++ ++type popen_process = ++ Process of in_channel * out_channel ++ | Process_in of in_channel ++ | Process_out of out_channel ++ | Process_full of in_channel * out_channel * in_channel ++ ++let popen_processes = (Hashtbl.create 7 : (popen_process, int) Hashtbl.t) ++ ++let open_proc cmd envopt proc input output error = ++ match fork() with ++ 0 -> perform_redirections input output error; ++ let shell = "/bin/sh" in ++ let argv = [| shell; "-c"; cmd |] in ++ begin try ++ match envopt with ++ | Some env -> execve shell argv env ++ | None -> execv shell argv ++ with _ -> ++ sys_exit 127 ++ end ++ | id -> Hashtbl.add popen_processes proc id ++ ++let open_process_in cmd = ++ let (in_read, in_write) = pipe ~cloexec:true () in ++ let inchan = in_channel_of_descr in_read in ++ begin ++ try ++ open_proc cmd None (Process_in inchan) stdin in_write stderr ++ with e -> ++ close_in inchan; ++ close in_write; ++ raise e ++ end; ++ close in_write; ++ inchan ++ ++let open_process_out cmd = ++ let (out_read, out_write) = pipe ~cloexec:true () in ++ let outchan = out_channel_of_descr out_write in ++ begin ++ try ++ open_proc cmd None (Process_out outchan) out_read stdout stderr ++ with e -> ++ close_out outchan; ++ close out_read; ++ raise e ++ end; ++ close out_read; ++ outchan ++ ++let open_process cmd = ++ let (in_read, in_write) = pipe ~cloexec:true () in ++ let (out_read, out_write) = ++ try pipe ~cloexec:true () ++ with e -> close in_read; close in_write; raise e in ++ let inchan = in_channel_of_descr in_read in ++ let outchan = out_channel_of_descr out_write in ++ begin ++ try ++ open_proc cmd None (Process(inchan, outchan)) out_read in_write stderr ++ with e -> ++ close out_read; close out_write; ++ close in_read; close in_write; ++ raise e ++ end; ++ close out_read; ++ close in_write; ++ (inchan, outchan) ++ ++let open_process_full cmd env = ++ let (in_read, in_write) = pipe ~cloexec:true () in ++ let (out_read, out_write) = ++ try pipe ~cloexec:true () ++ with e -> close in_read; close in_write; raise e in ++ let (err_read, err_write) = ++ try pipe ~cloexec:true () ++ with e -> close in_read; close in_write; ++ close out_read; close out_write; raise e in ++ let inchan = in_channel_of_descr in_read in ++ let outchan = out_channel_of_descr out_write in ++ let errchan = in_channel_of_descr err_read in ++ begin ++ try ++ open_proc cmd (Some env) (Process_full(inchan, outchan, errchan)) ++ out_read in_write err_write ++ with e -> ++ close out_read; close out_write; ++ close in_read; close in_write; ++ close err_read; close err_write; ++ raise e ++ end; ++ close out_read; ++ close in_write; ++ close err_write; ++ (inchan, outchan, errchan) ++ ++let find_proc_id fun_name proc = ++ try ++ let pid = Hashtbl.find popen_processes proc in ++ Hashtbl.remove popen_processes proc; ++ pid ++ with Not_found -> ++ raise(Unix_error(EBADF, fun_name, "")) ++ ++let close_process_in inchan = ++ let pid = find_proc_id "close_process_in" (Process_in inchan) in ++ close_in inchan; ++ snd(waitpid_non_intr pid) ++ ++let close_process_out outchan = ++ let pid = find_proc_id "close_process_out" (Process_out outchan) in ++ (* The application may have closed [outchan] already to signal ++ end-of-input to the process. *) ++ begin try close_out outchan with Sys_error _ -> () end; ++ snd(waitpid_non_intr pid) ++ ++let close_process (inchan, outchan) = ++ let pid = find_proc_id "close_process" (Process(inchan, outchan)) in ++ close_in inchan; ++ begin try close_out outchan with Sys_error _ -> () end; ++ snd(waitpid_non_intr pid) ++ ++let close_process_full (inchan, outchan, errchan) = ++ let pid = ++ find_proc_id "close_process_full" ++ (Process_full(inchan, outchan, errchan)) in ++ close_in inchan; ++ begin try close_out outchan with Sys_error _ -> () end; ++ close_in errchan; ++ snd(waitpid_non_intr pid) ++ ++let process_in_pid inchan = ++ find_proc_id "process_in_pid" (Process_in inchan) ++let process_out_pid outchan = ++ find_proc_id "process_out_pid" (Process_out outchan) ++let process_pid (inchan, outchan) = ++ find_proc_id "process_pid" (Process(inchan, outchan)) ++let process_full_pid (inchan, outchan, errchan) = ++ find_proc_id "process_full_pid" ++ (Process_full(inchan, outchan, errchan)) ++ ++end ++(* / *) ++ + type fspath = string + + let mfspath = Umarshal.string +diff --git a/src/uitext.ml b/src/uitext.ml +index 1c2e509d..fbb4f7f1 100644 +--- uitext.ml ++++ uitext.ml +@@ -1621,7 +1621,6 @@ and breakRepeat = function + | Assert_failure _ + | Match_failure _ + | Invalid_argument _ +- | Fun.Finally_raised _ + (* Async exceptions *) + | Out_of_memory + | Stack_overflow +-- +2.39.2 +