On Tue 20/02/2024 11:30, Jeremie Courreges-Anglas wrote:
> On Mon, Feb 19 2024, Bjorn Ketelaars <b...@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 <es...@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 <b...@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'.

Reply via email to