public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Michael Palimaka" <kensington@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: net-misc/tigervnc/, net-misc/tigervnc/files/
Date: Thu,  2 Mar 2017 11:12:39 +0000 (UTC)	[thread overview]
Message-ID: <1488453147.5d6997c802d49ff00baf4b191b9e1b9e7f06660f.kensington@gentoo> (raw)

commit:     5d6997c802d49ff00baf4b191b9e1b9e7f06660f
Author:     Bruno Henc <hencb <AT> protonmail <DOT> ch>
AuthorDate: Sun Feb 19 22:11:55 2017 +0000
Commit:     Michael Palimaka <kensington <AT> gentoo <DOT> org>
CommitDate: Thu Mar  2 11:12:27 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5d6997c8

net-misc/tigervnc: add xorg-server-1.19 support

The latest release of tigervnc (1.7.1) doesn't
support xorg-server-1.19. Backporting a patch
and commit from the main trunk allows one to
build tigervnc-1.7.1 with the server use flag
for xorg-server-1.19.

The ebuild is tested to be building and performing
correctly with LXDE and GNOME on a localhost.
However, I recommend backporting other changes as
well to fix possible issues with xorg-server-1.19.

Since TigerVNC releases aren't as frequent,
backporting might be worth the effort.

Gentoo-bug: 603424

 net-misc/tigervnc/Manifest                         |   1 +
 .../files/tigervnc-1.7.1-xserver119-compat.patch   | 446 +++++++++++++++++++++
 net-misc/tigervnc/files/xserver119.patch           |  95 +++++
 net-misc/tigervnc/tigervnc-1.7.1-r1.ebuild         | 188 +++++++++
 4 files changed, 730 insertions(+)

diff --git a/net-misc/tigervnc/Manifest b/net-misc/tigervnc/Manifest
index f6a0feedd6c..06e4ed53d1f 100644
--- a/net-misc/tigervnc/Manifest
+++ b/net-misc/tigervnc/Manifest
@@ -2,3 +2,4 @@ DIST tigervnc-1.4.2-patches-0.1.tar.bz2 7361 SHA256 21c77708d303192108ffeef02acc
 DIST tigervnc-1.7.1.tar.gz 1406032 SHA256 3c021ec0bee4611020c0bcbab995b0ef2f6f1a46127a52b368827f3275527ccc SHA512 babdc362b28d7af80c7efbb3a1aadf158d7f29621afe36d785748af45e515e2718cf1011359db7b39c218770b3f3ee2767e08abc58091f018c08ba9739a3e68d WHIRLPOOL 178d6b3fb7569cfb2de5dd144031b441b02a865574928d20f1589fd6f933b9276477292182cde56e948ab75d2fc0bea4d79f71bcddb33f6057970a7caa08b2cc
 DIST tigervnc.png 4958 SHA256 e0828aeb92ccaaf93e690e9ee5e17803de1cb140d3ca79fb756fe08ebbc4492e SHA512 97f9a42e9b9f50f1c91de3b7d7991aa8965240fe4958d6da4e9f72f9baa4510ad615765f7c59d6e0a90c9d4b5fe53ad1547c766f2da45e4a6b6e29b03ced2b8b WHIRLPOOL bbf01f6702724bc4329d053bd3fbf856103371abce20f6f74aa3c2e5eed0eebcdcccd287788b1efbb8de3008cb484a8da5ccd1bd667727e4b0861f3bb550529c
 DIST xorg-server-1.18.4.tar.bz2 6009508 SHA256 278459b2c31d61a15655d95a72fb79930c480a6bb8cf9226e48a07df8b1d31c8 SHA512 2055948caa1437547ea823a70d8b24584b65338bb9f1bbf75e3ad7fd60ec9684378facaffa05b7ce496d904213cd192085a43ba889a1476d5fbc813b7e41b56b WHIRLPOOL f9ba5ffb49e6ac7ca20d64d27712a0a8f10c6560256a20e9f944d6438dc5f5eebe53daf6af110084da67a622e92874969047518e72ff181de0d64d83030d629f
+DIST xorg-server-1.19.1.tar.bz2 6041792 SHA256 79ae2cf39d3f6c4a91201d8dad549d1d774b3420073c5a70d390040aa965a7fb SHA512 37d413fdd96ce6b15ae20ca5028331498586044cfc7a6ab0acb99201b04063c69bcd06867f2dc33237b244ce2870a1c5a4be3cbe4560f2461894f46f8d5dbdd7 WHIRLPOOL 9fab4118e866e11a7742ba63d7f681490d43718a329416fb742e268fdf56f348bc9f1f2b5229fbaac98ce78f41fc1e9e5aa7587ee120fcccaba752ff4bac1555

diff --git a/net-misc/tigervnc/files/tigervnc-1.7.1-xserver119-compat.patch b/net-misc/tigervnc/files/tigervnc-1.7.1-xserver119-compat.patch
new file mode 100644
index 00000000000..192344257a5
--- /dev/null
+++ b/net-misc/tigervnc/files/tigervnc-1.7.1-xserver119-compat.patch
@@ -0,0 +1,446 @@
+From 3fed95eda27dfbeee6535f987f5d14a66f64749b Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede@redhat.com>
+Date: Wed, 5 Oct 2016 11:15:27 +0200
+Subject: [PATCH] Add xorg-xserver 1.19 support
+
+---
+ unix/xserver/hw/vnc/XserverDesktop.cc | 183 ++++++++++++++++++++++++++++++++++
+ unix/xserver/hw/vnc/XserverDesktop.h  |   7 ++
+ unix/xserver/hw/vnc/vncBlockHandler.c |  19 ++++
+ unix/xserver/hw/vnc/vncExtInit.cc     |  13 +++
+ unix/xserver/hw/vnc/vncExtInit.h      |   5 +
+ unix/xserver/hw/vnc/vncHooks.c        |  21 +++-
+ unix/xserver/hw/vnc/xorg-version.h    |   4 +-
+ unix/xserver119.patch                 |  95 ++++++++++++++++++
+ 8 files changed, 343 insertions(+), 4 deletions(-)
+ create mode 100644 unix/xserver119.patch
+
+diff --git a/unix/xserver/hw/vnc/XserverDesktop.cc b/unix/xserver/hw/vnc/XserverDesktop.cc
+index 4f82a54..8cc0b0b 100644
+--- a/unix/xserver/hw/vnc/XserverDesktop.cc
++++ b/unix/xserver/hw/vnc/XserverDesktop.cc
+@@ -90,6 +90,30 @@ class FileHTTPServer : public rfb::HTTPServer {
+   XserverDesktop* desktop;
+ };
+ 
++#if XORG >= 119
++extern "C" {
++/*
++ * xserver NotifyFd callbacks. Note we also expect write notifies to work,
++ * which only works with xserver >= 1.19.
++ */
++#include "os.h"
++
++static void HandleListenFd(int fd, int xevents, void *data)
++{
++  XserverDesktop *desktop = (XserverDesktop *)data;
++
++  desktop->handleListenFd(fd);
++}
++
++static void HandleSocketFd(int fd, int xevents, void *data)
++{
++  XserverDesktop *desktop = (XserverDesktop *)data;
++
++  desktop->handleSocketFd(fd, xevents);
++}
++
++}
++#endif
+ 
+ XserverDesktop::XserverDesktop(int screenIndex_,
+                                std::list<network::TcpListener*> listeners_,
+@@ -111,15 +135,35 @@ XserverDesktop::XserverDesktop(int screenIndex_,
+ 
+   if (!httpListeners.empty ())
+     httpServer = new FileHTTPServer(this);
++
++#if XORG >= 119
++  for (std::list<TcpListener*>::iterator i = listeners.begin();
++       i != listeners.end();
++       i++) {
++    SetNotifyFd((*i)->getFd(), HandleListenFd, X_NOTIFY_READ, this);
++  }
++
++  for (std::list<TcpListener*>::iterator i = httpListeners.begin();
++       i != httpListeners.end();
++       i++) {
++    SetNotifyFd((*i)->getFd(), HandleListenFd, X_NOTIFY_READ, this);
++  }
++#endif
+ }
+ 
+ XserverDesktop::~XserverDesktop()
+ {
+   while (!listeners.empty()) {
++#if XORG >= 119
++    RemoveNotifyFd(listeners.back()->getFd());
++#endif
+     delete listeners.back();
+     listeners.pop_back();
+   }
+   while (!httpListeners.empty()) {
++#if XORG >= 119
++    RemoveNotifyFd(listeners.back()->getFd());
++#endif
+     delete httpListeners.back();
+     httpListeners.pop_back();
+   }
+@@ -389,6 +433,140 @@ void XserverDesktop::add_copied(const rfb::Region &dest, const rfb::Point &delta
+   }
+ }
+ 
++#if XORG >= 119
++void XserverDesktop::handleListenFd(int fd)
++{
++  std::list<TcpListener*>::iterator i;
++  SocketServer *fd_server = NULL;
++  bool is_http = false;
++
++  for (i = listeners.begin(); i != listeners.end(); i++) {
++    if ((*i)->getFd() == fd) {
++      fd_server = server;
++      break;
++    }
++  }
++  if (httpServer && !fd_server) {
++    for (i = httpListeners.begin(); i != httpListeners.end(); i++) {
++      if ((*i)->getFd() == fd) {
++        fd_server = httpServer;
++        is_http = true;
++        break;
++      }
++    }
++  }
++  if (!fd_server) {
++    vlog.error("XserverDesktop::handleListenFd: Error cannot find fd");
++    return;
++  }
++
++  Socket* sock = (*i)->accept();
++  sock->outStream().setBlocking(false);
++  vlog.debug("new %sclient, sock %d", is_http ? "http " : "", sock->getFd());
++  fd_server->addSocket(sock);
++  SetNotifyFd(sock->getFd(), HandleSocketFd, X_NOTIFY_READ, this);
++}
++
++void XserverDesktop::handleSocketFd(int fd, int xevents)
++{
++  std::list<Socket*> sockets;
++  std::list<Socket*>::iterator i;
++  SocketServer *fd_server = NULL;
++  bool is_http = false;
++
++  server->getSockets(&sockets);
++  for (i = sockets.begin(); i != sockets.end(); i++) {
++    if ((*i)->getFd() == fd) {
++      fd_server = server;
++      break;
++    }
++  }
++  if (httpServer && !fd_server) {
++    httpServer->getSockets(&sockets);
++    for (i = sockets.begin(); i != sockets.end(); i++) {
++      if ((*i)->getFd() == fd) {
++        fd_server = httpServer;
++        is_http = true;
++        break;
++      }
++    }
++  }
++  if (!fd_server) {
++    vlog.error("XserverDesktop::handleSocketFd: Error cannot find fd");
++    return;
++  }
++
++  if (xevents & X_NOTIFY_READ)
++    fd_server->processSocketReadEvent(*i);
++
++  if (xevents & X_NOTIFY_WRITE)
++    fd_server->processSocketWriteEvent(*i);
++
++  if ((*i)->isShutdown()) {
++    vlog.debug("%sclient gone, sock %d", is_http ? "http " : "", fd);
++    RemoveNotifyFd(fd);
++    fd_server->removeSocket(*i);
++    if (!is_http)
++      vncClientGone(fd);
++    delete (*i);
++  }
++}
++
++void XserverDesktop::blockHandler(int* timeout)
++{
++  // We don't have a good callback for when we can init input devices[1],
++  // so we abuse the fact that this routine will be called first thing
++  // once the dix is done initialising.
++  // [1] Technically Xvnc has InitInput(), but libvnc.so has nothing.
++  vncInitInputDevice();
++
++  try {
++    std::list<Socket*> sockets;
++    std::list<Socket*>::iterator i;
++    server->getSockets(&sockets);
++    for (i = sockets.begin(); i != sockets.end(); i++) {
++      int fd = (*i)->getFd();
++      if ((*i)->isShutdown()) {
++        vlog.debug("client gone, sock %d",fd);
++        server->removeSocket(*i);
++        vncClientGone(fd);
++        delete (*i);
++      } else {
++        /* Update existing NotifyFD to listen for write (or not) */
++        if ((*i)->outStream().bufferUsage() > 0)
++          SetNotifyFd(fd, HandleSocketFd, X_NOTIFY_READ | X_NOTIFY_WRITE, this);
++        else
++          SetNotifyFd(fd, HandleSocketFd, X_NOTIFY_READ, this);
++      }
++    }
++    if (httpServer) {
++      httpServer->getSockets(&sockets);
++      for (i = sockets.begin(); i != sockets.end(); i++) {
++        int fd = (*i)->getFd();
++        if ((*i)->isShutdown()) {
++          vlog.debug("http client gone, sock %d",fd);
++          httpServer->removeSocket(*i);
++          delete (*i);
++        } else {
++          /* Update existing NotifyFD to listen for write (or not) */
++          if ((*i)->outStream().bufferUsage() > 0)
++            SetNotifyFd(fd, HandleSocketFd, X_NOTIFY_READ | X_NOTIFY_WRITE, this);
++          else
++            SetNotifyFd(fd, HandleSocketFd, X_NOTIFY_READ, this);
++        }
++      }
++    }
++
++    int nextTimeout = server->checkTimeouts();
++    if (nextTimeout > 0 && (*timeout == -1 || nextTimeout < *timeout))
++      *timeout = nextTimeout;
++  } catch (rdr::Exception& e) {
++    vlog.error("XserverDesktop::blockHandler: %s",e.str());
++  }
++}
++
++#else
++
+ void XserverDesktop::readBlockHandler(fd_set* fds, struct timeval ** timeout)
+ {
+   // We don't have a good callback for when we can init input devices[1],
+@@ -603,10 +781,15 @@ void XserverDesktop::writeWakeupHandler(fd_set* fds, int nfds)
+   }
+ }
+ 
++#endif
++
+ void XserverDesktop::addClient(Socket* sock, bool reverse)
+ {
+   vlog.debug("new client, sock %d reverse %d",sock->getFd(),reverse);
+   server->addSocket(sock, reverse);
++#if XORG >= 119
++  SetNotifyFd(sock->getFd(), HandleSocketFd, X_NOTIFY_READ, this);
++#endif
+ }
+ 
+ void XserverDesktop::disconnectClients()
+diff --git a/unix/xserver/hw/vnc/XserverDesktop.h b/unix/xserver/hw/vnc/XserverDesktop.h
+index c069028..9e77627 100644
+--- a/unix/xserver/hw/vnc/XserverDesktop.h
++++ b/unix/xserver/hw/vnc/XserverDesktop.h
+@@ -38,6 +38,7 @@
+ #include <rfb/VNCServerST.h>
+ #include <rdr/SubstitutingInStream.h>
+ #include "Input.h"
++#include "xorg-version.h"
+ 
+ namespace rfb {
+   class VNCServerST;
+@@ -69,10 +70,16 @@ class XserverDesktop : public rfb::SDesktop, public rfb::FullFramePixelBuffer,
+                  const unsigned char *rgbaData);
+   void add_changed(const rfb::Region &region);
+   void add_copied(const rfb::Region &dest, const rfb::Point &delta);
++#if XORG >= 119
++  void handleListenFd(int fd);
++  void handleSocketFd(int fd, int xevents);
++  void blockHandler(int* timeout);
++#else
+   void readBlockHandler(fd_set* fds, struct timeval ** timeout);
+   void readWakeupHandler(fd_set* fds, int nfds);
+   void writeBlockHandler(fd_set* fds, struct timeval ** timeout);
+   void writeWakeupHandler(fd_set* fds, int nfds);
++#endif
+   void addClient(network::Socket* sock, bool reverse);
+   void disconnectClients();
+ 
+diff --git a/unix/xserver/hw/vnc/vncBlockHandler.c b/unix/xserver/hw/vnc/vncBlockHandler.c
+index 4e44478..baebc3d 100644
+--- a/unix/xserver/hw/vnc/vncBlockHandler.c
++++ b/unix/xserver/hw/vnc/vncBlockHandler.c
+@@ -30,6 +30,23 @@
+ 
+ #include "vncExtInit.h"
+ #include "vncBlockHandler.h"
++#include "xorg-version.h"
++
++#if XORG >= 119
++
++static void vncBlockHandler(void* data, void* timeout)
++{
++  vncCallBlockHandlers(timeout);
++}
++
++void vncRegisterBlockHandlers(void)
++{
++  if (!RegisterBlockAndWakeupHandlers(vncBlockHandler,
++                                      (ServerWakeupHandlerProcPtr)NoopDDA, 0))
++    FatalError("RegisterBlockAndWakeupHandlers() failed\n");
++}
++
++#else
+ 
+ static void vncBlockHandler(void * data, OSTimePtr t, void * readmask);
+ static void vncWakeupHandler(void * data, int nfds, void * readmask);
+@@ -144,3 +161,5 @@ static void vncWriteWakeupHandlerFallback(void)
+ 
+   vncWriteWakeupHandler(ret, &fallbackFds);
+ }
++
++#endif
+diff --git a/unix/xserver/hw/vnc/vncExtInit.cc b/unix/xserver/hw/vnc/vncExtInit.cc
+index dea3cb8..9d70e44 100644
+--- a/unix/xserver/hw/vnc/vncExtInit.cc
++++ b/unix/xserver/hw/vnc/vncExtInit.cc
+@@ -249,6 +249,17 @@ int vncExtensionIsActive(int scrIdx)
+   return (desktop[scrIdx] != NULL);
+ }
+ 
++#if XORG >= 119
++
++void vncCallBlockHandlers(int* timeout)
++{
++  for (int scr = 0; scr < vncGetScreenCount(); scr++)
++    if (desktop[scr])
++      desktop[scr]->blockHandler(timeout);
++}
++
++#else
++
+ void vncCallReadBlockHandlers(fd_set * fds, struct timeval ** timeout)
+ {
+   for (int scr = 0; scr < vncGetScreenCount(); scr++)
+@@ -277,6 +288,8 @@ void vncCallWriteWakeupHandlers(fd_set * fds, int nfds)
+       desktop[scr]->writeWakeupHandler(fds, nfds);
+ }
+ 
++#endif
++
+ int vncGetAvoidShiftNumLock(void)
+ {
+   return (bool)avoidShiftNumLock;
+diff --git a/unix/xserver/hw/vnc/vncExtInit.h b/unix/xserver/hw/vnc/vncExtInit.h
+index 9785d11..3164528 100644
+--- a/unix/xserver/hw/vnc/vncExtInit.h
++++ b/unix/xserver/hw/vnc/vncExtInit.h
+@@ -22,6 +22,7 @@
+ #include <stdint.h>
+ #include <stddef.h>
+ #include <sys/select.h>
++#include "xorg-version.h"
+ 
+ // Only from C++
+ #ifdef __cplusplus
+@@ -50,10 +51,14 @@ extern int vncInetdSock;
+ void vncExtensionInit(void);
+ int vncExtensionIsActive(int scrIdx);
+ 
++#if XORG >= 119
++void vncCallBlockHandlers(int* timeout);
++#else
+ void vncCallReadBlockHandlers(fd_set * fds, struct timeval ** timeout);
+ void vncCallReadWakeupHandlers(fd_set * fds, int nfds);
+ void vncCallWriteBlockHandlers(fd_set * fds, struct timeval ** timeout);
+ void vncCallWriteWakeupHandlers(fd_set * fds, int nfds);
++#endif
+ 
+ int vncGetAvoidShiftNumLock(void);
+ 
+diff --git a/unix/xserver/hw/vnc/vncHooks.c b/unix/xserver/hw/vnc/vncHooks.c
+index 22ea9ea..29f3f8b 100644
+--- a/unix/xserver/hw/vnc/vncHooks.c
++++ b/unix/xserver/hw/vnc/vncHooks.c
+@@ -128,9 +128,11 @@ static Bool vncHooksDisplayCursor(DeviceIntPtr pDev,
+ #if XORG <= 112
+ static void vncHooksBlockHandler(int i, pointer blockData, pointer pTimeout,
+                                  pointer pReadmask);
+-#else
++#elif XORG <= 118
+ static void vncHooksBlockHandler(ScreenPtr pScreen, void * pTimeout,
+                                  void * pReadmask);
++#else
++static void vncHooksBlockHandler(ScreenPtr pScreen, void * pTimeout);
+ #endif
+ #ifdef RENDER
+ static void vncHooksComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask, 
+@@ -716,9 +718,11 @@ static Bool vncHooksDisplayCursor(DeviceIntPtr pDev,
+ #if XORG <= 112
+ static void vncHooksBlockHandler(int i, pointer blockData, pointer pTimeout,
+                                  pointer pReadmask)
+-#else
++#elif XORG <= 118
+ static void vncHooksBlockHandler(ScreenPtr pScreen_, void * pTimeout,
+                                  void * pReadmask)
++#else
++static void vncHooksBlockHandler(ScreenPtr pScreen_, void * pTimeout)
+ #endif
+ {
+ #if XORG <= 112
+@@ -731,8 +735,10 @@ static void vncHooksBlockHandler(ScreenPtr pScreen_, void * pTimeout,
+ 
+ #if XORG <= 112
+   (*pScreen->BlockHandler) (i, blockData, pTimeout, pReadmask);
+-#else
++#elif XORG <= 118
+   (*pScreen->BlockHandler) (pScreen, pTimeout, pReadmask);
++#else
++  (*pScreen->BlockHandler) (pScreen, pTimeout);
+ #endif
+ 
+   vncHooksScreen->ignoreHooks--;
+@@ -1033,12 +1039,21 @@ static void vncHooksCopyClip(GCPtr dst, GCPtr src) {
+ 
+ // Unwrap and rewrap helpers
+ 
++#if XORG >= 116
++#define GC_OP_PROLOGUE(pGC, name)\
++    vncHooksGCPtr pGCPriv = vncHooksGCPrivate(pGC);\
++    const GCFuncs *oldFuncs = pGC->funcs;\
++    pGC->funcs = pGCPriv->wrappedFuncs;\
++    pGC->ops = pGCPriv->wrappedOps; \
++    DBGPRINT((stderr,"vncHooks" #name " called\n"))
++#else
+ #define GC_OP_PROLOGUE(pGC, name)\
+     vncHooksGCPtr pGCPriv = vncHooksGCPrivate(pGC);\
+     GCFuncs *oldFuncs = pGC->funcs;\
+     pGC->funcs = pGCPriv->wrappedFuncs;\
+     pGC->ops = pGCPriv->wrappedOps; \
+     DBGPRINT((stderr,"vncHooks" #name " called\n"))
++#endif
+ 
+ #define GC_OP_EPILOGUE(pGC)\
+     pGCPriv->wrappedOps = pGC->ops;\
+diff --git a/unix/xserver/hw/vnc/xorg-version.h b/unix/xserver/hw/vnc/xorg-version.h
+index 60610cb..9d1c0eb 100644
+--- a/unix/xserver/hw/vnc/xorg-version.h
++++ b/unix/xserver/hw/vnc/xorg-version.h
+@@ -50,8 +50,10 @@
+ #define XORG 117
+ #elif XORG_VERSION_CURRENT < ((1 * 10000000) + (18 * 100000) + (99 * 1000))
+ #define XORG 118
++#elif XORG_VERSION_CURRENT < ((1 * 10000000) + (19 * 100000) + (99 * 1000))
++#define XORG 119
+ #else
+-#error "X.Org newer than 1.18 is not supported"
++#error "X.Org newer than 1.19 is not supported"
+ #endif
+ 
+ #endif

diff --git a/net-misc/tigervnc/files/xserver119.patch b/net-misc/tigervnc/files/xserver119.patch
new file mode 100644
index 00000000000..614f104a4d4
--- /dev/null
+++ b/net-misc/tigervnc/files/xserver119.patch
@@ -0,0 +1,95 @@
+diff -up xserver/configure.ac.xserver116-rebased xserver/configure.ac
+--- xserver/configure.ac.xserver116-rebased	2016-09-29 13:14:45.595441590 +0200
++++ xserver/configure.ac	2016-09-29 13:14:45.631442006 +0200
+@@ -74,6 +74,7 @@ dnl forcing an entire recompile.x
+ AC_CONFIG_HEADERS(include/version-config.h)
+ 
+ AM_PROG_AS
++AC_PROG_CXX
+ AC_PROG_LN_S
+ LT_PREREQ([2.2])
+ LT_INIT([disable-static win32-dll])
+@@ -1863,6 +1864,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 $DRI3_LIB $PRESENT_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
+ 
+@@ -1898,6 +1903,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'
+@@ -2116,7 +2123,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])
+@@ -2691,6 +2697,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 xserver/hw/Makefile.am.xserver116-rebased xserver/hw/Makefile.am
+--- xserver/hw/Makefile.am.xserver116-rebased	2016-09-29 13:14:45.601441659 +0200
++++ xserver/hw/Makefile.am	2016-09-29 13:14:45.631442006 +0200
+@@ -38,7 +38,8 @@ SUBDIRS =			\
+ 	$(DMX_SUBDIRS)		\
+ 	$(KDRIVE_SUBDIRS)	\
+ 	$(XQUARTZ_SUBDIRS)	\
+-	$(XWAYLAND_SUBDIRS)
++	$(XWAYLAND_SUBDIRS)	\
++	vnc
+ 
+ DIST_SUBDIRS = dmx xfree86 vfb xnest xwin xquartz kdrive xwayland
+ 
+diff -up xserver/mi/miinitext.c.xserver116-rebased xserver/mi/miinitext.c
+--- xserver/mi/miinitext.c.xserver116-rebased	2016-09-29 13:14:45.618441855 +0200
++++ xserver/mi/miinitext.c	2016-09-29 13:14:45.631442006 +0200
+@@ -114,6 +114,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.
+  */
+@@ -238,6 +242,9 @@ EnableDisableExtensionError(const char *
+ 
+ /* List of built-in (statically linked) extensions */
+ static const ExtensionModule staticExtensions[] = {
++#ifdef TIGERVNC
++    {vncExtensionInit, "VNC-EXTENSION", NULL},
++#endif
+     {GEExtensionInit, "Generic Event Extension", &noGEExtension},
+     {ShapeExtensionInit, "SHAPE", NULL},
+ #ifdef MITSHM
+--- xserver/include/os.h~	2016-10-03 09:07:29.000000000 +0200
++++ xserver/include/os.h	2016-10-03 14:13:00.013654506 +0200
+@@ -621,7 +621,7 @@
+ extern _X_EXPORT void
+ LogClose(enum ExitCode error);
+ extern _X_EXPORT Bool
+-LogSetParameter(LogParameter param, int value);
++LogSetParameter(enum _LogParameter param, int value);
+ extern _X_EXPORT void
+ LogVWrite(int verb, const char *f, va_list args)
+ _X_ATTRIBUTE_PRINTF(2, 0);

diff --git a/net-misc/tigervnc/tigervnc-1.7.1-r1.ebuild b/net-misc/tigervnc/tigervnc-1.7.1-r1.ebuild
new file mode 100644
index 00000000000..164dbb1670f
--- /dev/null
+++ b/net-misc/tigervnc/tigervnc-1.7.1-r1.ebuild
@@ -0,0 +1,188 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+CMAKE_IN_SOURCE_BUILD=1
+
+inherit autotools cmake-utils eutils flag-o-matic java-pkg-opt-2 systemd
+
+XSERVER_VERSION="1.19.1"
+
+DESCRIPTION="Remote desktop viewer display system"
+HOMEPAGE="http://www.tigervnc.org"
+SRC_URI="https://github.com/TigerVNC/tigervnc/archive/v${PV}.tar.gz -> ${P}.tar.gz
+	https://dev.gentoo.org/~armin76/dist/tigervnc-1.4.2-patches-0.1.tar.bz2
+	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 ~mips ~ppc ~ppc64 ~sh ~sparc ~x86"
+IUSE="+drm gnutls java +opengl pam server +xorgmodule"
+
+CDEPEND="virtual/jpeg:0
+	sys-libs/zlib
+	>=x11-libs/libXtst-1.0.99.2
+	>=x11-libs/fltk-1.3.1
+	gnutls? ( net-libs/gnutls:= )
+	pam? ( virtual/pam )
+	server? (
+		dev-lang/perl
+		>=x11-libs/libXi-1.2.99.1
+		>=x11-libs/libXfont-1.4.2
+		>=x11-libs/libxkbfile-1.0.4
+		x11-libs/libXrender
+		>=x11-libs/pixman-0.27.2
+		>=x11-apps/xauth-1.0.3
+		x11-apps/xsetroot
+		>=x11-misc/xkeyboard-config-2.4.1-r3
+		opengl? ( >=app-eselect/eselect-opengl-1.3.1-r1 )
+		xorgmodule? ( =x11-base/xorg-server-${XSERVER_VERSION%.*}* )
+		drm? ( x11-libs/libdrm )
+	)"
+
+RDEPEND="${CDEPEND}
+	java? ( >=virtual/jre-1.5:* )
+	!net-misc/vnc
+	!net-misc/tightvnc
+	!net-misc/xf4vnc"
+
+DEPEND="${CDEPEND}
+	amd64? ( dev-lang/nasm )
+	x86? ( dev-lang/nasm )
+	>=x11-proto/inputproto-2.2.99.1
+	>=x11-proto/xextproto-7.2.99.901
+	>=x11-proto/xproto-7.0.26
+	java? ( >=virtual/jdk-1.5 )
+	server?	(
+		virtual/pkgconfig
+		media-fonts/font-util
+		x11-misc/util-macros
+		>=x11-proto/bigreqsproto-1.1.0
+		>=x11-proto/compositeproto-0.4
+		>=x11-proto/damageproto-1.1
+		>=x11-proto/fixesproto-5.0
+		>=x11-proto/fontsproto-2.1.3
+		>=x11-proto/glproto-1.4.17
+		>=x11-proto/randrproto-1.4.0
+		>=x11-proto/renderproto-0.11
+		>=x11-proto/resourceproto-1.2.0
+		>=x11-proto/scrnsaverproto-1.1
+		>=x11-proto/videoproto-2.2.2
+		>=x11-proto/xcmiscproto-1.2.0
+		>=x11-proto/xineramaproto-1.1.3
+		>=x11-libs/xtrans-1.3.3
+		>=x11-proto/dri2proto-2.8
+		opengl? ( >=media-libs/mesa-10.3.4-r1 )
+	)"
+
+PATCHES=(
+	"${WORKDIR}"/patches/010_libvnc-os.patch
+	"${WORKDIR}"/patches/030_manpages.patch
+	"${WORKDIR}"/patches/055_xstartup.patch
+)
+
+src_prepare() {
+	if use server ; then
+		cp -r "${WORKDIR}"/xorg-server-${XSERVER_VERSION}/. unix/xserver || die
+	fi
+
+	default
+
+	if use server; then
+		eapply "${FILESDIR}/${PN}-1.7.1-xserver119-compat.patch"
+		cd unix/xserver || die
+		eapply "${FILESDIR}/xserver119.patch"
+		eautoreconf
+	fi
+}
+
+src_configure() {
+	use arm || use hppa && append-flags "-fPIC"
+
+	local mycmakeargs=(
+		-DENABLE_GNUTLS=$(usex gnutls)
+		-DENABLE_PAM=$(usex pam)
+		-DBUILD_JAVA=$(usex java)
+	)
+
+	cmake-utils_src_configure
+
+	if use server; then
+		cd unix/xserver || die
+		econf \
+			$(use_enable opengl glx) \
+			$(use_enable drm libdrm) \
+			--disable-config-hal \
+			--disable-config-udev \
+			--disable-devel-docs \
+			--disable-dmx \
+			--disable-dri \
+			--disable-dri3 \
+			--disable-glamor \
+			--disable-kdrive \
+			--disable-libunwind \
+			--disable-linux-acpi \
+			--disable-record \
+			--disable-selective-werror \
+			--disable-silent-rules \
+			--disable-static \
+			--disable-tslib \
+			--disable-unit-tests \
+			--disable-xephyr \
+			--disable-xinerama \
+			--disable-xnest \
+			--disable-xorg \
+			--disable-xvfb \
+			--disable-xwin \
+			--disable-xwayland \
+			--enable-dri2 \
+			--with-pic \
+			--without-dtrace \
+			--disable-present \
+			--disable-unit-tests
+	fi
+}
+
+src_compile() {
+	cmake-utils_src_compile
+
+	if use server; then
+		# deps of the vnc module and the module itself
+		local d subdirs=(
+			fb xfixes Xext dbe $(usex opengl glx "") randr render damageext miext Xi xkb
+			composite dix mi os hw/vnc
+		)
+		for d in "${subdirs[@]}"; do
+			emake -C unix/xserver/"${d}"
+		done
+	fi
+}
+
+src_install() {
+	cmake-utils_src_install
+
+	newicon "${DISTDIR}"/tigervnc.png vncviewer.png
+	make_desktop_entry vncviewer vncviewer vncviewer Network
+
+	if use server ; then
+		emake -C unix/xserver/hw/vnc DESTDIR="${D}" install
+		if ! use xorgmodule; then
+			rm -r "${ED%/}"/usr/$(get_libdir)/xorg || die
+		else
+			rm "${ED%/}"/usr/$(get_libdir)/xorg/modules/extensions/libvnc.la || die
+		fi
+
+		newconfd "${FILESDIR}"/${PN}.confd ${PN}
+		newinitd "${FILESDIR}"/${PN}.initd ${PN}
+		systemd_douserunit contrib/systemd/user/vncserver@.service
+	else
+		local f
+		cd "${ED}" || die
+		for f in vncserver vncpasswd x0vncserver vncconfig; do
+			rm usr/bin/$f || die
+			rm usr/share/man/man1/$f.1 || die
+		done
+	fi
+}


             reply	other threads:[~2017-03-02 11:12 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-02 11:12 Michael Palimaka [this message]
  -- strict thread matches above, loose matches on Subject: below --
2024-09-01 10:56 [gentoo-commits] repo/gentoo:master commit in: net-misc/tigervnc/, net-misc/tigervnc/files/ Viorel Munteanu
2024-07-27 19:36 Viorel Munteanu
2024-06-22  7:57 Viorel Munteanu
2023-08-03  6:00 Viorel Munteanu
2023-06-24  9:08 Viorel Munteanu
2023-05-03 17:06 Viorel Munteanu
2023-03-31  7:03 Viorel Munteanu
2022-05-13 20:04 Sam James
2022-03-22 18:01 Sam James
2021-12-07 23:45 Sam James
2021-09-17  2:34 Sam James
2018-12-15 19:10 Matt Turner
2018-07-23  8:46 Tony Vroon
2017-11-27 15:56 Alice Ferrazzi
2017-01-26 10:26 Michael Palimaka
2017-01-25 18:05 Matt Turner
2016-01-29 15:55 Michał Górny
2016-01-09 11:44 Jeroen Roovers

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1488453147.5d6997c802d49ff00baf4b191b9e1b9e7f06660f.kensington@gentoo \
    --to=kensington@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox