From: Jan Rękorajski Date: Sun, 19 Jan 2020 14:48:45 +0000 (+0100) Subject: - up to 1.10.1 X-Git-Tag: auto/th/tigervnc-1.10.1-1~1 X-Git-Url: http://git.pld-linux.org/gitweb.cgi?a=commitdiff_plain;h=3f505847d24575a86930a3b441cb55c05b6530be;p=packages%2Ftigervnc.git - up to 1.10.1 - fixed building with xserver 1.20.7 (missing ddxInputThreadInit) - added other fixes from fedora --- 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 x]\n". + " [-pixelformat rgbNNN|bgrNNN]\n". + " [-fp ]\n". ++ " [-cc ]\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/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/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