summaryrefslogtreecommitdiff
path: root/community/tigervnc
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2013-08-13 01:33:19 -0700
committerroot <root@rshg054.dnsready.net>2013-08-13 01:33:19 -0700
commit7a65a910b77ad191d69881098c47f9b0c852d92e (patch)
tree9564e611af1442f8952a8cbddb3b0ad25ed71aab /community/tigervnc
parent60da6abff6c9577a783d72865f11de7a585e912e (diff)
Tue Aug 13 01:31:08 PDT 2013
Diffstat (limited to 'community/tigervnc')
-rw-r--r--community/tigervnc/PKGBUILD70
-rw-r--r--community/tigervnc/gethomedir.patch20
-rw-r--r--community/tigervnc/getmaster.patch96
-rw-r--r--community/tigervnc/vncserver.service28
-rw-r--r--community/tigervnc/vncviewer.desktop10
5 files changed, 224 insertions, 0 deletions
diff --git a/community/tigervnc/PKGBUILD b/community/tigervnc/PKGBUILD
new file mode 100644
index 000000000..a37192c1e
--- /dev/null
+++ b/community/tigervnc/PKGBUILD
@@ -0,0 +1,70 @@
+# $Id: PKGBUILD 94384 2013-07-22 13:59:43Z spupykin $
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Maintainer: Uroš Vampl <mobile.leecher at gmail dot com>
+
+pkgname=tigervnc
+pkgver=1.3.0
+pkgrel=2
+_xorgver=1.14.2
+pkgdesc="suite of VNC servers and clients. VNC 4 branch of TightVNC."
+arch=('i686' 'x86_64')
+url="http://www.tigervnc.org"
+license=('GPL')
+depends=('fltk' 'pam' 'gnutls' 'libjpeg-turbo' 'libxtst' 'libxfont' 'pixman'
+ 'xorg-xauth' 'xorg-xsetroot' 'xkeyboard-config' 'xorg-xkbcomp'
+ 'libgl' 'libgcrypt' 'perl' )
+makedepends=('cmake' 'nasm' 'xorg-font-util' 'xorg-util-macros' 'bigreqsproto'
+ 'compositeproto' 'damageproto' 'randrproto' 'resourceproto'
+ 'scrnsaverproto' 'videoproto' 'xcmiscproto' 'xf86vidmodeproto'
+ 'xtrans' 'mesa' 'glproto' 'dri2proto' 'imagemagick')
+options=(!libtool)
+conflicts=('tightvnc')
+source=(http://downloads.sourceforge.net/project/tigervnc/tigervnc/$pkgver/tigervnc-$pkgver.tar.bz2
+ ftp://ftp.freedesktop.org/pub/xorg/individual/xserver/xorg-server-${_xorgver}.tar.bz2
+ vncserver.service
+ vncviewer.desktop
+ gethomedir.patch
+ getmaster.patch)
+md5sums=('a5158228e64d14496821a39bf3851f1b'
+ '5d36a6483e8e301875131e8302c67727'
+ '0903d5a0dfa38e0b04964505b644585c'
+ '71cac0fb9701b0a041430f0fddfe00c8'
+ '22f1523a0eca56ad79cfabd0db6e2cf6'
+ 'e056a2502dfe0cb3b02e08cab689482f')
+
+prepare() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ cp -r ${srcdir}/xorg-server-${_xorgver}/* unix/xserver
+
+ patch -Np1 -i ${srcdir}/gethomedir.patch
+ patch -Np1 -i ${srcdir}/getmaster.patch
+}
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr
+ make
+
+ cd unix/xserver
+ patch -Np1 -i ../xserver114.patch
+ autoreconf -fiv
+ ./configure --prefix=/usr \
+ --disable-static --disable-xinerama --without-dtrace \
+ --disable-xorg --disable-xnest --disable-xvfb --disable-dmx \
+ --disable-xwin --disable-xephyr --disable-kdrive --with-pic \
+ --disable-config-dbus --disable-config-hal --disable-config-udev \
+ --disable-unit-tests --disable-devel-docs --disable-selective-werror \
+ --disable-dri --enable-dri2 --enable-glx --enable-glx-tls
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+ cd unix/xserver/hw/vnc
+ make DESTDIR=${pkgdir} install
+ sed -i 's/iconic/nowin/' ${pkgdir}/usr/bin/vncserver
+ install -Dm0644 $srcdir/vncserver.service $pkgdir/usr/lib/systemd/system/vncserver.service
+ install -Dm0644 $srcdir/vncviewer.desktop $pkgdir/usr/share/applications/vncviewer.desktop
+}
diff --git a/community/tigervnc/gethomedir.patch b/community/tigervnc/gethomedir.patch
new file mode 100644
index 000000000..5f3542de8
--- /dev/null
+++ b/community/tigervnc/gethomedir.patch
@@ -0,0 +1,20 @@
+diff -ur tigervnc-1.2.0.orig/unix/xserver/hw/vnc/Makefile.am tigervnc-1.2.0/unix/xserver/hw/vnc/Makefile.am
+--- tigervnc-1.2.0.orig/unix/xserver/hw/vnc/Makefile.am 2011-10-31 09:14:40.000000000 +0100
++++ tigervnc-1.2.0/unix/xserver/hw/vnc/Makefile.am 2012-09-06 19:44:04.431123087 +0200
+@@ -5,6 +5,7 @@
+ RDR_LIB=$(LIB_DIR)/rdr/librdr.la
+ NETWORK_LIB=$(LIB_DIR)/network/libnetwork.la
+ XREGION_LIB=$(LIB_DIR)/Xregion/libXregion.la
++OS_LIB=$(LIB_DIR)/os/libos.la
+ COMMON_LIBS=$(NETWORK_LIB) $(RFB_LIB) $(RDR_LIB) $(XREGION_LIB)
+
+ noinst_LTLIBRARIES = libvnccommon.la
+@@ -55,7 +56,7 @@
+
+ libvnc_la_LDFLAGS = -module -avoid-version
+
+-libvnc_la_LIBADD = libvnccommon.la $(COMMON_LIBS)
++libvnc_la_LIBADD = libvnccommon.la $(COMMON_LIBS) $(OS_LIB)
+
+ EXTRA_DIST = Xvnc.man
+
diff --git a/community/tigervnc/getmaster.patch b/community/tigervnc/getmaster.patch
new file mode 100644
index 000000000..cf6ce863f
--- /dev/null
+++ b/community/tigervnc/getmaster.patch
@@ -0,0 +1,96 @@
+diff -up tigervnc-1.3.0/unix/xserver/hw/vnc/InputXKB.cc.getmaster tigervnc-1.3.0/unix/xserver/hw/vnc/InputXKB.cc
+--- tigervnc-1.3.0/unix/xserver/hw/vnc/InputXKB.cc.getmaster 2013-07-12 09:30:50.551459439 +0100
++++ tigervnc-1.3.0/unix/xserver/hw/vnc/InputXKB.cc 2013-07-12 09:38:31.037480528 +0100
+@@ -232,10 +232,7 @@ void InputDevice::PrepareInputDevices(vo
+
+ unsigned InputDevice::getKeyboardState(void)
+ {
+- DeviceIntPtr master;
+-
+- master = GetMaster(keyboardDev, KEYBOARD_OR_FLOAT);
+- return XkbStateFieldFromRec(&master->key->xkbInfo->state);
++ return XkbStateFieldFromRec(&keyboardDev->master->key->xkbInfo->state);
+ }
+
+ unsigned InputDevice::getLevelThreeMask(void)
+@@ -256,7 +253,7 @@ unsigned InputDevice::getLevelThreeMask(
+ return 0;
+ }
+
+- xkb = GetMaster(keyboardDev, KEYBOARD_OR_FLOAT)->key->xkbInfo->desc;
++ xkb = keyboardDev->master->key->xkbInfo->desc;
+
+ act = XkbKeyActionPtr(xkb, keycode, state);
+ if (act == NULL)
+@@ -281,7 +278,7 @@ KeyCode InputDevice::pressShift(void)
+ if (state & ShiftMask)
+ return 0;
+
+- xkb = GetMaster(keyboardDev, KEYBOARD_OR_FLOAT)->key->xkbInfo->desc;
++ xkb = keyboardDev->master->key->xkbInfo->desc;
+ for (key = xkb->min_key_code; key <= xkb->max_key_code; key++) {
+ XkbAction *act;
+ unsigned char mask;
+@@ -318,7 +315,7 @@ std::list<KeyCode> InputDevice::releaseS
+ if (!(state & ShiftMask))
+ return keys;
+
+- master = GetMaster(keyboardDev, KEYBOARD_OR_FLOAT);
++ master = keyboardDev->master;
+ xkb = master->key->xkbInfo->desc;
+ for (key = xkb->min_key_code; key <= xkb->max_key_code; key++) {
+ XkbAction *act;
+@@ -371,7 +368,7 @@ KeyCode InputDevice::pressLevelThree(voi
+ return 0;
+ }
+
+- xkb = GetMaster(keyboardDev, KEYBOARD_OR_FLOAT)->key->xkbInfo->desc;
++ xkb = keyboardDev->master->key->xkbInfo->desc;
+
+ act = XkbKeyActionPtr(xkb, keycode, state);
+ if (act == NULL)
+@@ -399,7 +396,7 @@ std::list<KeyCode> InputDevice::releaseL
+ if (!(state & mask))
+ return keys;
+
+- master = GetMaster(keyboardDev, KEYBOARD_OR_FLOAT);
++ master = keyboardDev->master;
+ xkb = master->key->xkbInfo->desc;
+ for (key = xkb->min_key_code; key <= xkb->max_key_code; key++) {
+ XkbAction *act;
+@@ -440,7 +437,7 @@ KeyCode InputDevice::keysymToKeycode(Key
+ if (new_state != NULL)
+ *new_state = state;
+
+- xkb = GetMaster(keyboardDev, KEYBOARD_OR_FLOAT)->key->xkbInfo->desc;
++ xkb = keyboardDev->master->key->xkbInfo->desc;
+ for (key = xkb->min_key_code; key <= xkb->max_key_code; key++) {
+ unsigned int state_out;
+ KeySym dummy;
+@@ -497,7 +494,7 @@ bool InputDevice::isLockModifier(KeyCode
+ XkbDescPtr xkb;
+ XkbAction *act;
+
+- xkb = GetMaster(keyboardDev, KEYBOARD_OR_FLOAT)->key->xkbInfo->desc;
++ xkb = keyboardDev->master->key->xkbInfo->desc;
+
+ act = XkbKeyActionPtr(xkb, keycode, state);
+ if (act == NULL)
+@@ -535,7 +532,7 @@ bool InputDevice::isAffectedByNumLock(Ke
+ if (numlock_keycode == 0)
+ return false;
+
+- xkb = GetMaster(keyboardDev, KEYBOARD_OR_FLOAT)->key->xkbInfo->desc;
++ xkb = keyboardDev->master->key->xkbInfo->desc;
+
+ act = XkbKeyActionPtr(xkb, numlock_keycode, state);
+ if (act == NULL)
+@@ -569,7 +566,7 @@ KeyCode InputDevice::addKeysym(KeySym ke
+ KeySym *syms;
+ KeySym upper, lower;
+
+- master = GetMaster(keyboardDev, KEYBOARD_OR_FLOAT);
++ master = keyboardDev->master;
+ xkb = master->key->xkbInfo->desc;
+ for (key = xkb->max_key_code; key >= xkb->min_key_code; key--) {
+ if (XkbKeyNumGroups(xkb, key) == 0)
diff --git a/community/tigervnc/vncserver.service b/community/tigervnc/vncserver.service
new file mode 100644
index 000000000..a5bb02ade
--- /dev/null
+++ b/community/tigervnc/vncserver.service
@@ -0,0 +1,28 @@
+# The vncserver service unit file
+#
+# 1. Copy this file to /etc/systemd/system/vncserver@:<display>.service
+# 2. Edit User=
+# ("User=foo")
+# 3. Edit and vncserver parameters appropriately
+# ("/usr/bin/vncserver %i -arg1 -arg2 -argn")
+# 4. Run `systemctl --system daemon-reload`
+# 5. Run `systemctl enable vncserver@:<display>.service`
+#
+# DO NOT RUN THIS SERVICE if your local area network is untrusted!
+#
+# See the wiki page for more on security
+# https://wiki.archlinux.org/index.php/Vncserver
+
+[Unit]
+Description=Remote desktop service (VNC)
+After=syslog.target network.target
+
+[Service]
+Type=forking
+User=
+
+ExecStart=/usr/bin/vncserver %i
+ExecStop=/usr/bin/vncserver -kill %i
+
+[Install]
+WantedBy=multi-user.target
diff --git a/community/tigervnc/vncviewer.desktop b/community/tigervnc/vncviewer.desktop
new file mode 100644
index 000000000..5f6046db2
--- /dev/null
+++ b/community/tigervnc/vncviewer.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Encoding=UTF-8
+Type=Application
+Name=TigerVNC viewer
+Comment=TigerVNC viewer
+Exec=/usr/bin/vncviewer
+Icon=tigervnc.png
+Terminal=false
+StartupNotify=false
+Categories=Application; Network;