[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