[pve-devel] [PATCH v2 vncterm 2/2] build: rebase on libvncserver 0.9.13
Fabian Grünbichler
f.gruenbichler at proxmox.com
Tue Jul 14 13:28:37 CEST 2020
upstream switched to cmake from autotools.
it is possible to drop systemd via a build option now, so use that
instead of patching.
Signed-off-by: Fabian Grünbichler <f.gruenbichler at proxmox.com>
---
v2:
- actually drop patch
- add -D WITH_LZO=OFF to prevent autodetection of non-build-dependency
Makefile | 7 +-
.../remove-systemd-socket-activation.patch | 227 ------------------
vncpatches/tls-auth-pluging.patch | 41 ++--
debian/control | 3 +-
vncpatches/series | 1 -
5 files changed, 25 insertions(+), 254 deletions(-)
delete mode 100644 vncpatches/remove-systemd-socket-activation.patch
diff --git a/Makefile b/Makefile
index a84205e..8f8611f 100644
--- a/Makefile
+++ b/Makefile
@@ -4,11 +4,11 @@ include /usr/share/dpkg/architecture.mk
PACKAGE=vncterm
GITVERSION:=$(shell cat .git/refs/heads/master)
-VNCVER=0.9.11
+VNCVER=0.9.13
VNCREL=LibVNCServer-${VNCVER}
VNCDIR=libvncserver-${VNCREL}
VNCSRC=${VNCREL}.tar.gz
-VNCLIB=${VNCDIR}/libvncserver/.libs/libvncserver.a
+VNCLIB=${VNCDIR}/libvncserver.a
DEB=${PACKAGE}_${DEB_VERSION_UPSTREAM_REVISION}_${DEB_BUILD_ARCH}.deb
@@ -32,8 +32,7 @@ ${VNCLIB}: ${VNCSRC}
tar xf ${VNCSRC}
ln -s ../vncpatches ${VNCDIR}/patches
cd ${VNCDIR}; quilt push -a
- cd ${VNCDIR}; ./autogen.sh --without-ssl --without-websockets --without-tightvnc-filetransfer;
- cd ${VNCDIR}; $(MAKE)
+ cd ${VNCDIR}; cmake -D WITH_GNUTLS=OFF -D WITH_OPENSSL=OFF -D WITH_WEBSOCKETS=OFF -D WITH_SYSTEMD=OFF -D WITH_TIGHTVNC_FILETRANSFER=OFF -D WITH_GCRYPT=OFF -D WITH_LZO=OFF -D BUILD_SHARED_LIBS=OFF .; cmake --build .
vncterm: vncterm.c wchardata.c $(VNCLIB)
$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $^ $(VNC_LIBS)
diff --git a/vncpatches/remove-systemd-socket-activation.patch b/vncpatches/remove-systemd-socket-activation.patch
deleted file mode 100644
index f190b94..0000000
--- a/vncpatches/remove-systemd-socket-activation.patch
+++ /dev/null
@@ -1,227 +0,0 @@
-commit 25e3dfeab75b6febdb6c1157e991c3bcbeb3eb86
-Author: Fabian Grünbichler <f.gruenbichler at proxmox.com>
-AuthorDate: Thu Feb 2 11:22:35 2017 +0100
-Commit: Fabian Grünbichler <f.gruenbichler at proxmox.com>
-CommitDate: Thu Feb 2 11:22:35 2017 +0100
-
- Revert "Support systemd socket activation"
-
- unneeded extra build dep
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 9424d8d..4c56635 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -36,7 +36,6 @@ find_package(GnuTLS)
- find_package(Threads)
- find_package(X11)
- find_package(OpenSSL)
--find_package(PkgConfig)
- find_library(LIBGCRYPT_LIBRARIES gcrypt)
-
- # Check whether the version of libjpeg we found was libjpeg-turbo and print a
-@@ -103,17 +102,6 @@ if(PNG_FOUND)
- endif(PNG_FOUND)
- option(LIBVNCSERVER_ALLOW24BPP "Allow 24 bpp" ON)
-
--pkg_check_modules(SYSTEMD "libsystemd")
--if(SYSTEMD_FOUND)
-- option(LIBVNCSERVER_WITH_SYSTEMD "Build with systemd socket activation support" ON)
--endif(SYSTEMD_FOUND)
--
--if(LIBVNCSERVER_WITH_SYSTEMD)
-- add_definitions(-DLIBVNCSERVER_WITH_SYSTEMD)
-- include_directories(${SYSTEMD_INCLUDE_DIRS})
-- set(ADDITIONAL_LIBS ${ADDITIONAL_LIBS} ${SYSTEMD_LIBRARIES})
--endif(LIBVNCSERVER_WITH_SYSTEMD)
--
- if(GNUTLS_FOUND)
- set(LIBVNCSERVER_WITH_CLIENT_TLS 1)
- option(LIBVNCSERVER_WITH_WEBSOCKETS "Build with websockets support (gnutls)" ON)
-diff --git a/configure.ac b/configure.ac
-index f13edb4..3f4b29a 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -68,9 +68,6 @@ if test ! -z "$with_ffmpeg"; then
- fi
- AM_CONDITIONAL(HAVE_MP3LAME, test "$HAVE_MP3LAME" = "true")
-
--PKG_CHECK_MODULES([LIBSYSTEMD], [libsystemd], [with_systemd=1], [with_systemd=0])
--AM_CONDITIONAL([WITH_SYSTEMD], [test $with_systemd -eq 1])
--
- # Seem to need this dummy here to induce the 'checking for egrep... grep -E', etc.
- # before it seemed to be inside the with_jpeg conditional.
- AC_CHECK_HEADER(thenonexistentheader.h, HAVE_THENONEXISTENTHEADER_H="true")
-diff --git a/libvncserver/Makefile.am b/libvncserver/Makefile.am
-index e25784b..2f23e31 100644
---- a/libvncserver/Makefile.am
-+++ b/libvncserver/Makefile.am
-@@ -59,12 +59,6 @@ LIB_SRCS = main.c rfbserver.c rfbregion.c auth.c sockets.c $(WEBSOCKETSSRCS) \
- libvncserver_la_SOURCES=$(LIB_SRCS)
- libvncserver_la_LIBADD=$(WEBSOCKETSSSLLIBS)
-
--if WITH_SYSTEMD
--AM_CPPFLAGS += -DLIBVNCSERVER_WITH_SYSTEMD
--libvncserver_la_CFLAGS = $(LIBSYSTEMD_CFLAGS)
--libvncserver_la_LIBADD += $(LIBSYSTEMD_LIBS)
--endif
--
- lib_LTLIBRARIES=libvncserver.la
- libvncserver_la_LDFLAGS = -version-info 1:0:0
-
-diff --git a/libvncserver/sockets.c b/libvncserver/sockets.c
-index bbc3d90..6467b1c 100644
---- a/libvncserver/sockets.c
-+++ b/libvncserver/sockets.c
-@@ -77,10 +77,6 @@
- #include "rfbssl.h"
- #endif
-
--#ifdef LIBVNCSERVER_WITH_SYSTEMD
--#include <systemd/sd-daemon.h>
--#endif
--
- #if defined(__linux__) && defined(NEED_TIMEVAL)
- struct timeval
- {
-@@ -126,54 +122,6 @@ int deny_severity=LOG_WARNING;
- int rfbMaxClientWait = 20000; /* time (ms) after which we decide client has
- gone away - needed to stop us hanging */
-
--static rfbBool
--rfbNewConnectionFromSock(rfbScreenInfoPtr rfbScreen, int sock)
--{
-- const int one = 1;
--#ifdef LIBVNCSERVER_IPv6
-- struct sockaddr_storage addr;
--#else
-- struct sockaddr_in addr;
--#endif
-- socklen_t addrlen = sizeof(addr);
--
-- getpeername(sock, (struct sockaddr *)&addr, &addrlen);
--
-- if(!rfbSetNonBlocking(sock)) {
-- rfbLogPerror("rfbCheckFds: setnonblock");
-- closesocket(sock);
-- return FALSE;
-- }
--
-- if (setsockopt(sock, IPPROTO_TCP, TCP_NODELAY,
-- (char *)&one, sizeof(one)) < 0) {
-- rfbLogPerror("rfbCheckFds: setsockopt failed: can't set TCP_NODELAY flag, non TCP socket?");
-- }
--
--#ifdef USE_LIBWRAP
-- if(!hosts_ctl("vnc",STRING_UNKNOWN,inet_ntoa(addr.sin_addr),
-- STRING_UNKNOWN)) {
-- rfbLog("Rejected connection from client %s\n",
-- inet_ntoa(addr.sin_addr));
-- closesocket(sock);
-- return FALSE;
-- }
--#endif
--
--#ifdef LIBVNCSERVER_IPv6
-- char host[1024];
-- if(getnameinfo((struct sockaddr*)&addr, addrlen, host, sizeof(host), NULL, 0, NI_NUMERICHOST) != 0) {
-- rfbLogPerror("rfbProcessNewConnection: error in getnameinfo");
-- }
-- rfbLog("Got connection from client %s\n", host);
--#else
-- rfbLog("Got connection from client %s\n", inet_ntoa(addr.sin_addr));
--#endif
--
-- rfbNewClient(rfbScreen,sock);
-- return TRUE;
--}
--
- /*
- * rfbInitSockets sets up the TCP and UDP sockets to listen for RFB
- * connections. It does nothing if called again.
-@@ -190,20 +138,6 @@ rfbInitSockets(rfbScreenInfoPtr rfbScreen)
-
- rfbScreen->socketState = RFB_SOCKET_READY;
-
--#ifdef LIBVNCSERVER_WITH_SYSTEMD
-- if (sd_listen_fds(0) == 1)
-- {
-- int sock = SD_LISTEN_FDS_START + 0;
-- if (sd_is_socket(sock, AF_UNSPEC, 0, 0))
-- rfbNewConnectionFromSock(rfbScreen, sock);
-- else if (sd_is_socket(sock, AF_UNSPEC, 0, 1))
-- rfbProcessNewConnection(rfbScreen);
-- return;
-- }
-- else
-- rfbLog("Unable to establish connection with systemd socket\n");
--#endif
--
- if (rfbScreen->inetdSock != -1) {
- const int one = 1;
-
-@@ -479,7 +413,14 @@ rfbCheckFds(rfbScreenInfoPtr rfbScreen,long usec)
- rfbBool
- rfbProcessNewConnection(rfbScreenInfoPtr rfbScreen)
- {
-+ const int one = 1;
- int sock = -1;
-+#ifdef LIBVNCSERVER_IPv6
-+ struct sockaddr_storage addr;
-+#else
-+ struct sockaddr_in addr;
-+#endif
-+ socklen_t addrlen = sizeof(addr);
- fd_set listen_fds;
- int chosen_listen_sock = -1;
-
-@@ -500,12 +441,47 @@ rfbProcessNewConnection(rfbScreenInfoPtr rfbScreen)
- if (rfbScreen->listen6Sock >= 0 && FD_ISSET(rfbScreen->listen6Sock, &listen_fds))
- chosen_listen_sock = rfbScreen->listen6Sock;
-
-- if ((sock = accept(chosen_listen_sock, NULL, NULL)) < 0) {
-+ if ((sock = accept(chosen_listen_sock,
-+ (struct sockaddr *)&addr, &addrlen)) < 0) {
- rfbLogPerror("rfbCheckFds: accept");
- return FALSE;
- }
-
-- return rfbNewConnectionFromSock(rfbScreen, sock);
-+ if(!rfbSetNonBlocking(sock)) {
-+ closesocket(sock);
-+ return FALSE;
-+ }
-+
-+ if (setsockopt(sock, IPPROTO_TCP, TCP_NODELAY,
-+ (char *)&one, sizeof(one)) < 0) {
-+ rfbLogPerror("rfbCheckFds: setsockopt failed: can't set TCP_NODELAY flag, non TCP socket?");
-+ }
-+
-+#ifdef USE_LIBWRAP
-+ if(!hosts_ctl("vnc",STRING_UNKNOWN,inet_ntoa(addr.sin_addr),
-+ STRING_UNKNOWN)) {
-+ rfbLog("Rejected connection from client %s\n",
-+ inet_ntoa(addr.sin_addr));
-+ closesocket(sock);
-+ return FALSE;
-+ }
-+#endif
-+
-+#ifdef LIBVNCSERVER_IPv6
-+ {
-+ char host[1024];
-+ if(getnameinfo((struct sockaddr*)&addr, addrlen, host, sizeof(host), NULL, 0, NI_NUMERICHOST) != 0) {
-+ rfbLogPerror("rfbProcessNewConnection: error in getnameinfo");
-+ }
-+ rfbLog("Got connection from client %s\n", host);
-+ }
-+#else
-+ rfbLog("Got connection from client %s\n", inet_ntoa(addr.sin_addr));
-+#endif
-+
-+ rfbNewClient(rfbScreen,sock);
-+
-+ return TRUE;
- }
-
-
diff --git a/vncpatches/tls-auth-pluging.patch b/vncpatches/tls-auth-pluging.patch
index 17a8c47..837612f 100644
--- a/vncpatches/tls-auth-pluging.patch
+++ b/vncpatches/tls-auth-pluging.patch
@@ -1,23 +1,22 @@
-Index: vnc/libvncserver/auth.c
+Index: libvncserver-LibVNCServer-0.9.13/libvncserver/auth.c
===================================================================
-@@ -300,8 +300,9 @@
- int32_t securityType = rfbSecTypeInvalid;
+--- libvncserver-LibVNCServer-0.9.13.orig/libvncserver/auth.c
++++ libvncserver-LibVNCServer-0.9.13/libvncserver/auth.c
+@@ -301,7 +301,8 @@ rfbAuthNewClient(rfbClientPtr cl)
if (!cl->screen->authPasswdData || cl->reverseConnection) {
-- /* chk if this condition is valid or not. */
+ /* chk if this condition is valid or not. */
- securityType = rfbSecTypeNone;
-+ /* chk if this condition is valid or not. */
+ /* we disable anonymous auth */
+ // securityType = rfbSecTypeNone;
} else if (cl->screen->authPasswdData) {
securityType = rfbSecTypeVncAuth;
}
-Index: vnc/newterm/Makefile.am
-Index: vnc/libvncserver/sockets.c
+Index: libvncserver-LibVNCServer-0.9.13/libvncserver/sockets.c
===================================================================
---- vnc.orig/libvncserver/sockets.c 2011-01-20 16:42:41.000000000 +0100
-+++ vnc/libvncserver/sockets.c 2011-01-21 10:20:03.000000000 +0100
-@@ -613,7 +613,11 @@ rfbReadExactTimeout(rfbClientPtr cl, char* buf, int len, int timeout)
+--- libvncserver-LibVNCServer-0.9.13.orig/libvncserver/sockets.c
++++ libvncserver-LibVNCServer-0.9.13/libvncserver/sockets.c
+@@ -638,7 +638,11 @@ rfbReadExactTimeout(rfbClientPtr cl, cha
n = read(sock, buf, len);
}
#else
@@ -30,7 +29,7 @@ Index: vnc/libvncserver/sockets.c
#endif
if (n > 0) {
-@@ -801,7 +805,11 @@ rfbWriteExact(rfbClientPtr cl,
+@@ -826,7 +830,11 @@ rfbWriteExact(rfbClientPtr cl,
n = rfbssl_write(cl, buf, len);
else
#endif
@@ -42,21 +41,21 @@ Index: vnc/libvncserver/sockets.c
if (n > 0) {
-Index: vnc/rfb/rfb.h
+Index: libvncserver-LibVNCServer-0.9.13/rfb/rfb.h
===================================================================
---- vnc.orig/rfb/rfb.h 2011-01-20 16:36:06.000000000 +0100
-+++ vnc/rfb/rfb.h 2011-01-21 06:44:22.000000000 +0100
-@@ -397,6 +397,9 @@
- struct _rfbStatList *Next;
- } rfbStatList;
+--- libvncserver-LibVNCServer-0.9.13.orig/rfb/rfb.h
++++ libvncserver-LibVNCServer-0.9.13/rfb/rfb.h
+@@ -411,6 +411,9 @@ typedef struct _rfbStatList {
+ typedef struct _rfbSslCtx rfbSslCtx;
+ typedef struct _wsCtx wsCtx;
+typedef ssize_t (*sock_read_fn_t)(struct _rfbClientRec *cl, void *buf, size_t count);
+typedef ssize_t (*sock_write_fn_t)(struct _rfbClientRec *cl, const void *buf, size_t count);
+
typedef struct _rfbClientRec {
-
- /* back pointer to the screen */
-@@ -417,6 +420,10 @@
+
+ /** back pointer to the screen */
+@@ -431,6 +434,10 @@ typedef struct _rfbClientRec {
void* clientData;
ClientGoneHookPtr clientGoneHook;
@@ -64,6 +63,6 @@ Index: vnc/rfb/rfb.h
+ sock_read_fn_t sock_read_fn;
+ sock_read_fn_t sock_write_fn;
+
- SOCKET sock;
+ rfbSocket sock;
char *host;
diff --git a/debian/control b/debian/control
index 89c0f5d..cb6c7b2 100644
--- a/debian/control
+++ b/debian/control
@@ -1,6 +1,7 @@
Source: vncterm
Maintainer: Proxmox Support Team <support at proxmox.com>
-Build-Depends: debhelper (>= 10~),
+Build-Depends: cmake,
+ debhelper (>= 10~),
libglib2.0-dev,
libgnutls28-dev,
libjpeg62-turbo-dev,
diff --git a/vncpatches/series b/vncpatches/series
index defbfe8..2fb1c30 100644
--- a/vncpatches/series
+++ b/vncpatches/series
@@ -1,2 +1 @@
-remove-systemd-socket-activation.patch
tls-auth-pluging.patch
--
2.20.1
More information about the pve-devel
mailing list