git: f41ed7ed2222 - main - net/remmina: fix build with GVNC if gtk-vnc build without PULSEAUDIO and sort out dependencies

From: Vladimir Druzenko <vvd_at_FreeBSD.org>
Date: Fri, 01 Mar 2024 08:33:37 UTC
The branch main has been updated by vvd:

URL: https://cgit.FreeBSD.org/ports/commit/?id=f41ed7ed222228ae1b76bfc88b17a3b1eaaee1be

commit f41ed7ed222228ae1b76bfc88b17a3b1eaaee1be
Author:     Vladimir Druzenko <vvd@FreeBSD.org>
AuthorDate: 2024-03-01 08:15:28 +0000
Commit:     Vladimir Druzenko <vvd@FreeBSD.org>
CommitDate: 2024-03-01 08:33:19 +0000

    net/remmina: fix build with GVNC if gtk-vnc build without PULSEAUDIO and sort out dependencies
    
    1. If net/gtk-vnc build with PULSEAUDIO off and GVNC option is on then remmina-plugin-gvnc.so plugin doesn't build and stage of the net/remmina fails:
    pkg-static: Unable to access file /usr/ports/net/remmina/work-default/stage/usr/local/lib/remmina/plugins/remmina-plugin-gvnc.so:No such file or directory
    pkg-static: Unable to access file /usr/ports/net/remmina/work-default/stage/usr/local/share/icons/hicolor/scalable/emblems/org.remmina.Remmina-gvnc-symbolic.svg:No such file or directory
    2. Port have 2 options with same name GVNC.
    3. Options GVNC and VNC are mixed up.
    4. Removed unnecessary dependencies (from atk, pcre, jpeg, harfbuzz, gnutls, xkbfile and etc).
    5. Moved dependency from libsoup to WWW only.
    6. Replaced dependency from libfreerdp2.so (not linked) with libfreerdp-client2.so and libwinpr2.so.2 (linked).
    
    Reviewed by:            fernape (maintainer)
    Approved by:            fernape (maintainer), arrowd (mentor), tcberner (mentor)
    Differential Revision:  https://reviews.freebsd.org/D44152
---
 net/remmina/Makefile                  | 35 +++++++++----------
 net/remmina/files/extra-patch-nopulse | 66 +++++++++++++++++++++++++++++++++++
 2 files changed, 83 insertions(+), 18 deletions(-)

diff --git a/net/remmina/Makefile b/net/remmina/Makefile
index 2ae5b54d9d83..c58ec23c91f3 100644
--- a/net/remmina/Makefile
+++ b/net/remmina/Makefile
@@ -1,5 +1,6 @@
 PORTNAME=	remmina
 DISTVERSION=	1.4.35
+PORTREVISION=	1
 CATEGORIES=	net gnome
 
 MAINTAINER=	fernape@FreeBSD.org
@@ -12,9 +13,7 @@ LICENSE_FILE=	${WRKSRC}/LICENSE
 LIB_DEPENDS=	libappindicator3.so:devel/libappindicator \
 		libcurl.so:ftp/curl \
 		libjson-glib-1.0.so:devel/json-glib \
-		libpcre2-8.so:devel/pcre2 \
 		libsodium.so:security/libsodium \
-		libsoup-2.4.so:devel/libsoup \
 		libwayland-client.so:graphics/wayland
 
 FLAVORS=		default lite
@@ -22,30 +21,29 @@ lite_PKGNAMESUFFIX=	-lite
 lite_DESCR=		${.CURDIR}/pkg-descr-lite
 
 USES=		cmake compiler:c11 desktop-file-utils gettext gnome localbase:ldflags pathfix \
-		pkgconfig shared-mime-info ssl shebangfix xorg
+		pkgconfig shared-mime-info shebangfix ssl xorg
 
 USE_GITLAB=	yes
 GL_ACCOUNT=	Remmina
 GL_PROJECT=	Remmina
 GL_TAGNAME=	2a455eadd6462457d08c2d066c5c245e0dee3bf9
 
-USE_GNOME=	atk cairo gdkpixbuf2 glib20 gtk30 pango
+USE_GNOME=	cairo gdkpixbuf2 glib20 gtk30 pango
 
 USE_XORG=	ice sm x11 xext
 
 SHEBANG_FILES=	data/desktop/remmina-file-wrapper.in
 bash_CMD=	${SH}
 
-CMAKE_ARGS=	-DWITH_APPINDICATOR:BOOL=false \
-	-DLIBSOUP_LIBRARY=/usr/local/lib/libsoup-2.4.so
+CMAKE_OFF=	WITH_APPINDICATOR
 
 CONFLICTS_INSTALL=	remmina-plugin*
 
-OPTIONS_DEFINE=		AVAHI CUPS GCRYPT GVNC NLS PYTHON SSH TERM
+OPTIONS_DEFINE=		AVAHI CUPS GCRYPT NLS PYTHON SSH TERM
 OPTIONS_DEFAULT=	AVAHI CUPS GCRYPT NLS SSH TERM \
-			EXEC RDP SECRET SPICE VNC WWW BASH
+			EXEC PULSEAUDIO RDP SECRET SPICE VNC WWW BASH
 OPTIONS_GROUP=		PLUGINS
-OPTIONS_GROUP_PLUGINS=	EXEC GVNC KWALLET RDP SECRET SPICE VNC WWW
+OPTIONS_GROUP_PLUGINS=	EXEC GVNC KWALLET PULSEAUDIO RDP SECRET SPICE VNC WWW
 OPTIONS_SINGLE=		SHELL
 OPTIONS_SINGLE_SHELL=	BASH ZSH
 OPTIONS_SUB=		yes
@@ -60,6 +58,7 @@ BASH_DESC=		Use BASH for shell wrapper scripts
 EXEC_DESC=		Plugin to execute a command
 GCRYPT_DESC=		Build with libgcrypt support for password encryption
 GVNC_DESC=		Build with Gnome VNC support
+PULSEAUDIO_DESC=	PulseAudio sound support for GVNC: require net/gtk-vnc build with PULSEAUDIO
 PYTHON_DESC=		Build with support for Python plugins
 RDP_DESC=		Remote Desktop Protocol plugin
 SECRET_DESC=		GNOME Keyring plugin
@@ -85,7 +84,7 @@ GCRYPT_LIB_DEPENDS=	libgcrypt.so:security/libgcrypt
 GCRYPT_CMAKE_BOOL=	WITH_GCRYPT
 
 GVNC_LIB_DEPENDS=	libgtk-vnc-2.0.so:net/gtk-vnc
-GVNC_CMAKE_BOOL=	WITH_LIBVNCSERVER
+GVNC_CMAKE_BOOL=	WITH_GVNC
 
 KWALLET_USES=		kde:5 qt:5
 KWALLET_USE=		kde=wallet qt=buildtools:build,core,gui,qmake:build
@@ -93,10 +92,13 @@ KWALLET_CMAKE_BOOL=	WITH_KF5WALLET
 
 NLS_CMAKE_BOOL=		WITH_TRANSLATIONS
 
+PULSEAUDIO_EXTRA_PATCHES_OFF=	${FILESDIR}/extra-patch-nopulse
+
 PYTHON_USES=		python
 PYTHON_CMAKE_BOOL=	WITH_PYTHONLIBS
 
-RDP_LIB_DEPENDS=	libfreerdp2.so:net/freerdp libxkbfile.so:x11/libxkbfile
+RDP_LIB_DEPENDS=	libfreerdp-client2.so:net/freerdp \
+			libwinpr2.so.2:net/freerdp
 
 SECRET_LIB_DEPENDS=	libsecret-1.so:security/libsecret
 SECRET_RUN_DEPENDS=	gnome-keyring:security/gnome-keyring
@@ -112,16 +114,13 @@ SSH_LDFLAGS=		-fstack-protector
 TERM_USE=		gnome=vte3
 TERM_CMAKE_BOOL=	WITH_VTE
 
-VNC_LIB_DEPENDS=	libgnutls.so:security/gnutls \
-			libvncserver.so:net/libvncserver
-VNC_USES=		jpeg
-VNC_CMAKE_BOOL=		WITH_GVNC
+VNC_LIB_DEPENDS=	libvncserver.so:net/libvncserver
+VNC_CMAKE_BOOL=		WITH_LIBVNCSERVER
 
-WWW_LIB_DEPENDS=	libharfbuzz.so:print/harfbuzz \
-			libsoup-2.4.so:devel/libsoup \
+WWW_LIB_DEPENDS=	libsoup-2.4.so:devel/libsoup \
 			libwebkit2gtk-4.0.so:www/webkit2-gtk3
-
 WWW_CMAKE_BOOL=		WITH_WEBKIT2GTK
+WWW_CMAKE_ON=		-DLIBSOUP_LIBRARY=${LOCALBASE}/lib/libsoup-2.4.so
 
 ZSH_RUN_DEPENDS=	zsh:shells/zsh
 ZSH_VARS=		SH_BIN=${PREFIX}/bin/zsh
diff --git a/net/remmina/files/extra-patch-nopulse b/net/remmina/files/extra-patch-nopulse
new file mode 100644
index 000000000000..96addddfac3a
--- /dev/null
+++ b/net/remmina/files/extra-patch-nopulse
@@ -0,0 +1,66 @@
+--- cmake/FindGTK-VNC.cmake.orig	2024-02-23 14:29:23 UTC
++++ cmake/FindGTK-VNC.cmake
+@@ -60,8 +60,8 @@ find_library(GTK-VNC_LIB gtk-vnc-2.0
+     ${COMMON_LIB_DIR}
+ )
+ 
+-if(GVNC_LIB AND GVNCPULSE_LIB AND GTK-VNC_LIB)
+-    set(GTK-VNC_LIBRARIES ${GVNC_LIB} ${GVNCPULSE_LIB} ${GTK-VNC_LIB})
++if(GVNC_LIB AND GTK-VNC_LIB)
++    set(GTK-VNC_LIBRARIES ${GVNC_LIB} ${GTK-VNC_LIB})
+     message(STATUS "GTK-VNC-Libs: ${GTK-VNC_LIBRARIES}")
+ endif()
+ 
+@@ -86,8 +86,8 @@ find_path(GTK-VNC_INCLUDE_DIR gtk-vnc.h
+     ${COMMON_INCLUDE_DIR}
+ )
+ 
+-if(GVNC_INCLUDE_DIR AND GVNCPULSE_INCLUDE_DIR AND GTK-VNC_INCLUDE_DIR)
+-    set(GTK-VNC_INCLUDE_DIRS ${GVNC_INCLUDE_DIR} ${GVNCPULSE_INCLUDE_DIR} ${GTK-VNC_INCLUDE_DIR})
++if(GVNC_INCLUDE_DIR AND GTK-VNC_INCLUDE_DIR)
++    set(GTK-VNC_INCLUDE_DIRS ${GVNC_INCLUDE_DIR} ${GTK-VNC_INCLUDE_DIR})
+     message(STATUS "GTK-VNC-Include-Dirs: ${GTK-VNC_INCLUDE_DIRS}")
+ endif()
+ 
+--- plugins/gvnc/gvnc_plugin.c.orig	2024-02-23 14:29:23 UTC
++++ plugins/gvnc/gvnc_plugin.c
+@@ -37,7 +37,7 @@
+ 
+ #include <vncdisplay.h>
+ #include <vncutil.h>
+-#include <vncaudiopulse.h>
++//#include <vncaudiopulse.h>
+ 
+ #define GVNC_DEFAULT_PORT 5900
+ 
+@@ -700,8 +700,8 @@ static void gvnc_plugin_init(RemminaProtocolWidget *gp
+ 		vnc_util_set_debug(TRUE);
+ 
+ 	gpdata->vnc = vnc_display_new();
+-	if (remmina_plugin_service->file_get_int(remminafile, "enableaudio", FALSE))
+-		gpdata->pa = vnc_audio_pulse_new();
++//	if (remmina_plugin_service->file_get_int(remminafile, "enableaudio", FALSE))
++//		gpdata->pa = vnc_audio_pulse_new();
+ 
+ 
+ 	g_signal_connect(gpdata->vnc, "vnc-auth-credential",
+--- plugins/gvnc/gvnc_plugin.h.orig	2024-02-28 20:33:54 UTC
++++ plugins/gvnc/gvnc_plugin.h
+@@ -37,7 +37,7 @@
+ #include <gdk/gdkkeysyms.h>
+ #include <vncdisplay.h>
+ #include <vncutil.h>
+-#include <vncaudiopulse.h>
++//#include <vncaudiopulse.h>
+ 
+ 
+ #ifndef GDK_Return
+@@ -113,7 +113,7 @@ typedef struct _GVncPluginData {
+ 	GtkWidget *	box;
+ 	GtkWidget *	vnc;
+ 	VncConnection * conn;
+-	VncAudioPulse * pa;
++	/*VncAudioPulse*/ void * pa;
+ 	gchar *		error_msg;
+ 	gchar *		clipstr;
+ 	gulong		signal_clipboard;