Index | Thread | Search

From:
Bjorn Ketelaars <bket@openbsd.org>
Subject:
Re: UPDATE net/unison-2.53.4
To:
ports@openbsd.org
Cc:
Jeremie Courreges-Anglas <jca@wxcvbn.org>
Date:
Tue, 20 Feb 2024 20:42:23 +0100

Download raw body.

Thread
On Tue 20/02/2024 11:30, Jeremie Courreges-Anglas wrote:
> On Mon, Feb 19 2024, Bjorn Ketelaars <bket@openbsd.org> wrote:
> > Diff below updates net/unison to 2.53.4, which includes bug fixes, minor
> > improvements and clean-ups. Release notes:
> > https://github.com/bcpierce00/unison/releases/tag/v2.53.4.
> >
> > Change in the build system is that the gtk3 flavor of unison is
> > renamed to unison-gui. This is undone in the diff below by setting the
> > correct binary and renaming it in the do-install phase. I'm not sure
> > if this is the way to go, or if there is a better way to do this.
> 
> If lablgtk3 is installed then both unison and unison-gui are built, with
> or without FLAVOR=no_x11.  The problem is you're *adding* to MAKE_FLAGS
> instead of *setting* ALL_TARGET=gui/tui.
> 
> Now that the build system lets you build both, it would be interesting
> to use MULTI_PACKAGES, with a -gui subpackage shipping just the
> unison-gui program and carrying the gtk3 dep.  With proper @pkgpaths the
> upgrade path would be mostly transparent for users (gotta retrain their
> fingers to type unison-gui when needed).
> 
> Additionally no_x11 could stay as a PSEUDO_FLAVOR so that people can
> build and install the tui program/package without having lablgtk3
> installed.

New diff, which addresses Jeremie's feedback:
- uses MULTI_PACKAGES (with a -x11 subpackage);
- no_x11 as PSEUDO_FLAVOR;
- updated @pkgpath markers;
- added quirks entry;
- updated net/Makefile.

With this users are able to use `pkg_add -u` and:
- update unison-2.53.3 to unison-x11-2.53.4 (pulls in unison-2.53.4 as
  RDEP);
- update unison-no_x11-2.53.3 to unison-2.53.4.

Comments/OK?


diff --git devel/quirks/Makefile devel/quirks/Makefile
index b52a6ca153c..29352025828 100644
--- devel/quirks/Makefile
+++ devel/quirks/Makefile
@@ -3,7 +3,7 @@ CATEGORIES =	devel databases
 DISTFILES =
 
 # API.rev
-PKGNAME =	quirks-7.6
+PKGNAME =	quirks-7.7
 PKG_ARCH =	*
 MAINTAINER =	Marc Espie <espie@openbsd.org>
 
diff --git devel/quirks/files/Quirks.pm devel/quirks/files/Quirks.pm
index a5641d20104..e0a8ce89fc4 100644
--- devel/quirks/files/Quirks.pm
+++ devel/quirks/files/Quirks.pm
@@ -809,6 +809,8 @@ my $stem_extensions = {
 	'py-analyzemft' => 'py3-analyzemft',
 	'llama' => 'walk',
 	'py-setuptools-git' => 'py3-setuptools-git',
+	'unison' => 'unison-x11',
+	'unison-no_x11' => 'unison',
 };
 
 my $obsolete_reason = {};
diff --git net/Makefile net/Makefile
index eaee3c5bf66..370c6a22f70 100644
--- net/Makefile
+++ net/Makefile
@@ -749,7 +749,6 @@
      SUBDIR += uhttpmock
      SUBDIR += unifi
      SUBDIR += unison
-     SUBDIR += unison,no_x11
      SUBDIR += unworkable
      SUBDIR += usockets
      SUBDIR += utox
diff --git net/unison/Makefile net/unison/Makefile
index d240adb9879..da4c1fef4e1 100644
--- net/unison/Makefile
+++ net/unison/Makefile
@@ -2,12 +2,12 @@
 USE_NOEXECONLY = yes
 .endif
 
-COMMENT =	multi-platform file synchronization tool
+COMMENT-main =	multi-platform file synchronization tool
+COMMENT-x11 =	gtk3 based interface for unison
 
 GH_ACCOUNT =	bcpierce00
 GH_PROJECT =	unison
-GH_TAGNAME =	v2.53.3
-REVISION =	2
+GH_TAGNAME =	v2.53.4
 
 CATEGORIES =	net
 
@@ -16,47 +16,46 @@ MAINTAINER =	Bjorn Ketelaars <bket@openbsd.org>
 # GPLv3
 PERMIT_PACKAGE =	Yes
 
-WANTLIB =		c m util
+WANTLIB =	c m pthread util
+WANTLIB-x11 =	${WANTLIB} atk-1.0 cairo cairo-gobject fontconfig freetype
+WANTLIB-x11 +=	gdk-3 gdk_pixbuf-2.0 gio-2.0 glib-2.0 gobject-2.0 gtk-3
+WANTLIB-x11 +=	harfbuzz intl pango-1.0 pangocairo-1.0
 
 MODULES =		lang/ocaml
 MODOCAML_RUNDEP =	if-not-native
 
-USE_GMAKE =	Yes
+LIB_DEPENDS-x11 =	x11/gtk+3
+RUN_DEPENDS-x11 =	${BASE_PKGPATH},-main=${GH_TAGNAME:S/v//} \
+			devel/desktop-file-utils
 
 # 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 +=	atk-1.0 cairo cairo-gobject fontconfig freetype gdk-3
-WANTLIB +=	gdk_pixbuf-2.0 gio-2.0 glib-2.0 gobject-2.0 gtk-3 harfbuzz
-WANTLIB +=	intl pango-1.0 pangocairo-1.0
-BUILD_DEPENDS +=	x11/lablgtk3
-LIB_DEPENDS +=		x11/gtk+3
-RUN_DEPENDS +=		devel/desktop-file-utils
-MAKE_FLAGS +=		UISTYLE=gtk3
-.endif
+USE_GMAKE =	Yes
 
-FLAVOR_COMMA =	${FLAVOR_EXT:S/-/,/g}
-SUBST_VARS =	FLAVOR_COMMA
+MULTI_PACKAGES =	-main -x11
+PSEUDO_FLAVORS =	no_x11
+FLAVOR ?=
 
 PORTHOME =	${WRKDIR}
 DOCS =		NEWS.md README.md
 
-# Avoid the nightmare of their Makefile install target.
+.include <bsd.port.arch.mk>
+
+.if ${BUILD_PACKAGES:M-x11}
+BUILD_DEPENDS =		x11/lablgtk3
+.endif
+
 # Do not use INSTALL_PROGRAM, as the bytecode version must not be stripped!
 do-install:
 	${INSTALL_SCRIPT} ${WRKSRC}/src/unison ${PREFIX}/bin
 	${INSTALL_MAN} ${WRKSRC}/man/unison.1 ${PREFIX}/man/man1
 	${INSTALL_DATA_DIR} ${PREFIX}/share/doc/unison
 	@cd ${WRKSRC} && ${INSTALL_DATA} ${DOCS} ${PREFIX}/share/doc/unison
-.if !${FLAVOR:Mno_x11}
+.if ${BUILD_PACKAGES:M-x11}
+	${INSTALL_SCRIPT} ${WRKSRC}/src/unison-gui ${PREFIX}/bin
 	${INSTALL_DATA_DIR} ${PREFIX}/share/pixmaps
 	${INSTALL_DATA} ${WRKSRC}/icons/U.svg \
 		${PREFIX}/share/pixmaps/unison.svg
diff --git net/unison/distinfo net/unison/distinfo
index df466e43a6d..aaf7e3e2284 100644
--- net/unison/distinfo
+++ net/unison/distinfo
@@ -1,2 +1,2 @@
-SHA256 (unison-2.53.3.tar.gz) = quoE/FvHbc/oYnaDyWWe5MGU1PmSzIqqFbuygg/I3kY=
-SIZE (unison-2.53.3.tar.gz) = 1415490
+SHA256 (unison-2.53.4.tar.gz) = 0Z5CkwE1gdvE0Umu+Js0x2Ih78vYc8eqUZPeSJrduFo=
+SIZE (unison-2.53.4.tar.gz) = 1407429
diff --git net/unison/files/unison.desktop net/unison/files/unison.desktop
index af64ef6617c..f091224ffee 100644
--- net/unison/files/unison.desktop
+++ net/unison/files/unison.desktop
@@ -2,7 +2,7 @@
 Encoding=UTF-8
 Name=unison
 Comment=File synchronisation tool for X11
-TryExec=unison
+TryExec=unison-gui
 Exec=unison
 Terminal=false
 Type=Application
diff --git net/unison/pkg/DESCR net/unison/pkg/DESCR
deleted file mode 100644
index d55c9d37b4d..00000000000
--- net/unison/pkg/DESCR
+++ /dev/null
@@ -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
diff --git net/unison/pkg/DESCR-main net/unison/pkg/DESCR-main
new file mode 100644
index 00000000000..d55c9d37b4d
--- /dev/null
+++ net/unison/pkg/DESCR-main
@@ -0,0 +1,8 @@
+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
diff --git net/unison/pkg/DESCR-x11 net/unison/pkg/DESCR-x11
new file mode 100644
index 00000000000..1fdf8f99d18
--- /dev/null
+++ net/unison/pkg/DESCR-x11
@@ -0,0 +1 @@
+GTK3 based interface for unison.
diff --git net/unison/pkg/PFRAG.no-no_x11 net/unison/pkg/PFRAG.no-no_x11
deleted file mode 100644
index a8d2b57156d..00000000000
--- net/unison/pkg/PFRAG.no-no_x11
+++ /dev/null
@@ -1,4 +0,0 @@
-share/applications/unison.desktop
-share/pixmaps/
-share/pixmaps/unison.svg
-@tag update-desktop-database
diff --git net/unison/pkg/PLIST net/unison/pkg/PLIST
deleted file mode 100644
index 4b3d8d144fa..00000000000
--- net/unison/pkg/PLIST
+++ /dev/null
@@ -1,13 +0,0 @@
-@pkgpath net/unison/2.4x${FLAVOR_COMMA}
-@pkgpath net/unison/2.5x${FLAVOR_COMMA}
-@pkgpath net/unison/snapshot${FLAVOR_COMMA}
-@pkgpath net/unison/stable${FLAVOR_COMMA}
-@bin bin/unison
-lib/ocaml/
-lib/ocaml/stublibs/
-@man man/man1/unison.1
-share/doc/pkg-readmes/${PKGSTEM}
-share/doc/unison/
-share/doc/unison/NEWS.md
-share/doc/unison/README.md
-!%%no_x11%%
diff --git net/unison/pkg/PLIST-main net/unison/pkg/PLIST-main
new file mode 100644
index 00000000000..eb6c049b92d
--- /dev/null
+++ net/unison/pkg/PLIST-main
@@ -0,0 +1,12 @@
+@pkgpath net/unison/2.4x,no_x11
+@pkgpath net/unison/2.5x,no_x11
+@pkgpath net/unison/snapshot,no_x11
+@pkgpath net/unison/stable,no_x11
+@pkgpath net/unison,no_x11
+@bin bin/unison
+@man man/man1/unison.1
+share/applications/
+share/doc/pkg-readmes/${PKGSTEM}
+share/doc/unison/
+share/doc/unison/NEWS.md
+share/doc/unison/README.md
diff --git net/unison/pkg/PLIST-x11 net/unison/pkg/PLIST-x11
new file mode 100644
index 00000000000..9a111597b31
--- /dev/null
+++ net/unison/pkg/PLIST-x11
@@ -0,0 +1,10 @@
+@pkgpath net/unison/2.4x
+@pkgpath net/unison/2.5x
+@pkgpath net/unison/snapshot
+@pkgpath net/unison/stable
+@pkgpath net/unison
+@bin bin/unison-gui
+share/applications/unison.desktop
+share/pixmaps/
+share/pixmaps/unison.svg
+@tag update-desktop-database
diff --git net/unison/pkg/README net/unison/pkg/README
deleted file mode 100644
index 486568a163a..00000000000
--- net/unison/pkg/README
+++ /dev/null
@@ -1,28 +0,0 @@
-+-----------------------------------------------------------------------
-| 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'.
diff --git net/unison/pkg/README-main net/unison/pkg/README-main
new file mode 100644
index 00000000000..486568a163a
--- /dev/null
+++ net/unison/pkg/README-main
@@ -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'.