Version bump, fixes bug 387729
authorRaúl Porcel <armin76@gentoo.org>
Sat, 12 Nov 2011 18:05:41 +0000 (18:05 +0000)
committerRaúl Porcel <armin76@gentoo.org>
Sat, 12 Nov 2011 18:05:41 +0000 (18:05 +0000)
Package-Manager: portage-2.1.10.30/cvs/Linux ia64

net-misc/tigervnc/ChangeLog
net-misc/tigervnc/Manifest
net-misc/tigervnc/files/xserver111.patch [new file with mode: 0644]
net-misc/tigervnc/tigervnc-1.1.0-r1.ebuild [new file with mode: 0644]
net-misc/tigervnc/tigervnc-1.1.0.ebuild [new file with mode: 0644]

index 421a18fb98e9fc40509d6d955c81760d5b9b0f20..a6a1cc731f77853c4ad794fa5dce2b61e11105ee 100644 (file)
@@ -1,6 +1,13 @@
 # ChangeLog for net-misc/tigervnc
 # Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/net-misc/tigervnc/ChangeLog,v 1.111 2011/11/05 18:55:14 armin76 Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-misc/tigervnc/ChangeLog,v 1.112 2011/11/12 18:05:41 armin76 Exp $
+
+*tigervnc-1.1.0-r1 (12 Nov 2011)
+*tigervnc-1.1.0 (12 Nov 2011)
+
+  12 Nov 2011; Raúl Porcel <armin76@gentoo.org> +files/xserver111.patch,
+  +tigervnc-1.1.0.ebuild, +tigervnc-1.1.0-r1.ebuild:
+  Version bump, fixes bug 387729
 
   05 Nov 2011; Raúl Porcel <armin76@gentoo.org>
   tigervnc-1.0.1_p20110618-r1.ebuild:
index 00368ccfb93b17bcc5df36a639317bdf2a84f2ac..f8e3c00bd2b07f450d3f208104eeec1fd017789b 100644 (file)
@@ -3,16 +3,21 @@ Hash: SHA1
 
 AUX tigervnc.confd 346 RMD160 07a4541c0d9ef5611afafa8db75d2caf2e7ab051 SHA1 a3b00e99fc68844a7d0be29c4a8caae3a8b5a491 SHA256 48b6ae4f3e9e528b3cd4bc1349ceed3cd1a403ab0f3a2a8dd57a4769f88ceafc
 AUX tigervnc.initd 1585 RMD160 2fb536e85fa490df5450bf6e9f0296beb17921b1 SHA1 389d095ce1c18b323208ac059992cbd539d5a6b4 SHA256 a705a1aacdc3149a52b222fb990c654a5b5b5133d24be675ab327ec9a0c6f0e6
+AUX xserver111.patch 6542 RMD160 0ef07d4dd2a5af434a74996f9416631d299e550e SHA1 8bd891c29b6fcb2f9381800701ca461083441332 SHA256 f3827d742211b77807f1a02a47a99dddafe9efefbf9be17a21932e50abd1e63b
 DIST tigervnc-1.0.1_p20110618.tar.bz2 9307564 RMD160 c86f8d47a48082d5162e58bb469e3e470f2caedd SHA1 5b6d710b0d86ec2ef68d67012eb7eede8635eac5 SHA256 38f95f824fc697728f1f13c3f31dbf85b559307824df14f962f642f05e68b5fd
+DIST tigervnc-1.1.0.tar.gz 2742707 RMD160 692ce76f38c229485ae75acb87f39f8844575e35 SHA1 a678745c231a37eea92c7c7c259f7495061a9a0d SHA256 594b70825a2c24863afd7b8dd2a5bc1935807118c6726e1d98396dee44d060f4
 DIST tigervnc.png 4958 RMD160 24ca257dac5de8d97672d943ee47f310af4fe837 SHA1 2f12a12a0f105c6f2ecc9aa306c63719f07b0062 SHA256 e0828aeb92ccaaf93e690e9ee5e17803de1cb140d3ca79fb756fe08ebbc4492e
 DIST xorg-server-1.10.4.tar.bz2 5386174 RMD160 13eeaf7497e63ecddba46010c075d27121e18aae SHA1 857d6377025c77851a3cc5f8ec2ce84164a2fdc6 SHA256 fafc16b97b9a61b62dfaa74e8d336baa0cea752ce9ed8103c4d212baa8031ca5
+DIST xorg-server-1.11.2.tar.bz2 4945939 RMD160 cc69cfd86a5a870d1433262dd1445a8603a9266a SHA1 b4de5c599c90bd08d3122866ba68152cd59a880e SHA256 fa415decf02027ca278b06254ccfbcceba2a83c2741405257ebf749da4a73cf2
 EBUILD tigervnc-1.0.1_p20110618-r1.ebuild 4550 RMD160 5362609ee5bb47b23ba8fe3219791a697ef49fb1 SHA1 57ccdc74bb801a13d9c431b2c46f3667fcca4087 SHA256 ffbddf412c8e445ebfc03e0a407857fea2422f4639f0fb24c0c5dc7e028e7133
-MISC ChangeLog 14608 RMD160 0cfac01bd77edd7760ef7eaea885ad215d70c460 SHA1 be497f8efaab5e8def50d3f01f259a2be1ce4501 SHA256 e69ee9a094c58cd2069336e64045dbc2144a75613bd5838fd5bacf9c39bd6bb1
+EBUILD tigervnc-1.1.0-r1.ebuild 4674 RMD160 e7fd5dc8a26ff46dcf88c2bef608c633fa81c833 SHA1 656d1893b65148666027ffd19526d73dd3168084 SHA256 299b1c1531e7757c2ed5a4fefb9ac1ac929d67a4f0af110fa59b31fd08d08e4e
+EBUILD tigervnc-1.1.0.ebuild 4632 RMD160 34025ade33219e6e7ce41334e46bf9af127389d6 SHA1 622f189aff6a6c629f36eef34f97b8f3c30e9476 SHA256 c3110fb5cd0671a28e707a6445a539f123e13c8eb7563e9d274daf261c3ca3e3
+MISC ChangeLog 14833 RMD160 43004fd1c987f8d35222e70ce57d32c3872cf8f0 SHA1 ad9de76470e09388c017d31cc80abda3998acb9f SHA256 c746300712d7fb09cc6b0d518f19ccfe1972780f5f6a8c3fd467f872c3783790
 MISC metadata.xml 335 RMD160 a1f13f76a1f6b93bfcda75e10afa92831f24e1a4 SHA1 7030f47cbe62c52bde156cacf6f123487ea7bee3 SHA256 821ea06553b929fa98b219ad2f17ca84dda361965182f46e030ddd3b2d950209
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2.0.17 (GNU/Linux)
 
-iEYEARECAAYFAk61hpcACgkQuQc30/atMkA/vwCgqP5iB/+J1PeTG2HCeDfhWqUn
-2usAn1JPUl7EdPLGclavnmpCa84EPLCL
-=o1mW
+iEYEARECAAYFAk6+tXsACgkQuQc30/atMkBLeACeOlwdMkqTzUcj1inQmO8RPRh4
+1GkAn3xC9+QhiQxMIexlBtk/SmDbMu8h
+=f6kx
 -----END PGP SIGNATURE-----
diff --git a/net-misc/tigervnc/files/xserver111.patch b/net-misc/tigervnc/files/xserver111.patch
new file mode 100644 (file)
index 0000000..18c0d46
--- /dev/null
@@ -0,0 +1,240 @@
+diff -up tigervnc-1.1.0/unix/xserver/hw/vnc/Input.cc.xorg111 tigervnc-1.1.0/unix/xserver/hw/vnc/Input.cc
+--- tigervnc-1.1.0/unix/xserver/hw/vnc/Input.cc.xorg111        2011-08-09 23:16:36.000000000 +0200
++++ tigervnc-1.1.0/unix/xserver/hw/vnc/Input.cc        2011-09-14 13:22:19.540000049 +0200
+@@ -82,10 +82,11 @@ static KeyCode KeysymToKeycode(KeySymsPt
+ /* Event queue is shared between all devices. */
+ #if XORG == 15
+ static xEvent *eventq = NULL;
+-#else
++#elif XORG < 111
+ static EventList *eventq = NULL;
+ #endif
+ 
++#if XORG < 111
+ static void initEventq(void)
+ {
+       /* eventq is never free()-ed because it exists during server life. */
+@@ -100,7 +101,9 @@ static void initEventq(void)
+ #endif
+       }
+ }
++#endif /* XORG < 111 */
+ 
++#if XORG < 111
+ static void enqueueEvents(DeviceIntPtr dev, int n)
+ {
+       int i;
+@@ -122,6 +125,7 @@ static void enqueueEvents(DeviceIntPtr d
+                          );
+       }
+ }
++#endif /* XORG < 111 */
+ 
+ InputDevice::InputDevice(rfb::VNCServerST *_server)
+       : server(_server), oldButtonMask(0)
+@@ -141,12 +145,17 @@ InputDevice::InputDevice(rfb::VNCServerS
+                                    keyboardProc, TRUE);
+       RegisterKeyboardDevice(keyboardDev);
+ #endif
++#if XORG < 111
+       initEventq();
++#endif
+ }
+ 
+ void InputDevice::PointerButtonAction(int buttonMask)
+ {
+-      int i, n;
++      int i;
++#if XORG < 111
++      int n;
++#endif
+ #if XORG >= 110
+       ValuatorMask mask;
+ #endif
+@@ -160,13 +169,17 @@ void InputDevice::PointerButtonAction(in
+ #if XORG < 110
+                       n = GetPointerEvents(eventq, pointerDev, action, i + 1,
+                                            POINTER_RELATIVE, 0, 0, NULL);
+-#else
++                      enqueueEvents(pointerDev, n);
++#elif XORG < 111
+                       valuator_mask_set_range(&mask, 0, 0, NULL);
+                       n = GetPointerEvents(eventq, pointerDev, action, i + 1,
+                                            POINTER_RELATIVE, &mask);
+-#endif
+                       enqueueEvents(pointerDev, n);
+-
++#else
++                      valuator_mask_set_range(&mask, 0, 0, NULL);
++                      QueuePointerEvents(pointerDev, action, i + 1,
++                                         POINTER_RELATIVE, &mask);
++#endif
+               }
+       }
+ 
+@@ -175,7 +188,10 @@ void InputDevice::PointerButtonAction(in
+ 
+ void InputDevice::PointerMove(const rfb::Point &pos)
+ {
+-      int n, valuators[2];
++      int valuators[2];
++#if XORG < 111
++      int n;
++#endif
+ #if XORG >= 110
+       ValuatorMask mask;
+ #endif
+@@ -190,12 +206,16 @@ void InputDevice::PointerMove(const rfb:
+ #if XORG < 110
+       n = GetPointerEvents(eventq, pointerDev, MotionNotify, 0, POINTER_ABSOLUTE, 0,
+                            2, valuators);
+-#else
++      enqueueEvents(pointerDev, n);
++#elif XORG < 111
+       valuator_mask_set_range(&mask, 0, 2, valuators);
+       n = GetPointerEvents(eventq, pointerDev, MotionNotify, 0, POINTER_ABSOLUTE,
+                            &mask);
+-#endif
+       enqueueEvents(pointerDev, n);
++#else
++      valuator_mask_set_range(&mask, 0, 2, valuators);
++      QueuePointerEvents(pointerDev, MotionNotify, 0, POINTER_ABSOLUTE, &mask);
++#endif
+ 
+       cursorPos = pos;
+ }
+@@ -299,14 +319,20 @@ void InputDevice::initInputDevice(void)
+ static inline void pressKey(DeviceIntPtr dev, int kc, bool down, const char *msg)
+ {
+       int action;
++#if XORG < 111
+       unsigned int n;
++#endif
+ 
+       if (msg != NULL)
+               vlog.debug("%s %d %s", msg, kc, down ? "down" : "up");
+ 
+       action = down ? KeyPress : KeyRelease;
+-      n = GetKeyboardEvents(eventq, dev, action, kc);
++#if XORG < 111
++      n = GetKeyboardEvents(eventq, dev, action, kc, NULL);
+       enqueueEvents(dev, n);
++#else
++      QueueKeyboardEvents(dev, action, kc, NULL);
++#endif
+ }
+ 
+ #define IS_PRESSED(keyc, keycode) \
+@@ -341,8 +367,11 @@ public:
+               int state, maxKeysPerMod, keycode;
+ #if XORG >= 17
+               KeyCode *modmap = NULL;
++              DeviceIntPtr master;
+ 
+-              state = XkbStateFieldFromRec(&dev->u.master->key->xkbInfo->state);
++              master = GetMaster(dev, MASTER_KEYBOARD);
++
++              state = XkbStateFieldFromRec(&master->key->xkbInfo->state);
+ #else
+               KeyClassPtr keyc = dev->key;
+               state = keyc->state;
+@@ -379,8 +408,10 @@ public:
+               KeyClassPtr keyc;
+ #if XORG >= 17
+               KeyCode *modmap = NULL;
++              DeviceIntPtr master;
+ 
+-              keyc = dev->u.master->key;
++              master = GetMaster(dev, MASTER_KEYBOARD);
++              keyc = master->key;
+               state = XkbStateFieldFromRec(&keyc->xkbInfo->state);
+ #else
+               keyc = dev->key;
+@@ -565,9 +596,7 @@ static inline int isModifier(KeySymsPtr
+ 
+ void InputDevice::keyEvent(rdr::U32 keysym, bool down)
+ {
+-#if XORG < 17
+       DeviceIntPtr master;
+-#endif
+       KeyClassPtr keyc;
+       KeySymsPtr keymap = NULL;
+       KeySym *map = NULL;
+@@ -596,7 +625,8 @@ void InputDevice::keyEvent(rdr::U32 keys
+       }
+ 
+ #if XORG >= 17
+-      keyc = keyboardDev->u.master->key;
++      master = GetMaster(keyboardDev, MASTER_KEYBOARD);
++      keyc = master->key;
+ 
+       keymap = XkbGetCoreMap(keyboardDev);
+       if (!keymap) {
+@@ -753,7 +783,7 @@ ModeSwitchFound:
+                       XkbApplyMappingChange(keyboardDev, keymap, minKeyCode,
+                                             maxKeyCode - minKeyCode + 1,
+                                             NULL, serverClient);
+-                      XkbCopyDeviceKeymap(keyboardDev->u.master, keyboardDev);
++                      XkbCopyDeviceKeymap(master, keyboardDev);
+ #endif /* XORG < 17 */
+                       break;
+               }
+diff -up tigervnc-1.1.0/unix/xserver/hw/vnc/xorg-version.h.xorg111 tigervnc-1.1.0/unix/xserver/hw/vnc/xorg-version.h
+--- tigervnc-1.1.0/unix/xserver/hw/vnc/xorg-version.h.xorg111  2011-08-09 23:16:36.000000000 +0200
++++ tigervnc-1.1.0/unix/xserver/hw/vnc/xorg-version.h  2011-09-12 16:51:36.958000000 +0200
+@@ -36,6 +36,8 @@
+ #define XORG 19
+ #elif XORG_VERSION_CURRENT < ((1 * 10000000) + (10 * 100000) + (99 * 1000))
+ #define XORG 110
++#elif XORG_VERSION_CURRENT < ((1 * 10000000) + (11 * 100000) + (99 * 1000))
++#define XORG 111
+ #else
+ #error "X.Org newer than 1.10 is not supported"
+ #endif
+diff -up tigervnc-1.1.0/unix/xserver/hw/vnc/xvnc.cc.xorg111 tigervnc-1.1.0/unix/xserver/hw/vnc/xvnc.cc
+--- tigervnc-1.1.0/unix/xserver/hw/vnc/xvnc.cc.xorg111 2011-08-09 23:16:36.000000000 +0200
++++ tigervnc-1.1.0/unix/xserver/hw/vnc/xvnc.cc 2011-09-14 13:49:23.751000543 +0200
+@@ -211,7 +211,11 @@ static void vfbFreeFramebufferMemory(vfb
+ 
+ extern "C" {
+ 
++#if XORG < 111
+ void ddxGiveUp()
++#else
++void ddxGiveUp(enum ExitCode error)
++#endif
+ {
+     int i;
+ 
+@@ -221,9 +225,17 @@ void ddxGiveUp()
+ }
+ 
+ void
++#if XORG < 111
+ AbortDDX()
++#else
++AbortDDX(enum ExitCode error)
++#endif
+ {
++#if XORG < 111
+     ddxGiveUp();
++#else
++    ddxGiveUp(error);
++#endif
+ }
+ 
+ #ifdef __DARWIN__
+@@ -668,8 +680,13 @@ vfbUninstallColormap(ColormapPtr pmap)
+     {
+       if (pmap->mid != pmap->pScreen->defColormap)
+       {
++#if XORG < 111
+           curpmap = (ColormapPtr) LookupIDByType(pmap->pScreen->defColormap,
+                                                  RT_COLORMAP);
++#else
++          dixLookupResourceByType((pointer *) &curpmap, pmap->pScreen->defColormap,
++                                  RT_COLORMAP, serverClient, DixUnknownAccess);
++#endif
+           (*pmap->pScreen->InstallColormap)(curpmap);
+       }
+     }
\ No newline at end of file
diff --git a/net-misc/tigervnc/tigervnc-1.1.0-r1.ebuild b/net-misc/tigervnc/tigervnc-1.1.0-r1.ebuild
new file mode 100644 (file)
index 0000000..7ae1ee8
--- /dev/null
@@ -0,0 +1,183 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-misc/tigervnc/tigervnc-1.1.0-r1.ebuild,v 1.1 2011/11/12 18:05:41 armin76 Exp $
+
+EAPI="1"
+
+inherit eutils toolchain-funcs multilib autotools
+
+XSERVER_VERSION="1.11.2"
+OPENGL_DIR="xorg-x11"
+
+DESCRIPTION="Remote desktop viewer display system"
+HOMEPAGE="http://www.tigervnc.org"
+#SRC_URI="mirror://gentoo/${P}.tar.bz2
+#      http://dev.gentoo.org/~armin76/dist/${P}.tar.bz2
+SRC_URI="mirror://sourceforge/tigervnc/${P}.tar.gz
+       mirror://gentoo/${PN}.png
+       server? ( ftp://ftp.freedesktop.org/pub/xorg/individual/xserver/xorg-server-${XSERVER_VERSION}.tar.bz2  )"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sh ~sparc ~x86"
+IUSE="nptl +opengl server +xorgmodule"
+
+RDEPEND="virtual/jpeg
+       sys-libs/zlib
+       media-libs/freetype
+       x11-libs/libSM
+       x11-libs/libXtst
+       app-admin/eselect-opengl
+       server? (
+               x11-libs/libXi
+               x11-libs/libXfont
+               x11-libs/libXmu
+               x11-libs/libxkbfile
+               x11-libs/libXrender
+               x11-libs/pixman
+               x11-apps/xauth
+               x11-apps/xsetroot
+               x11-misc/xkeyboard-config
+               media-fonts/font-adobe-100dpi
+               media-fonts/font-adobe-75dpi
+               media-fonts/font-alias
+               media-fonts/font-cursor-misc
+               media-fonts/font-misc-misc
+               xorgmodule? ( ~x11-base/xorg-server-${XSERVER_VERSION} )
+       )
+       !net-misc/vnc
+       !net-misc/tightvnc
+       !net-misc/xf4vnc"
+DEPEND="${RDEPEND}
+       amd64? ( dev-lang/nasm )
+       x86? ( dev-lang/nasm )
+       >=x11-proto/inputproto-1.5
+       >=x11-proto/xextproto-7.0.3
+       >=x11-proto/xproto-7.0.13
+       server? (
+               x11-misc/util-macros
+               x11-proto/bigreqsproto
+               x11-proto/compositeproto
+               x11-proto/damageproto
+               x11-proto/dri2proto
+               x11-proto/fixesproto
+               x11-proto/fontsproto
+               >=x11-proto/randrproto-1.2.99
+               x11-proto/resourceproto
+               x11-proto/scrnsaverproto
+               x11-proto/trapproto
+               x11-proto/videoproto
+               x11-proto/xcmiscproto
+               x11-proto/xineramaproto
+               x11-proto/xf86bigfontproto
+               x11-proto/xf86dgaproto
+               x11-proto/xf86driproto
+               x11-proto/xf86miscproto
+               x11-proto/xf86vidmodeproto
+               opengl? ( >=x11-proto/glproto-1.4.10 )
+               >=media-libs/mesa-7.1
+               >=x11-proto/renderproto-0.9.3
+               x11-libs/libpciaccess
+               >=x11-libs/xtrans-1.2.2
+       )"
+
+#S="${WORKDIR}/${PN}"
+
+pkg_setup() {
+       if ! use server ; then
+               echo
+               einfo "The 'server' USE flag will build tigervnc's server."
+               einfo "If '-server' is chosen only the client is built to save space."
+               einfo "Stop the build now if you need to add 'server' to USE flags.\n"
+               ebeep
+               epause 5
+       else
+               ewarn "Forcing on xorg-x11 for new enough glxtokens.h..."
+               OLD_IMPLEM="$(eselect opengl show)"
+               eselect opengl set ${OPENGL_DIR}
+       fi
+}
+
+switch_opengl_implem() {
+       # Switch to the xorg implementation.
+       # Use new opengl-update that will not reset user selected
+       # OpenGL interface ...
+       echo
+       eselect opengl set ${OLD_IMPLEM}
+}
+
+src_unpack() {
+       unpack ${A}
+       cd "${S}"
+
+       if use server ; then
+               cp -r "${WORKDIR}"/xorg-server-${XSERVER_VERSION}/* unix/xserver
+       fi
+
+       eautoreconf
+       cd unix
+
+       if use server ; then
+               epatch xserver110.patch
+               epatch "${FILESDIR}"/xserver111.patch
+               cd xserver
+               eautoreconf
+       fi
+}
+
+src_compile() {
+       econf --without-included-zlib --with-system-jpeg || die "econf failed"
+       emake || die "emake failed"
+
+       if use server ; then
+               cd unix/xserver
+               econf \
+                       --disable-xorg --disable-xnest --disable-xvfb --disable-dmx \
+                       --disable-xwin --disable-xephyr --disable-kdrive --with-pic \
+                       --disable-static --disable-xinerama \
+                       --disable-composite \
+                       --with-default-font-path=/usr/share/fonts/misc,/usr/share/fonts/75dpi,/usr/share/fonts/100dpi,/usr/share/fonts/TTF,/usr/share/fonts/Type1 \
+                       --enable-install-libxf86config \
+                       --enable-dri2 \
+                       --disable-config-dbus \
+                       --disable-config-hal \
+                       --with-xmlto=no \
+                       --disable-unit-tests \
+                       $(use_enable opengl glx) \
+                       $(use_enable nptl glx-tls) \
+                       || die "econf server failed"
+               emake || die "emake server failed"
+       fi
+}
+
+src_install() {
+       dodoc README.txt
+
+       cd unix
+       emake DESTDIR="${D}" install || die "emake install failed"
+       newman vncviewer/vncviewer.man vncviewer.1
+
+       newicon "${DISTDIR}"/tigervnc.png vncviewer.png
+       make_desktop_entry vncviewer vncviewer vncviewer Network
+
+       if use server ; then
+               cd xserver/hw/vnc
+               emake DESTDIR="${D}" install || die "emake install failed"
+               ! use xorgmodule && rm -rf "${D}"/usr/$(get_libdir)/xorg
+
+               newconfd "${FILESDIR}"/${PN}.confd ${PN}
+               newinitd "${FILESDIR}"/${PN}.initd ${PN}
+
+               rm "${D}"/usr/$(get_libdir)/xorg/modules/extensions/libvnc.la
+       else
+               cd "${D}"
+               for f in vncserver vncpasswd x0vncserver vncconfig; do
+                       rm usr/bin/$f
+                       rm usr/share/man/man1/$f.1
+               done
+       fi
+}
+
+pkg_postinst() {
+       use server && switch_opengl_implem
+}
\ No newline at end of file
diff --git a/net-misc/tigervnc/tigervnc-1.1.0.ebuild b/net-misc/tigervnc/tigervnc-1.1.0.ebuild
new file mode 100644 (file)
index 0000000..a77afc6
--- /dev/null
@@ -0,0 +1,182 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-misc/tigervnc/tigervnc-1.1.0.ebuild,v 1.1 2011/11/12 18:05:41 armin76 Exp $
+
+EAPI="1"
+
+inherit eutils toolchain-funcs multilib autotools
+
+XSERVER_VERSION="1.10.4"
+OPENGL_DIR="xorg-x11"
+
+DESCRIPTION="Remote desktop viewer display system"
+HOMEPAGE="http://www.tigervnc.org"
+#SRC_URI="mirror://gentoo/${P}.tar.bz2
+#      http://dev.gentoo.org/~armin76/dist/${P}.tar.bz2
+SRC_URI="mirror://sourceforge/tigervnc/${P}.tar.gz
+       mirror://gentoo/${PN}.png
+       server? ( ftp://ftp.freedesktop.org/pub/xorg/individual/xserver/xorg-server-${XSERVER_VERSION}.tar.bz2  )"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sh ~sparc ~x86"
+IUSE="nptl +opengl server +xorgmodule"
+
+RDEPEND="virtual/jpeg
+       sys-libs/zlib
+       media-libs/freetype
+       x11-libs/libSM
+       x11-libs/libXtst
+       app-admin/eselect-opengl
+       server? (
+               x11-libs/libXi
+               x11-libs/libXfont
+               x11-libs/libXmu
+               x11-libs/libxkbfile
+               x11-libs/libXrender
+               x11-libs/pixman
+               x11-apps/xauth
+               x11-apps/xsetroot
+               x11-misc/xkeyboard-config
+               media-fonts/font-adobe-100dpi
+               media-fonts/font-adobe-75dpi
+               media-fonts/font-alias
+               media-fonts/font-cursor-misc
+               media-fonts/font-misc-misc
+               xorgmodule? ( ~x11-base/xorg-server-${XSERVER_VERSION} )
+       )
+       !net-misc/vnc
+       !net-misc/tightvnc
+       !net-misc/xf4vnc"
+DEPEND="${RDEPEND}
+       amd64? ( dev-lang/nasm )
+       x86? ( dev-lang/nasm )
+       >=x11-proto/inputproto-1.5
+       >=x11-proto/xextproto-7.0.3
+       >=x11-proto/xproto-7.0.13
+       server? (
+               x11-misc/util-macros
+               x11-proto/bigreqsproto
+               x11-proto/compositeproto
+               x11-proto/damageproto
+               x11-proto/dri2proto
+               x11-proto/fixesproto
+               x11-proto/fontsproto
+               >=x11-proto/randrproto-1.2.99
+               x11-proto/resourceproto
+               x11-proto/scrnsaverproto
+               x11-proto/trapproto
+               x11-proto/videoproto
+               x11-proto/xcmiscproto
+               x11-proto/xineramaproto
+               x11-proto/xf86bigfontproto
+               x11-proto/xf86dgaproto
+               x11-proto/xf86driproto
+               x11-proto/xf86miscproto
+               x11-proto/xf86vidmodeproto
+               opengl? ( >=x11-proto/glproto-1.4.10 )
+               >=media-libs/mesa-7.1
+               >=x11-proto/renderproto-0.9.3
+               x11-libs/libpciaccess
+               >=x11-libs/xtrans-1.2.2
+       )"
+
+#S="${WORKDIR}/${PN}"
+
+pkg_setup() {
+       if ! use server ; then
+               echo
+               einfo "The 'server' USE flag will build tigervnc's server."
+               einfo "If '-server' is chosen only the client is built to save space."
+               einfo "Stop the build now if you need to add 'server' to USE flags.\n"
+               ebeep
+               epause 5
+       else
+               ewarn "Forcing on xorg-x11 for new enough glxtokens.h..."
+               OLD_IMPLEM="$(eselect opengl show)"
+               eselect opengl set ${OPENGL_DIR}
+       fi
+}
+
+switch_opengl_implem() {
+       # Switch to the xorg implementation.
+       # Use new opengl-update that will not reset user selected
+       # OpenGL interface ...
+       echo
+       eselect opengl set ${OLD_IMPLEM}
+}
+
+src_unpack() {
+       unpack ${A}
+       cd "${S}"
+
+       if use server ; then
+               cp -r "${WORKDIR}"/xorg-server-${XSERVER_VERSION}/* unix/xserver
+       fi
+
+       eautoreconf
+       cd unix
+
+       if use server ; then
+               epatch xserver110.patch
+               cd xserver
+               eautoreconf
+       fi
+}
+
+src_compile() {
+       econf --without-included-zlib --with-system-jpeg || die "econf failed"
+       emake || die "emake failed"
+
+       if use server ; then
+               cd unix/xserver
+               econf \
+                       --disable-xorg --disable-xnest --disable-xvfb --disable-dmx \
+                       --disable-xwin --disable-xephyr --disable-kdrive --with-pic \
+                       --disable-static --disable-xinerama \
+                       --disable-composite \
+                       --with-default-font-path=/usr/share/fonts/misc,/usr/share/fonts/75dpi,/usr/share/fonts/100dpi,/usr/share/fonts/TTF,/usr/share/fonts/Type1 \
+                       --enable-install-libxf86config \
+                       --enable-dri2 \
+                       --disable-config-dbus \
+                       --disable-config-hal \
+                       --with-xmlto=no \
+                       --disable-unit-tests \
+                       $(use_enable opengl glx) \
+                       $(use_enable nptl glx-tls) \
+                       || die "econf server failed"
+               emake || die "emake server failed"
+       fi
+}
+
+src_install() {
+       dodoc README.txt
+
+       cd unix
+       emake DESTDIR="${D}" install || die "emake install failed"
+       newman vncviewer/vncviewer.man vncviewer.1
+
+       newicon "${DISTDIR}"/tigervnc.png vncviewer.png
+       make_desktop_entry vncviewer vncviewer vncviewer Network
+
+       if use server ; then
+               cd xserver/hw/vnc
+               emake DESTDIR="${D}" install || die "emake install failed"
+               ! use xorgmodule && rm -rf "${D}"/usr/$(get_libdir)/xorg
+
+               newconfd "${FILESDIR}"/${PN}.confd ${PN}
+               newinitd "${FILESDIR}"/${PN}.initd ${PN}
+
+               rm "${D}"/usr/$(get_libdir)/xorg/modules/extensions/libvnc.la
+       else
+               cd "${D}"
+               for f in vncserver vncpasswd x0vncserver vncconfig; do
+                       rm usr/bin/$f
+                       rm usr/share/man/man1/$f.1
+               done
+       fi
+}
+
+pkg_postinst() {
+       use server && switch_opengl_implem
+}