Update to unison-2.52.0

This release introduces a new wire protocol, a new archive format, and
feature negotiation. In particular, once two machines have been upgraded
to unison-2.52.0 or later, it is possible to use unison compiled with
different ocaml versions. Summary of changes can be found at
https://github.com/bcpierce00/unison/blob/v2.52.0/NEWS.md.

This release is compatible with:
- unison 2.52 or newer. You do not have to pay any attention to OCaml
  compiler versions
- unison 2.51 if both versions are compiled with same OCaml compiler
  version
- unison 2.48 if both versions are compiled with same OCaml compiler
  version

Comments and OK sthen@
This commit is contained in:
bket 2022-03-21 04:26:59 +00:00
parent 2f03e0f904
commit a91e2c8bb0
21 changed files with 98 additions and 281 deletions

View File

@ -1,11 +0,0 @@
VER= 2.48.15
REV= v4
REVISION= 9
GH_TAGNAME= v${VER}${REV}
PKGNAME= unison-${VER}${REV:S/^v/pl/}
PORTROACH= limit:^2\.4
DOCS= BUGS.txt
.include <bsd.port.mk>

View File

@ -1,2 +0,0 @@
SHA256 (unison-2.48.15v4.tar.gz) = +MfpgmNLvh7WUQ/ls2tsXFXAbK792v3Z7cCIEjBf3uw=
SIZE (unison-2.48.15v4.tar.gz) = 1911781

View File

@ -1,39 +0,0 @@
Fix rare SIGSEGV when transferring large replicas.
Fix a theoretical integer overflow.
References:
https://github.com/bcpierce00/unison/commit/c1ddff13aa96b124680cce61673129aeb563dbf7
https://github.com/bcpierce00/unison/commit/f59663d67f4593a5bc1e554058fe6864751e805e
Thanks to Alex Markley and OCaml developers
--- bytearray_stubs.c.orig Mon May 23 18:40:05 2016
+++ bytearray_stubs.c Sun Mar 12 20:41:53 2017
@@ -5,6 +5,7 @@
#include "caml/intext.h"
#include "caml/bigarray.h"
+#include "caml/memory.h"
CAMLprim value ml_marshal_to_bigarray(value v, value flags)
{
@@ -21,15 +22,18 @@ CAMLprim value ml_marshal_to_bigarray(value v, value f
CAMLprim value ml_unmarshal_from_bigarray(value b, value ofs)
{
+ CAMLparam1(b); /* Holds [b] live until unmarshalling completes. */
+ value result;
struct caml_bigarray *b_arr = Bigarray_val(b);
- return input_value_from_block (Array_data (b_arr, ofs),
+ result = input_value_from_block (Array_data (b_arr, ofs),
b_arr->dim[0] - Long_val(ofs));
+ CAMLreturn(result);
}
CAMLprim value ml_blit_string_to_bigarray
(value s, value i, value a, value j, value l)
{
- char *src = String_val(s) + Int_val(i);
+ char *src = String_val(s) + Long_val(i);
char *dest = Array_data(Bigarray_val(a), j);
memcpy(dest, src, Long_val(l));
return Val_unit;

View File

@ -1,12 +0,0 @@
Index: files.ml
--- files.ml.orig
+++ files.ml
@@ -722,7 +722,7 @@ let get_files_in_directory dir =
with End_of_file ->
dirh.System.closedir ()
end;
- Sort.list (<) !files
+ List.sort String.compare !files
let ls dir pattern =
Util.convertUnixErrorsToTransient

View File

@ -1,14 +0,0 @@
Index: recon.ml
--- recon.ml.orig
+++ recon.ml
@@ -651,9 +651,7 @@ let rec reconcile
(* Sorts the paths so that they will be displayed in order *)
let sortPaths pathUpdatesList =
- Sort.list
- (fun (p1, _) (p2, _) -> Path.compare p1 p2 <= 0)
- pathUpdatesList
+ List.sort Path.compare pathUpdatesList
let rec enterPath p1 p2 t =
match Path.deconstruct p1, Path.deconstruct p2 with

View File

@ -1,12 +0,0 @@
Index: system/system_generic.ml
--- system/system_generic.ml.orig
+++ system/system_generic.ml
@@ -47,7 +47,7 @@ let open_out_gen = open_out_gen
let chmod = Unix.chmod
let chown = Unix.chown
let utimes = Unix.utimes
-let link = Unix.link
+let link source dest = Unix.link source dest
let openfile = Unix.openfile
let opendir f =
let h = Unix.opendir f in

View File

@ -1,12 +0,0 @@
Index: test.ml
--- test.ml.orig
+++ test.ml
@@ -370,8 +370,6 @@ let test() =
check "4" R2 (Dir ["x", File "foo"]);
);
- (raise (Util.Fatal "Skipping some tests -- remove me!\n") : unit);
-
if bothRootsLocal then
runtest "backups 1 (local)" ["backup = Name *"] (fun() ->
put R1 (Dir []); put R2 (Dir []); sync();

View File

@ -1,12 +0,0 @@
Index: uigtk2.ml
--- uigtk2.ml.orig
+++ uigtk2.ml
@@ -94,7 +94,7 @@ let icon =
let icon =
let p = GdkPixbuf.create ~width:48 ~height:48 ~has_alpha:true () in
Gpointer.blit
- (Gpointer.region_of_string Pixmaps.icon_data) (GdkPixbuf.get_pixels p);
+ (Gpointer.region_of_bytes Pixmaps.icon_data) (GdkPixbuf.get_pixels p);
p
let leftPtrWatch =

View File

@ -1,16 +0,0 @@
ocaml 4.12 compat
Index: uutil.ml
--- uutil.ml.orig
+++ uutil.ml
@@ -34,9 +34,7 @@ let myNameAndVersion = myName ^ " " ^ myVersion
let hash2 x y = (17 * x + 257 * y) land 0x3FFFFFFF
-external hash_param : int -> int -> 'a -> int = "caml_hash_univ_param" "noalloc"
-
-let hash x = hash_param 10 100 x
+let hash = Hashtbl.hash
(*****************************************************************************)
(* File sizes *)

View File

@ -1,27 +0,0 @@
+-----------------------------------------------------------------------
| Running ${PKGSTEM} on OpenBSD
+-----------------------------------------------------------------------
Unison uses native OCaml marshalling in its prococol. This
means that unison might not work when the OCaml versions of
two instances are out of sync. Assuming that both ends are
OpenBSD and under control by the user, pkg_add(1) can be used
to sync unison and ocaml.
Another way to work around this limitation of unison is to use
the OPAM OCaml package manager to build unison with the same
version of the OCaml compiler on all machines:
doas pkg_add opam
export OPAMROOT=~/opam_unison
opam init --no-setup --compiler ocaml-base-compiler.4.09.0
opam install unison lablgtk # To build without the gui, remove lablgtk
$(opam var bin)/unison
Common issue
=============
Unison sometimes reports chown() failures that are actually
failures to change group ownership. This can occur when a user
does not belong to the specified group and is the owner of the
file, or is not the superuser. Issue can be addressed by setting
the option 'group' to 'false'.

View File

@ -1,3 +0,0 @@
GH_TAGNAME= v2.51.5
.include <bsd.port.mk>

View File

@ -1,2 +0,0 @@
SHA256 (unison-2.51.5.tar.gz) = fodjcZkuv4kLYPMt+ICpinX+jEfAa3sq4q02vkgBPoM=
SIZE (unison-2.51.5.tar.gz) = 1385407

View File

@ -1,8 +0,0 @@
Unison is a file-synchronization tool for Unix and Windows. It allows
two replicas of a collection of files and directories to be stored on
different hosts (or different disks on the same host), modified
separately, and then brought up to date by propagating the changes in
each replica to the other.
Flavors:
no_x11 - build without X support

View File

@ -1,7 +0,0 @@
@option is-branch
@conflict unison-*
@bin bin/unison
share/doc/pkg-readmes/${PKGSTEM}
share/doc/unison/
share/doc/unison/NEWS
share/doc/unison/README

View File

@ -1,27 +0,0 @@
+-----------------------------------------------------------------------
| Running ${PKGSTEM} on OpenBSD
+-----------------------------------------------------------------------
Unison uses native OCaml marshalling in its prococol. This
means that unison might not work when the OCaml versions of
two instances are out of sync. Assuming that both ends are
OpenBSD and under control by the user, pkg_add(1) can be used
to sync unison and ocaml.
Another way to work around this limitation of unison is to use
the OPAM OCaml package manager to build unison with the same
version of the OCaml compiler on all machines:
doas pkg_add opam
export OPAMROOT=~/opam_unison
opam init --no-setup --compiler ocaml-base-compiler.4.09.0
opam install unison lablgtk # To build without the gui, remove lablgtk
$(opam var bin)/unison
Common issue
=============
Unison sometimes reports chown() failures that are actually
failures to change group ownership. This can occur when a user
does not belong to the specified group and is the owner of the
file, or is not the superuser. Issue can be addressed by setting
the option 'group' to 'false'.

View File

@ -1,7 +1,64 @@
SUBDIR =
SUBDIR += 2.4x
SUBDIR += 2.4x,no_x11
SUBDIR += 2.5x
SUBDIR += 2.5x,no_x11
COMMENT = multi-platform file synchronization tool
.include <bsd.port.subdir.mk>
GH_ACCOUNT = bcpierce00
GH_PROJECT = unison
GH_TAGNAME = v2.52.0
CATEGORIES = net
HOMEPAGE = https://www.cis.upenn.edu/~bcpierce/unison/
MAINTAINER = Bjorn Ketelaars <bket@openbsd.org>
# GPLv3
PERMIT_PACKAGE = Yes
WANTLIB = c m util
MODULES = lang/ocaml
MODOCAML_RUNDEP = if-not-native
TEST_DEPENDS = emacs->=24:editors/emacs
USE_GMAKE = Yes
# CFLAGS _must_ be empty. This is an OCaml compiler.
MAKE_FLAGS = NATIVE=${MODOCAML_NATIVE:S/Yes/true/:S/No/false/} \
OCAMLOPT=ocamlopt.opt \
CFLAGS=
FLAVORS = no_x11
FLAVOR ?=
.if ${FLAVOR:Mno_x11}
MAKE_FLAGS += UISTYLE=text
.else
WANTLIB += X11 Xcomposite Xcursor Xdamage Xext Xfixes Xi Xinerama
WANTLIB += Xrandr Xrender atk-1.0 cairo fontconfig freetype gdk-x11-2.0
WANTLIB += gdk_pixbuf-2.0 gio-2.0 glib-2.0 gobject-2.0 gtk-x11-2.0
WANTLIB += harfbuzz intl pango-1.0 pangocairo-1.0 pangoft2-1.0
WANTLIB += z
BUILD_DEPENDS += x11/lablgtk2
LIB_DEPENDS += x11/gtk+2
MAKE_FLAGS += UISTYLE=gtk2
.endif
FLAVOR_COMMA = ${FLAVOR_EXT:S/-/,/g}
SUBST_VARS = FLAVOR_COMMA
# Avoid multiple all:: entries and use the real target entry.
ALL_TARGET = unison
TEST_TARGET = selftest
PORTHOME = ${WRKDIR}
WRKDIST = ${WRKDIR}/${DISTNAME}/src
DOCS = NEWS.md README.md
# Avoid the nightmare of their Makefile install target.
# Do not use INSTALL_PROGRAM, as the bytecode version must not be stripped!
do-install:
${INSTALL_SCRIPT} ${WRKSRC}/unison ${PREFIX}/bin
${INSTALL_DATA_DIR} ${PREFIX}/share/doc/unison
@cd ${WRKSRC}/.. && ${INSTALL_DATA} ${DOCS} ${PREFIX}/share/doc/unison
.include <bsd.port.mk>

View File

@ -1,64 +0,0 @@
COMMENT= multi-platform file synchronization tool
GH_ACCOUNT= bcpierce00
GH_PROJECT= unison
CATEGORIES= net
HOMEPAGE= https://www.cis.upenn.edu/~bcpierce/unison/
MAINTAINER= Bjorn Ketelaars <bket@openbsd.org>
# GPLv3
PERMIT_PACKAGE= Yes
WANTLIB= c m util
MODULES= lang/ocaml
MODOCAML_RUNDEP= if-not-native
TEST_DEPENDS+= emacs->=24:editors/emacs
# CFLAGS _must_ be empty. This is an OCaml compiler.
MAKE_FLAGS= NATIVE=${MODOCAML_NATIVE:S/Yes/true/:S/No/false/} \
OCAMLOPT=ocamlopt.opt \
CFLAGS=
USE_GMAKE= Yes
FLAVORS= no_x11
FLAVOR?=
.if ${FLAVOR:Mno_x11}
MAKE_FLAGS+= UISTYLE=text
.else
BUILD_DEPENDS+= x11/lablgtk2
LIB_DEPENDS+= x11/gtk+2
MAKE_FLAGS+= UISTYLE=gtk2
WANTLIB+= X11 Xcomposite Xcursor Xdamage Xext Xfixes Xi Xinerama
WANTLIB+= Xrandr Xrender atk-1.0 cairo fontconfig freetype gdk-x11-2.0
WANTLIB+= gdk_pixbuf-2.0 gio-2.0 glib-2.0 gobject-2.0 gtk-x11-2.0
WANTLIB+= harfbuzz intl pango-1.0 pangocairo-1.0 pangoft2-1.0
WANTLIB+= z
.endif
FLAVOR_COMMA= ${FLAVOR_EXT:S/-/,/g}
SUBST_VARS= FLAVOR_COMMA
# Avoid multiple all:: entries and use the real target entry.
ALL_TARGET= unison
TEST_TARGET= selftest
PORTHOME= ${WRKDIR}
WRKDIST= ${WRKDIR}/${DISTNAME}/src
DOCS+= NEWS README
# Avoid the nightmare of their Makefile install target.
# Do not use INSTALL_PROGRAM, as the bytecode version must not be stripped!
do-install:
${INSTALL_SCRIPT} ${WRKSRC}/unison ${PREFIX}/bin
${INSTALL_DATA_DIR} ${PREFIX}/share/doc/unison
@cd ${WRKSRC} && ${INSTALL_DATA} ${DOCS} ${PREFIX}/share/doc/unison

View File

@ -1,11 +1,9 @@
@option is-branch
@conflict unison-*
@pkgpath net/unison/stable${FLAVOR_COMMA}
@pkgpath net/unison/2.4x${FLAVOR_COMMA}
@pkgpath net/unison/2.5x${FLAVOR_COMMA}
@pkgpath net/unison/snapshot${FLAVOR_COMMA}
@pkgpath net/unison${FLAVOR_COMMA}
@pkgpath net/unison/stable${FLAVOR_COMMA}
@bin bin/unison
share/doc/pkg-readmes/${PKGSTEM}
share/doc/unison/
share/doc/unison/BUGS.txt
share/doc/unison/NEWS
share/doc/unison/README
share/doc/unison/NEWS.md
share/doc/unison/README.md

28
net/unison/README Normal file
View File

@ -0,0 +1,28 @@
+-----------------------------------------------------------------------
| Running ${PKGSTEM} on OpenBSD
+-----------------------------------------------------------------------
This version of unison is compatible with:
- unison 2.52 or newer. You do not have to pay any attention to OCaml
compiler versions.
- unison 2.51 if both versions are compiled with same OCaml compiler
version.
- unison 2.48 if both versions are compiled with same OCaml compiler
version.
It is possible to use the OPAM OCaml package manager to build unison
with the same version of the OCaml compiler on all machines:
doas pkg_add opam
export OPAMROOT=~/opam_unison
opam init --no-setup --compiler ocaml-base-compiler.4.09.0
opam install unison lablgtk # To build without the gui, remove lablgtk
$(opam var bin)/unison
Common issue
=============
Unison sometimes reports chown() failures that are actually failures to
change group ownership. This can occur when a user does not belong to
the specified group and is the owner of the file, or is not the
superuser. Issue can be addressed by setting the option 'group' to
'false'.

2
net/unison/distinfo Normal file
View File

@ -0,0 +1,2 @@
SHA256 (unison-2.52.0.tar.gz) = oROJlxISkVMo/mkQHJJzexdmRZXEMY68uNo2flumNUA=
SIZE (unison-2.52.0.tar.gz) = 1354200