From c371a3f6b197cf4543aaa95eb6f9fc70242a71c1 Mon Sep 17 00:00:00 2001
From: Kevin Mihelich <kevin@archlinuxarm.org>
Date: Mon, 8 Jul 2013 17:44:40 +0000
Subject: [PATCH] added community/tigervnc

---
 community/tigervnc/PKGBUILD          | 76 +++++++++++++++++++++++++
 community/tigervnc/vncserver.service | 28 ++++++++++
 community/tigervnc/vncviewer.desktop | 10 ++++
 community/tigervnc/xserver114.patch  | 84 ++++++++++++++++++++++++++++
 4 files changed, 198 insertions(+)
 create mode 100644 community/tigervnc/PKGBUILD
 create mode 100644 community/tigervnc/vncserver.service
 create mode 100644 community/tigervnc/vncviewer.desktop
 create mode 100644 community/tigervnc/xserver114.patch

diff --git a/community/tigervnc/PKGBUILD b/community/tigervnc/PKGBUILD
new file mode 100644
index 000000000..b5d933db5
--- /dev/null
+++ b/community/tigervnc/PKGBUILD
@@ -0,0 +1,76 @@
+# $Id$
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Maintainer: Uroš Vampl <mobile.leecher at gmail dot com>
+
+# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
+#  - use -fPIC for v7
+
+pkgname=tigervnc
+pkgver=1.3.0
+pkgrel=1
+_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=('pam' 'gnutls' 'libjpeg-turbo' 'libxft' 'libxinerama' 'libxcursor'
+	 'libxtst' 'libxfont' 'pixman' 'xorg-xauth' 'xorg-xsetroot'
+	 'xkeyboard-config' 'libgl' 'libgcrypt' 'perl' 'xorg-xkbcomp'
+	 'fltk')
+makedepends=('cmake' 'nasm' 'xorg-font-util' 'xorg-util-macros' 'bigreqsproto'
+	     'compositeproto' 'damageproto' 'randrproto' 'resourceproto'
+	     'scrnsaverproto' 'videoproto' 'xcmiscproto' 'xf86vidmodeproto'
+	     'xtrans' 'mesa' 'glproto' 'dri2proto' 'imagemagick' 'librsvg')
+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
+	xserver114.patch)
+md5sums=('a5158228e64d14496821a39bf3851f1b'
+         '5d36a6483e8e301875131e8302c67727'
+         '0903d5a0dfa38e0b04964505b644585c'
+         '15c0405f920c3dac250692e8922578d1'
+         '928faf837ba5b1b34283f9f018df2f5e')
+
+prepare() {
+  cd ${srcdir}/${pkgname}-${pkgver}
+  cp -r ${srcdir}/xorg-server-${_xorgver}/* unix/xserver
+}
+
+build() {
+  if [ "$CARCH" == "armv7h" ]; then
+    CFLAGS="$CFLAGS -fPIC"
+    CXXFLAGS="$CXXFLAGS -fPIC"
+  fi
+
+  cd ${srcdir}/${pkgname}-${pkgver}
+  cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr -DUSE_INCLUDED_FLTK=yes
+  make
+  make -C media
+
+  cd unix/xserver
+  patch -Np1 -i ${srcdir}/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 -dm0755 $pkgdir/usr/share/icons
+  install -m0644 ${srcdir}/${pkgname}-${pkgver}/media/icons/* $pkgdir/usr/share/icons/
+  install -Dm0644 $srcdir/vncviewer.desktop $pkgdir/usr/share/applications/vncviewer.desktop
+}
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..b14e4fe2a
--- /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_32.png
+Terminal=false
+StartupNotify=false
+Categories=Application; Network;
diff --git a/community/tigervnc/xserver114.patch b/community/tigervnc/xserver114.patch
new file mode 100644
index 000000000..80dd6a225
--- /dev/null
+++ b/community/tigervnc/xserver114.patch
@@ -0,0 +1,84 @@
+diff -up xorg-server-20130109/configure.ac.vnc xorg-server-20130109/configure.ac
+--- xorg-server-20130109/configure.ac.vnc	2013-01-24 13:01:31.013267503 +0100
++++ xorg-server-20130109/configure.ac	2013-01-24 13:08:43.283941751 +0100
+@@ -72,6 +72,7 @@ dnl forcing an entire recompile.x
+ AC_CONFIG_HEADERS(include/version-config.h)
+ 
+ AM_PROG_AS
++AC_PROG_CXX
+ AC_PROG_LN_S
+ AC_LIBTOOL_WIN32_DLL
+ AC_DISABLE_STATIC
+@@ -1573,6 +1574,10 @@ if test "x$XVFB" = xyes; then
+ 	AC_SUBST([XVFB_SYS_LIBS])
+ fi
+ 
++dnl Xvnc DDX
++AC_SUBST([XVNC_CPPFLAGS], ["-DHAVE_DIX_CONFIG_H $XSERVER_CFLAGS"])
++AC_SUBST([XVNC_LIBS], ["$FB_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $MAIN_LIB"])
++AC_SUBST([XVNC_SYS_LIBS], ["$GLX_SYS_LIBS"])
+ 
+ dnl Xnest DDX
+ 
+@@ -1608,6 +1613,8 @@ if test "x$XORG" = xauto; then
+ fi
+ AC_MSG_RESULT([$XORG])
+ 
++AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
++
+ if test "x$XORG" = xyes; then
+ 	XORG_DDXINCS='-I$(top_srcdir)/hw/xfree86 -I$(top_srcdir)/hw/xfree86/include -I$(top_srcdir)/hw/xfree86/common'
+ 	XORG_OSINCS='-I$(top_srcdir)/hw/xfree86/os-support -I$(top_srcdir)/hw/xfree86/os-support/bus -I$(top_srcdir)/os'
+@@ -1826,7 +1833,6 @@ if test "x$XORG" = xyes; then
+ 	AC_DEFINE(XORG_SERVER, 1, [Building Xorg server])
+ 	AC_DEFINE(XORGSERVER, 1, [Building Xorg server])
+ 	AC_DEFINE(XFree86Server, 1, [Building XFree86 server])
+-	AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
+ 	AC_DEFINE(NEED_XF86_TYPES, 1, [Need XFree86 typedefs])
+ 	AC_DEFINE(NEED_XF86_PROTOTYPES, 1, [Need XFree86 helper functions])
+ 	AC_DEFINE(__XSERVERNAME__, "Xorg", [Name of X server])
+@@ -2291,6 +2297,7 @@ hw/dmx/Makefile
+ hw/dmx/man/Makefile
+ hw/vfb/Makefile
+ hw/vfb/man/Makefile
++hw/vnc/Makefile
+ hw/xnest/Makefile
+ hw/xnest/man/Makefile
+ hw/xwin/Makefile
+diff -up xorg-server-20130109/hw/Makefile.am.vnc xorg-server-20130109/hw/Makefile.am
+--- xorg-server-20130109/hw/Makefile.am.vnc	2013-01-10 06:06:16.000000000 +0100
++++ xorg-server-20130109/hw/Makefile.am	2013-01-24 13:08:43.283941751 +0100
+@@ -33,7 +33,8 @@ SUBDIRS =			\
+ 	$(XNEST_SUBDIRS)	\
+ 	$(DMX_SUBDIRS)		\
+ 	$(KDRIVE_SUBDIRS)	\
+-	$(XQUARTZ_SUBDIRS)
++	$(XQUARTZ_SUBDIRS)	\
++	vnc
+ 
+ DIST_SUBDIRS = dmx xfree86 vfb xnest xwin xquartz kdrive
+ 
+diff -up xorg-server-20130109/mi/miinitext.c.vnc xorg-server-20130109/mi/miinitext.c
+--- xorg-server-20130109/mi/miinitext.c.vnc	2013-01-10 06:06:16.000000000 +0100
++++ xorg-server-20130109/mi/miinitext.c	2013-01-24 13:08:43.283941751 +0100
+@@ -112,6 +112,10 @@ SOFTWARE.
+ #include "micmap.h"
+ #include "globals.h"
+ 
++#ifdef TIGERVNC
++extern void vncExtensionInit(INITARGS);
++#endif
++
+ /* The following is only a small first step towards run-time
+  * configurable extensions.
+  */
+@@ -302,6 +306,9 @@ static ExtensionModule staticExtensions[
+ #ifdef XSELINUX
+     {SELinuxExtensionInit, SELINUX_EXTENSION_NAME, &noSELinuxExtension},
+ #endif
++#ifdef TIGERVNC
++    {vncExtensionInit, "VNC-EXTENSION", NULL},
++#endif
+ };
+ 
+ static ExtensionModule *ExtensionModuleList = NULL;