[packages/tigervnc] - up to 1.10.1 - fixed building with xserver 1.20.7 (missing ddxInputThreadInit) - added other fixes

baggins baggins at pld-linux.org
Sun Jan 19 15:49:53 CET 2020


commit 3f505847d24575a86930a3b441cb55c05b6530be
Author: Jan Rękorajski <baggins at pld-linux.org>
Date:   Sun Jan 19 15:48:45 2020 +0100

    - up to 1.10.1
    - fixed building with xserver 1.20.7 (missing ddxInputThreadInit)
    - added other fixes from fedora

 tigervnc-getmaster.patch                       | 66 +++++++++++---------------
 tigervnc-manpages.patch                        | 12 +++++
 tigervnc-passwd-crash-with-malloc-checks.patch | 41 ++++++++++++++++
 tigervnc-shebang.patch                         |  9 ++++
 tigervnc-support-xorg120.patch                 | 58 ----------------------
 tigervnc.spec                                  | 22 +++++----
 xserver.patch                                  | 15 ++++++
 7 files changed, 119 insertions(+), 104 deletions(-)
---
diff --git a/tigervnc.spec b/tigervnc.spec
index 0dd98ef..d99a4a2 100644
--- a/tigervnc.spec
+++ b/tigervnc.spec
@@ -3,21 +3,23 @@
 Summary:	A TigerVNC remote display system
 Summary(pl.UTF-8):	System zdalnego dostępu TigerVNC
 Name:		tigervnc
-Version:	1.8.0
-Release:	9
+Version:	1.10.1
+Release:	1
 License:	GPL v2
 Group:		X11/Applications/Networking
-Source0:	https://github.com/TigerVNC/tigervnc/archive/v%{version}.tar.gz?/%{name}-%{version}.tar.gz
-# Source0-md5:	5c9a80dd4b99b4eb19f535db5ce5830f
+Source0:	https://github.com/TigerVNC/tigervnc/archive/v%{version}/%{name}-%{version}.tar.gz
+# Source0-md5:	0c38334c7a52d304c30fac7802125a49
 Source1:	%{name}.desktop
 Source2:	vncserver.init
 Source3:	vncserver.sysconfig
 Source4:	vncserver.target
 Source5:	vncserver-service-generator
+Patch0:		%{name}-manpages.patch
+Patch1:		%{name}-passwd-crash-with-malloc-checks.patch
 Patch2:		%{name}-getmaster.patch
 Patch3:		%{name}-utilize-system-crypto-policies.patch
 Patch4:		%{name}-xstartup.patch
-Patch5:		tigervnc-support-xorg120.patch
+Patch5:		%{name}-shebang.patch
 Patch100:	xserver.patch
 URL:		http://www.tigervnc.com/
 BuildRequires:	ImageMagick
@@ -176,6 +178,8 @@ zdalny dostęp do pulpitu.
 
 %prep
 %setup -q
+%patch0 -p1
+%patch1 -p1
 %patch2 -p1
 %patch3 -p1
 %patch4 -p1
@@ -187,7 +191,7 @@ cd unix/xserver
 
 %build
 %cmake .
-%{__make} -j1
+%{__make}
 
 cd unix/xserver
 %{__aclocal} -I m4
@@ -219,11 +223,11 @@ cd unix/xserver
 	--with-xkb-output=/var/lib/xkb \
 	--disable-unit-tests
 
-%{__make} -j1
+%{__make}
 cd -
 
 cd media
-%{__make} -j1
+%{__make}
 
 %install
 rm -rf $RPM_BUILD_ROOT
@@ -297,7 +301,7 @@ fi
 
 %files -f %{name}.lang
 %defattr(644,root,root,755)
-%doc README.txt doc/*
+%doc README.rst doc/*
 %attr(755,root,root) %{_bindir}/vncviewer
 %{_mandir}/man1/vncviewer.1*
 %{_desktopdir}/tigervnc.desktop
diff --git a/tigervnc-getmaster.patch b/tigervnc-getmaster.patch
index 66ce121..6ef99b4 100644
--- a/tigervnc-getmaster.patch
+++ b/tigervnc-getmaster.patch
@@ -1,8 +1,9 @@
-diff -up tigervnc-1.4.2/unix/xserver/hw/vnc/c.getmaster tigervnc-1.4.2/unix/xserver/hw/vnc/InputXKB.c
---- tigervnc-1.4.2/unix/xserver/hw/vnc/InputXKB.c.getmaster	2015-01-23 23:37:23.000000000 +0000
-+++ tigervnc-1.4.2/unix/xserver/hw/vnc/InputXKB.c	2015-02-13 12:32:54.398502082 +0000
-@@ -210,10 +210,7 @@ void vncPrepareInputDevices(void)
-
+diff --git a/unix/xserver/hw/vnc/InputXKB.c b/unix/xserver/hw/vnc/InputXKB.c
+index f84a6e4..4eac939 100644
+--- a/unix/xserver/hw/vnc/InputXKB.c
++++ b/unix/xserver/hw/vnc/InputXKB.c
+@@ -226,10 +226,7 @@ void vncPrepareInputDevices(void)
+ 
  unsigned vncGetKeyboardState(void)
  {
 -	DeviceIntPtr master;
@@ -11,84 +12,75 @@ diff -up tigervnc-1.4.2/unix/xserver/hw/vnc/c.getmaster tigervnc-1.4.2/unix/xser
 -	return XkbStateFieldFromRec(&master->key->xkbInfo->state);
 +	return XkbStateFieldFromRec(&vncKeyboardDev->master->key->xkbInfo->state);
  }
-
+ 
  unsigned vncGetLevelThreeMask(void)
-@@ -232,7 +229,7 @@ unsigned InputDevice::vncGetLevelThreeMask(
+@@ -250,7 +247,7 @@ unsigned vncGetLevelThreeMask(void)
  			return 0;
  	}
-
+ 
 -	xkb = GetMaster(vncKeyboardDev, KEYBOARD_OR_FLOAT)->key->xkbInfo->desc;
 +	xkb = vncKeyboardDev->master->key->xkbInfo->desc;
-
+ 
  	act = XkbKeyActionPtr(xkb, keycode, state);
  	if (act == NULL)
-@@ -257,7 +254,7 @@ KeyCode InputDevice::vncPressShift(void)
+@@ -275,7 +272,7 @@ KeyCode vncPressShift(void)
  	if (state & ShiftMask)
  		return 0;
-
+ 
 -	xkb = GetMaster(vncKeyboardDev, KEYBOARD_OR_FLOAT)->key->xkbInfo->desc;
 +	xkb = vncKeyboardDev->master->key->xkbInfo->desc;
  	for (key = xkb->min_key_code; key <= xkb->max_key_code; key++) {
  		XkbAction *act;
  		unsigned char mask;
-@@ -299,7 +296,7 @@ size_t vncReleaseShift(KeyCode *keys, size_t maxKeys)
-
+@@ -315,7 +312,7 @@ size_t vncReleaseShift(KeyCode *keys, size_t maxKeys)
+ 
  	count = 0;
-
+ 
 -	master = GetMaster(vncKeyboardDev, KEYBOARD_OR_FLOAT);
 +	master = vncKeyboardDev->master;
  	xkb = master->key->xkbInfo->desc;
  	for (key = xkb->min_key_code; key <= xkb->max_key_code; key++) {
  		XkbAction *act;
-@@ -347,7 +344,7 @@ KeyCode InputDevice::vncPressLevelThree(voi
+@@ -371,7 +368,7 @@ KeyCode vncPressLevelThree(void)
  			return 0;
  	}
-
+ 
 -	xkb = GetMaster(vncKeyboardDev, KEYBOARD_OR_FLOAT)->key->xkbInfo->desc;
 +	xkb = vncKeyboardDev->master->key->xkbInfo->desc;
-
+ 
  	act = XkbKeyActionPtr(xkb, keycode, state);
  	if (act == NULL)
-@@ -386,7 +383,7 @@ size_t vncReleaseLevelThree(KeyCode *keys, size_t maxKeys)
-
+@@ -402,7 +399,7 @@ size_t vncReleaseLevelThree(KeyCode *keys, size_t maxKeys)
+ 
  	count = 0;
-
+ 
 -	master = GetMaster(vncKeyboardDev, KEYBOARD_OR_FLOAT);
 +	master = vncKeyboardDev->master;
  	xkb = master->key->xkbInfo->desc;
  	for (key = xkb->min_key_code; key <= xkb->max_key_code; key++) {
  		XkbAction *act;
-@@ -416,7 +413,7 @@ KeyCode InputDevice::vncKeysymToKeycode(Key
- 	if (new_state != NULL)
+@@ -447,7 +444,7 @@ KeyCode vncKeysymToKeycode(KeySym keysym, unsigned state, unsigned *new_state)
  		*new_state = state;
-
+ 
+ 	fallback = 0;
 -	xkb = GetMaster(vncKeyboardDev, KEYBOARD_OR_FLOAT)->key->xkbInfo->desc;
 +	xkb = vncKeyboardDev->master->key->xkbInfo->desc;
  	for (key = xkb->min_key_code; key <= xkb->max_key_code; key++) {
  		unsigned int state_out;
  		KeySym dummy;
-@@ -473,7 +470,7 @@ bool InputDevice::vncIsLockModifier(KeyCode
- 	XkbDescPtr xkb;
- 	XkbAction *act;
-
--	xkb = GetMaster(vncKeyboardDev, KEYBOARD_OR_FLOAT)->key->xkbInfo->desc;
-+	xkb = vncKeyboardDev->master->key->xkbInfo->desc;
-
- 	act = XkbKeyActionPtr(xkb, keycode, state);
- 	if (act == NULL)
-@@ -524,7 +521,7 @@ int vncIsAffectedByNumLock(KeyCode keycode)
+@@ -551,7 +548,7 @@ int vncIsAffectedByNumLock(KeyCode keycode)
  	if (numlock_keycode == 0)
  		return 0;
-
+ 
 -	xkb = GetMaster(vncKeyboardDev, KEYBOARD_OR_FLOAT)->key->xkbInfo->desc;
 +	xkb = vncKeyboardDev->master->key->xkbInfo->desc;
-
+ 
  	act = XkbKeyActionPtr(xkb, numlock_keycode, state);
  	if (act == NULL)
-@@ -545,7 +542,7 @@ KeyCode InputDevice::vncAddKeysym(KeySym ke
+@@ -585,7 +582,7 @@ KeyCode vncAddKeysym(KeySym keysym, unsigned state)
  	KeySym *syms;
  	KeySym upper, lower;
-
+ 
 -	master = GetMaster(vncKeyboardDev, KEYBOARD_OR_FLOAT);
 +	master = vncKeyboardDev->master;
  	xkb = master->key->xkbInfo->desc;
diff --git a/tigervnc-manpages.patch b/tigervnc-manpages.patch
new file mode 100644
index 0000000..30c9b55
--- /dev/null
+++ b/tigervnc-manpages.patch
@@ -0,0 +1,12 @@
+diff --git a/unix/vncserver b/unix/vncserver
+index 68be032..ac0e993 100755
+--- a/unix/vncserver
++++ b/unix/vncserver
+@@ -678,6 +678,7 @@ sub Usage
+ 	"                 [-geometry <width>x<height>]\n".
+ 	"                 [-pixelformat rgbNNN|bgrNNN]\n".
+ 	"                 [-fp <font-path>]\n".
++	"                 [-cc <visual>]\n".
+ 	"                 [-fg]\n".
+ 	"                 [-autokill]\n".
+ 	"                 [-noxstartup]\n".
diff --git a/tigervnc-passwd-crash-with-malloc-checks.patch b/tigervnc-passwd-crash-with-malloc-checks.patch
new file mode 100644
index 0000000..7377822
--- /dev/null
+++ b/tigervnc-passwd-crash-with-malloc-checks.patch
@@ -0,0 +1,41 @@
+diff --git a/common/rfb/Password.cxx b/common/rfb/Password.cxx
+index e4a508c..f555c57 100644
+--- a/common/rfb/Password.cxx
++++ b/common/rfb/Password.cxx
+@@ -55,7 +55,7 @@ PlainPasswd::~PlainPasswd() {
+ 
+ void PlainPasswd::replaceBuf(char* b) {
+   if (buf)
+-    memset(buf, 0, strlen(buf));
++    memset(buf, 0, length ? length : strlen(buf));
+   CharArray::replaceBuf(b);
+ }
+ 
+diff --git a/common/rfb/util.h b/common/rfb/util.h
+index 3100f90..764692a 100644
+--- a/common/rfb/util.h
++++ b/common/rfb/util.h
+@@ -51,16 +51,21 @@ namespace rfb {
+     CharArray() : buf(0) {}
+     CharArray(char* str) : buf(str) {} // note: assumes ownership
+     CharArray(size_t len) {
++      length = len;
+       buf = new char[len]();
+     }
+     ~CharArray() {
+-      delete [] buf;
++      if (buf) {
++        delete [] buf;
++        buf = nullptr;
++      }
+     }
+     void format(const char *fmt, ...) __printf_attr(2, 3);
+     // Get the buffer pointer & clear it (i.e. caller takes ownership)
+     char* takeBuf() {char* tmp = buf; buf = 0; return tmp;}
+-    void replaceBuf(char* b) {delete [] buf; buf = b;}
++    void replaceBuf(char* b) {if (buf) delete [] buf; buf = b;}
+     char* buf;
++    size_t length = 0;
+   private:
+     CharArray(const CharArray&);
+     CharArray& operator=(const CharArray&);
diff --git a/tigervnc-shebang.patch b/tigervnc-shebang.patch
new file mode 100644
index 0000000..f76af87
--- /dev/null
+++ b/tigervnc-shebang.patch
@@ -0,0 +1,9 @@
+diff -up tigervnc-1.3.0/unix/vncserver.shebang tigervnc-1.3.0/unix/vncserver
+--- tigervnc-1.3.0/unix/vncserver.shebang	2013-07-24 12:22:34.962158378 +0100
++++ tigervnc-1.3.0/unix/vncserver	2013-07-24 12:22:41.593188190 +0100
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env perl
++#!/usr/bin/perl
+ #
+ #  Copyright (C) 2009-2010 D. R. Commander.  All Rights Reserved.
+ #  Copyright (C) 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
diff --git a/tigervnc-support-xorg120.patch b/tigervnc-support-xorg120.patch
deleted file mode 100644
index dcb50db..0000000
--- a/tigervnc-support-xorg120.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-diff --git a/unix/xserver/hw/vnc/xorg-version.h b/unix/xserver/hw/vnc/xorg-version.h
-index 9d1c0eb..79ff79a 100644
---- a/unix/xserver/hw/vnc/xorg-version.h
-+++ b/unix/xserver/hw/vnc/xorg-version.h
-@@ -52,8 +52,10 @@
- #define XORG 118
- #elif XORG_VERSION_CURRENT < ((1 * 10000000) + (19 * 100000) + (99 * 1000))
- #define XORG 119
-+#elif XORG_VERSION_CURRENT < ((1 * 10000000) + (20 * 100000) + (99 * 1000))
-+#define XORG 120
- #else
--#error "X.Org newer than 1.19 is not supported"
-+#error "X.Org newer than 1.20 is not supported"
- #endif
-
- #endif
-diff --git a/unix/xserver/hw/vnc/xvnc.c b/unix/xserver/hw/vnc/xvnc.c
-index 93d8af4..1517809 100644
---- a/unix/xserver/hw/vnc/xvnc.c
-+++ b/unix/xserver/hw/vnc/xvnc.c
-@@ -202,6 +202,7 @@ vfbBitsPerPixel(int depth)
-
- static void vfbFreeFramebufferMemory(vfbFramebufferInfoPtr pfb);
-
-+#if XORG < 120
- #ifdef DPMSExtension
-     /* Why support DPMS? Because stupid modern desktop environments
-        such as Unity 2D on Ubuntu 11.10 crashes if DPMS is not
-@@ -219,6 +220,7 @@ Bool DPMSSupported(void)
-     return FALSE;
- }
- #endif
-+#endif
-
- #if XORG < 111
- void ddxGiveUp()
-@@ -1491,6 +1491,12 @@ vfbCloseScreen(ScreenPtr pScreen)
- #endif
- }
-
-+#if XORG >= 120
-+static void vncDPMS(ScreenPtr pScreen, int level)
-+{
-+}
-+#endif
-+
- static Bool
- #if XORG < 113
- vfbScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
-@@ -1661,6 +1667,9 @@ vfbScreenInit(ScreenPtr pScreen, int arg
-     if (!ret) return FALSE;
- #endif
-
-+#if XORG >= 120
-+    pScreen->DPMS = vncDPMS;
-+#endif
-
-   return TRUE;
diff --git a/xserver.patch b/xserver.patch
index 54cad17..7d79e9a 100644
--- a/xserver.patch
+++ b/xserver.patch
@@ -88,3 +88,18 @@ diff -up xserver/mi/miinitext.c.xserver116-rebased xserver/mi/miinitext.c
  extern _X_EXPORT void
  LogVWrite(int verb, const char *f, va_list args)
  _X_ATTRIBUTE_PRINTF(2, 0);
+--- xserver/hw/vnc/xvnc.c~	2019-12-20 08:02:02.000000000 +0100
++++ xserver/hw/vnc/xvnc.c	2020-01-19 15:32:59.189145946 +0100
+@@ -1855,3 +1855,12 @@
+     GiveUp(0);
+   }
+ }
++
++#if INPUTTHREAD
++/** This function is called in Xserver/os/inputthread.c when starting
++    the input thread. */
++void
++ddxInputThreadInit(void)
++{
++}
++#endif
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/tigervnc.git/commitdiff/3f505847d24575a86930a3b441cb55c05b6530be



More information about the pld-cvs-commit mailing list