Sun May 16 21:06:43 2021 UTC ()
tigervnc: update to 1.11.0 (with xorg-server 1.20.11).

Switch to xorg-server 1.20.11.

Restore vncserver script that upstream does not distribute
any longer (they switched to systemd instead).

Changes:

TigerVNC 1.11.0 is now available. This is a new major release of
TigerVNC, but also a security release. Users that rely on the TLS
feature in the viewers are recommended to upgrade as soon as
possible.

Lots of changes have been made since the last release, but the highlights are:

* A security issue has been fixed in how the viewers handle TLS certificate exceptions
* vncserver has gotten a major redesign to be compatible with modern distributions
* The native viewer now has touch gestures to handle certain mouse actions (e.g. scroll wheel)
* Middle mouse button emulation in the native viewer, for devices with only two mouse buttons
* The Java viewer now supports Java 9+, but also now requires Java 8+
* Support for alpha cursors in the Java viewer (a feature already supported in the native viewer)
* The password and username can now be specified via the environment for the native viewer
* Support for building Xvnc/libvnc.so with Xorg 1.20.7+ and deprecate support for Xorg older than 1.16
* The official builds have been fixed to work on the upcoming macOS 11
* The Windows server (WinVNC) is now packaged separately as it is unmaintained and buggy

1.10.1

This is a security release to fix a number of issues that were
found by Kaspersky Lab. These issues affect both the client and
server and could theoretically allow an malicious peer to take
control over the software on the other side.

No working exploit is known at this time, and the issues require
the peer to first be authenticated. We still urge users to upgrade
when possible.

1.10.0

TigerVNC 1.10.0 is now available. Lots of changes have been made
since the last release, but the highlights are:

* The clipboard now supports full Unicode in the native viewer, WinVNC and Xvnc/libvnc.so
* The native client will now respect the system trust store when verifying server certificates
* Improved compatibility with VMware's VNC server
* Improved compatibility with some input methods on macOS
* Improvements to the automatic "repair" of JPEG artefacts
* Better handling of the Alt keys in some corner cases
* The Java web server has been removed as applets are no longer support by most browsers
* x0vncserver can now be configured to only allow local connections
* x0vncserver has received fixes for when only part of the display is shared
* Polling is now default in WinVNC as that works better for most


(wiz)
diff -r1.37 -r1.38 pkgsrc/net/tigervnc/Makefile
diff -r1.7 -r1.8 pkgsrc/net/tigervnc/PLIST
diff -r1.17 -r1.18 pkgsrc/net/tigervnc/distinfo
diff -r0 -r1.1 pkgsrc/net/tigervnc/files/vncserver.pl
diff -r1.3 -r1.4 pkgsrc/net/tigervnc/patches/patch-CMakeLists.txt
diff -r0 -r1.1 pkgsrc/net/tigervnc/patches/patch-common_rfb_util.h
diff -r0 -r1.1 pkgsrc/net/tigervnc/patches/patch-unix_vncserver_vncserver.in
diff -r0 -r1.1 pkgsrc/net/tigervnc/patches/patch-unix_vncserver_vncsession.c
diff -r0 -r1.1 pkgsrc/net/tigervnc/patches/patch-unix_xserver_hw_vnc_vncBlockHandler.c
diff -r0 -r1.1 pkgsrc/net/tigervnc/patches/patch-unix_xserver_os_inputthread.c
diff -r1.2 -r0 pkgsrc/net/tigervnc/patches/patch-unix_vncserver
diff -r1.7 -r0 pkgsrc/net/tigervnc/patches/patch-unix_xserver117.patch
diff -r1.4 -r1.5 pkgsrc/net/tigervnc/patches/patch-unix_xserver_hw_vnc_Makefile.am

cvs diff -r1.37 -r1.38 pkgsrc/net/tigervnc/Makefile (expand / switch to unified diff)

--- pkgsrc/net/tigervnc/Makefile 2021/04/21 13:25:14 1.37
+++ pkgsrc/net/tigervnc/Makefile 2021/05/16 21:06:42 1.38
@@ -1,72 +1,113 @@ @@ -1,72 +1,113 @@
1# $NetBSD: Makefile,v 1.37 2021/04/21 13:25:14 adam Exp $ 1# $NetBSD: Makefile,v 1.38 2021/05/16 21:06:42 wiz Exp $
2 2
3DISTNAME= tigervnc-1.9.0 3DISTNAME= tigervnc-1.11.0
4PKGREVISION= 8 4PKGNAME= ${DISTNAME}.1.20.11
5CATEGORIES= net 5CATEGORIES= net
6MASTER_SITES= ${MASTER_SITE_GITHUB:=TigerVNC/} 6MASTER_SITES= ${MASTER_SITE_GITHUB:=TigerVNC/}
7GITHUB_TAG= v${PKGVERSION_NOREV} 7GITHUB_TAG= v1.11.0
8XORG_SERVER_FILE= xorg-server-1.17.2 8XORG_SERVER_FILE= xorg-server-1.20.11
9SITES.${XORG_SERVER_FILE}.tar.bz2= ${MASTER_SITE_XORG:=xserver/} 9SITES.${XORG_SERVER_FILE}.tar.bz2= ${MASTER_SITE_XORG:=xserver/}
10DISTFILES= ${DISTNAME}${EXTRACT_SUFX} ${XORG_SERVER_FILE}.tar.bz2 10DISTFILES= ${DISTNAME}${EXTRACT_SUFX} ${XORG_SERVER_FILE}.tar.bz2
11 11
12MAINTAINER= pkgsrc-users@NetBSD.org 12MAINTAINER= pkgsrc-users@NetBSD.org
13HOMEPAGE= https://tigervnc.org/ 13HOMEPAGE= https://tigervnc.org/
14COMMENT= High-performance, platform-neutral VNC client/server 14COMMENT= High-performance, platform-neutral VNC client/server
15LICENSE= gnu-gpl-v2 15LICENSE= gnu-gpl-v2
16 16
17BUILD_DEPENDS+= xorg-util-macros-[0-9]*:../../devel/xorg-util-macros 17BUILD_DEPENDS+= xorg-util-macros-[0-9]*:../../devel/xorg-util-macros
18BUILD_DEPENDS+= font-util-[0-9]*:../../fonts/font-util 18BUILD_DEPENDS+= font-util-[0-9]*:../../fonts/font-util
19BUILD_DEPENDS+= tradcpp-[0-9]*:../../devel/tradcpp 19BUILD_DEPENDS+= tradcpp-[0-9]*:../../devel/tradcpp
20 20
21DEPENDS+= mcookie-[0-9]*:../../x11/mcookie 21DEPENDS+= mcookie-[0-9]*:../../x11/mcookie
22 22
 23REPLACE_BASH+= unix/vncserver/vncsession-start.in
 24REPLACE_PERL+= unix/vncserver/vncserver.in
 25
 26WRKSRC= ${WRKDIR}/${DISTNAME}
 27
23USE_CMAKE= yes 28USE_CMAKE= yes
24USE_LIBTOOL= yes 29USE_LIBTOOL= yes
25USE_LANGUAGES= c c++ 30USE_LANGUAGES= c c++
26USE_TOOLS+= intltool msgfmt msgmerge patch perl:run autoconf automake autoreconf pkg-config gmake bash 31USE_TOOLS+= intltool msgfmt msgmerge patch perl:run autoconf automake autoreconf pkg-config gmake bash:run
27BUILD_DIRS= . unix/xserver 32BUILD_DIRS= . unix/xserver
28INSTALL_DIRS= . unix/xserver/hw/vnc 33INSTALL_DIRS= . unix/xserver/hw/vnc
29 34
 35# for reallocarray()
 36CPPFLAGS.NetBSD+= -D_OPENBSD_SOURCE
 37
30LDFLAGS+= ${BUILDLINK_LDADD.gettext} 38LDFLAGS+= ${BUILDLINK_LDADD.gettext}
31 39
32CONFIGURE_ENV+= ac_cv_path_RAWCPP="${PREFIX}/bin/tradcpp -Uunix" 40CONFIGURE_ENV+= ac_cv_path_RAWCPP="${PREFIX}/bin/tradcpp -Uunix"
33OVERRIDE_GNU_CONFIG_SCRIPTS= yes 41OVERRIDE_GNU_CONFIG_SCRIPTS= yes
34LIBTOOL_OVERRIDE= unix/xserver/libtool 42LIBTOOL_OVERRIDE= unix/xserver/libtool
35 43
36SUBST_CLASSES+= hpath 44SUBST_CLASSES+= hpath
37SUBST_STAGE.hpath= pre-configure 45SUBST_STAGE.hpath= pre-configure
38SUBST_MESSAGE.hpath= fixing hardcoded paths 46SUBST_MESSAGE.hpath= fixing hardcoded paths
39SUBST_FILES.hpath= unix/vncserver 47SUBST_FILES.hpath= unix/vncserver/vncserver.in
40SUBST_SED.hpath+= -e 's|/usr/local/vnc/classes|${PREFIX}/share/vnc/classes|g' 48SUBST_SED.hpath+= -e 's|/usr/local/vnc/classes|${PREFIX}/share/vnc/classes|g'
41SUBST_VARS.hpath+= PREFIX X11BASE 49SUBST_VARS.hpath+= PREFIX X11BASE
42 50
43REPLACE_PERL+= unix/vncserver 51REPLACE_PERL+= unix/vncserver
 52REPLACE_PERL+= vncserver.pl
44 53
45post-extract: 54post-extract:
46 cd ${WRKDIR} && ${EXTRACTOR} ${_DISTDIR}/${XORG_SERVER_FILE}.tar.bz2 55 cd ${WRKDIR} && ${EXTRACTOR} ${_DISTDIR}/${XORG_SERVER_FILE}.tar.bz2
47 cp -r ${WRKDIR}/${XORG_SERVER_FILE}/* ${WRKSRC}/unix/xserver 56 cp -r ${WRKDIR}/${XORG_SERVER_FILE}/* ${WRKSRC}/unix/xserver
 57 cp ${FILESDIR}/vncserver.pl ${WRKSRC}
48 58
49post-patch: 59post-patch:
50 cd ${WRKSRC}/unix/xserver && ${PATCH} --batch -p1 <../xserver117.patch 60 cd ${WRKSRC}/unix/xserver && ${PATCH} --batch -p1 <../xserver120.patch
 61
 62# suggested by BUILDING.txt:
 63#./configure --with-pic --without-dtrace --disable-static --disable-dri \
 64# --disable-xinerama --disable-xvfb --disable-xnest --disable-xorg \
 65# --disable-dmx --disable-xwin --disable-xephyr --disable-kdrive \
 66# --disable-config-dbus --disable-config-hal --disable-config-udev \
 67# --disable-dri2 --enable-install-libxf86config --enable-glx \
 68# --with-default-font-path="catalogue:/etc/X11/fontpath.d,built-ins" \
 69# --with-fontdir=/usr/share/X11/fonts \
 70# --with-xkb-path=/usr/share/X11/xkb \
 71# --with-xkb-output=/var/lib/xkb \
 72# --with-xkb-bin-directory=/usr/bin \
 73# --with-serverconfig-path=/usr/lib[64]/xorg \
 74# --with-dri-driver-path=/usr/lib[64]/dri \
 75# {additional configure options}
51 76
52XORG_CONFIGURE_ARGS+= --prefix=${PREFIX} --mandir=${PREFIX}/${PKGMANDIR} 77XORG_CONFIGURE_ARGS+= --prefix=${PREFIX} --mandir=${PREFIX}/${PKGMANDIR}
53XORG_CONFIGURE_ARGS+= --disable-xwayland --disable-kdrive --disable-xephyr 78XORG_CONFIGURE_ARGS+= --disable-xwayland --disable-kdrive --disable-xephyr
54XORG_CONFIGURE_ARGS+= --disable-static --disable-xinerama --without-dtrace 79XORG_CONFIGURE_ARGS+= --disable-static --disable-xinerama --without-dtrace
55XORG_CONFIGURE_ARGS+= --disable-xorg --disable-xnest --disable-xvfb --disable-dmx 80XORG_CONFIGURE_ARGS+= --disable-xorg --disable-xnest --disable-xvfb --disable-dmx
56XORG_CONFIGURE_ARGS+= --disable-config-hal --disable-config-udev --with-pic 81XORG_CONFIGURE_ARGS+= --disable-config-hal --disable-config-udev --with-pic
57XORG_CONFIGURE_ARGS+= --disable-unit-tests --disable-devel-docs --disable-selective-werror 82XORG_CONFIGURE_ARGS+= --disable-unit-tests --disable-devel-docs --disable-selective-werror
58XORG_CONFIGURE_ARGS+= --disable-dri --enable-dri2 --disable-dri3 --enable-glx --enable-glx-tls 83XORG_CONFIGURE_ARGS+= --disable-dri --enable-dri2 --disable-dri3 --enable-glx --enable-glx-tls
59 84
 85EGDIR= share/examples/tigervnc
 86INSTALLATION_DIRS+= ${EGDIR}
 87MAKE_DIRS+= ${PKG_SYSCONFDIR}/pam.d
 88MAKE_DIRS+= ${PKG_SYSCONFDIR}/tigervnc
 89CONF_FILES+= ${EGDIR}/tigervnc ${PKG_SYSCONFDIR}/pam.d/tigervnc
 90CONF_FILES+= ${EGDIR}/vncserver-config-defaults ${PKG_SYSCONFDIR}/tigervnc/vncserver-config-defaults
 91CONF_FILES+= ${EGDIR}/vncserver-config-mandatory ${PKG_SYSCONFDIR}/tigervnc/vncserver-config-mandatory
 92CONF_FILES+= ${EGDIR}/vncserver.users ${PKG_SYSCONFDIR}/tigervnc/vncserver.users
 93
 94post-install:
 95 ${INSTALL_SCRIPT} ${WRKSRC}/vncserver.pl ${DESTDIR}${PREFIX}/bin/vncserver
 96 ${MV} ${DESTDIR}${PREFIX}/etc/pam.d/tigervnc ${DESTDIR}${PREFIX}/${EGDIR}
 97 ${MV} ${DESTDIR}${PREFIX}/etc/tigervnc/vncserver-config-defaults ${DESTDIR}${PREFIX}/${EGDIR}
 98 ${MV} ${DESTDIR}${PREFIX}/etc/tigervnc/vncserver-config-mandatory ${DESTDIR}${PREFIX}/${EGDIR}
 99 ${MV} ${DESTDIR}${PREFIX}/etc/tigervnc/vncserver.users ${DESTDIR}${PREFIX}/${EGDIR}
 100
60.include "../../mk/bsd.prefs.mk" 101.include "../../mk/bsd.prefs.mk"
61 102
62.if ${X11_TYPE} != "modular" 103.if ${X11_TYPE} != "modular"
63# when using native X, tigervnc server can't find xkb rules or xkbcomp without the following: 104# when using native X, tigervnc server can't find xkb rules or xkbcomp without the following:
64XORG_CONFIGURE_ARGS+= --with-xkb-path=${X11BASE}/lib/X11/xkb 105XORG_CONFIGURE_ARGS+= --with-xkb-path=${X11BASE}/lib/X11/xkb
65XORG_CONFIGURE_ARGS+= --with-xkb-bin-directory=${X11BASE}/bin 106XORG_CONFIGURE_ARGS+= --with-xkb-bin-directory=${X11BASE}/bin
66.endif 107.endif
67 108
68pre-configure: 109pre-configure:
69 cd ${WRKSRC}/unix/xserver && \ 110 cd ${WRKSRC}/unix/xserver && \
70 ${PKGSRC_SETENV} ACLOCAL_PATH=${X11BASE}/share/aclocal \ 111 ${PKGSRC_SETENV} ACLOCAL_PATH=${X11BASE}/share/aclocal \
71 autoreconf -fvi && \ 112 autoreconf -fvi && \
72 ${PKGSRC_SETENV} ${_CONFIGURE_SCRIPT_ENV} CONFIG_SHELL=${BASH} \ 113 ${PKGSRC_SETENV} ${_CONFIGURE_SCRIPT_ENV} CONFIG_SHELL=${BASH} \
@@ -84,14 +125,15 @@ pre-configure: @@ -84,14 +125,15 @@ pre-configure:
84.include "../../x11/libX11/buildlink3.mk" 125.include "../../x11/libX11/buildlink3.mk"
85.include "../../x11/libXcursor/buildlink3.mk" 126.include "../../x11/libXcursor/buildlink3.mk"
86.include "../../x11/libXinerama/buildlink3.mk" 127.include "../../x11/libXinerama/buildlink3.mk"
87.include "../../x11/libXtst/buildlink3.mk" 128.include "../../x11/libXtst/buildlink3.mk"
88.include "../../x11/libdrm/buildlink3.mk" 129.include "../../x11/libdrm/buildlink3.mk"
89BUILDLINK_API_DEPENDS.fltk+= fltk>=1.3.3 130BUILDLINK_API_DEPENDS.fltk+= fltk>=1.3.3
90.include "../../x11/fltk13/buildlink3.mk" 131.include "../../x11/fltk13/buildlink3.mk"
91.include "../../x11/pixman/buildlink3.mk" 132.include "../../x11/pixman/buildlink3.mk"
92.include "../../x11/xorgproto/buildlink3.mk" 133.include "../../x11/xorgproto/buildlink3.mk"
93.include "../../x11/xtrans/buildlink3.mk" 134.include "../../x11/xtrans/buildlink3.mk"
94.include "../../x11/libXfont/buildlink3.mk" 135.include "../../x11/libXfont/buildlink3.mk"
95.include "../../x11/libXrandr/buildlink3.mk" 136.include "../../x11/libXrandr/buildlink3.mk"
96.include "../../x11/libxkbfile/buildlink3.mk" 137.include "../../x11/libxkbfile/buildlink3.mk"
 138.include "../../mk/pthread.buildlink3.mk"
97.include "../../mk/bsd.pkg.mk" 139.include "../../mk/bsd.pkg.mk"

cvs diff -r1.7 -r1.8 pkgsrc/net/tigervnc/PLIST (expand / switch to unified diff)

--- pkgsrc/net/tigervnc/PLIST 2020/04/17 11:37:24 1.7
+++ pkgsrc/net/tigervnc/PLIST 2021/05/16 21:06:42 1.8
@@ -1,47 +1,58 @@ @@ -1,47 +1,58 @@
1@comment $NetBSD: PLIST,v 1.7 2020/04/17 11:37:24 wiz Exp $ 1@comment $NetBSD: PLIST,v 1.8 2021/05/16 21:06:42 wiz Exp $
2bin/Xvnc 2bin/Xvnc
3bin/vncconfig 3bin/vncconfig
4bin/vncpasswd 4bin/vncpasswd
5bin/vncserver 5bin/vncserver
6bin/vncviewer 6bin/vncviewer
7bin/x0vncserver 7bin/x0vncserver
 8lib/systemd/system/vncserver@.service
8lib/xorg/modules/extensions/libvnc.la 9lib/xorg/modules/extensions/libvnc.la
 10libexec/vncserver
 11libexec/vncsession-start
9man/man1/Xvnc.1 12man/man1/Xvnc.1
10man/man1/vncconfig.1 13man/man1/vncconfig.1
11man/man1/vncpasswd.1 14man/man1/vncpasswd.1
12man/man1/vncserver.1 
13man/man1/vncviewer.1 15man/man1/vncviewer.1
14man/man1/x0vncserver.1 16man/man1/x0vncserver.1
 17man/man8/vncserver.8
 18man/man8/vncsession.8
 19sbin/vncsession
15share/applications/vncviewer.desktop 20share/applications/vncviewer.desktop
16share/doc/${PKGNAME}/LICENCE.TXT 21share/doc/tigervnc/LICENCE.TXT
17share/doc/${PKGNAME}/README.rst 22share/doc/tigervnc/README.rst
 23share/examples/tigervnc/tigervnc
 24share/examples/tigervnc/vncserver-config-defaults
 25share/examples/tigervnc/vncserver-config-mandatory
 26share/examples/tigervnc/vncserver.users
18share/icons/hicolor/16x16/apps/tigervnc.png 27share/icons/hicolor/16x16/apps/tigervnc.png
19share/icons/hicolor/22x22/apps/tigervnc.png 28share/icons/hicolor/22x22/apps/tigervnc.png
20share/icons/hicolor/24x24/apps/tigervnc.png 29share/icons/hicolor/24x24/apps/tigervnc.png
21share/icons/hicolor/32x32/apps/tigervnc.png 30share/icons/hicolor/32x32/apps/tigervnc.png
22share/icons/hicolor/48x48/apps/tigervnc.png 31share/icons/hicolor/48x48/apps/tigervnc.png
23share/icons/hicolor/scalable/apps/tigervnc.svg 32share/icons/hicolor/scalable/apps/tigervnc.svg
24share/locale/bg/LC_MESSAGES/tigervnc.mo 33share/locale/bg/LC_MESSAGES/tigervnc.mo
25share/locale/cs/LC_MESSAGES/tigervnc.mo 34share/locale/cs/LC_MESSAGES/tigervnc.mo
26share/locale/da/LC_MESSAGES/tigervnc.mo 35share/locale/da/LC_MESSAGES/tigervnc.mo
27share/locale/de/LC_MESSAGES/tigervnc.mo 36share/locale/de/LC_MESSAGES/tigervnc.mo
28share/locale/el/LC_MESSAGES/tigervnc.mo 37share/locale/el/LC_MESSAGES/tigervnc.mo
29share/locale/eo/LC_MESSAGES/tigervnc.mo 38share/locale/eo/LC_MESSAGES/tigervnc.mo
30share/locale/es/LC_MESSAGES/tigervnc.mo 39share/locale/es/LC_MESSAGES/tigervnc.mo
31share/locale/fi/LC_MESSAGES/tigervnc.mo 40share/locale/fi/LC_MESSAGES/tigervnc.mo
32share/locale/fr/LC_MESSAGES/tigervnc.mo 41share/locale/fr/LC_MESSAGES/tigervnc.mo
33share/locale/fur/LC_MESSAGES/tigervnc.mo 42share/locale/fur/LC_MESSAGES/tigervnc.mo
34share/locale/hu/LC_MESSAGES/tigervnc.mo 43share/locale/hu/LC_MESSAGES/tigervnc.mo
35share/locale/id/LC_MESSAGES/tigervnc.mo 44share/locale/id/LC_MESSAGES/tigervnc.mo
36share/locale/it/LC_MESSAGES/tigervnc.mo 45share/locale/it/LC_MESSAGES/tigervnc.mo
 46share/locale/ko/LC_MESSAGES/tigervnc.mo
37share/locale/nl/LC_MESSAGES/tigervnc.mo 47share/locale/nl/LC_MESSAGES/tigervnc.mo
38share/locale/pl/LC_MESSAGES/tigervnc.mo 48share/locale/pl/LC_MESSAGES/tigervnc.mo
39share/locale/pt_BR/LC_MESSAGES/tigervnc.mo 49share/locale/pt_BR/LC_MESSAGES/tigervnc.mo
40share/locale/ru/LC_MESSAGES/tigervnc.mo 50share/locale/ru/LC_MESSAGES/tigervnc.mo
41share/locale/sk/LC_MESSAGES/tigervnc.mo 51share/locale/sk/LC_MESSAGES/tigervnc.mo
42share/locale/sr/LC_MESSAGES/tigervnc.mo 52share/locale/sr/LC_MESSAGES/tigervnc.mo
43share/locale/sv/LC_MESSAGES/tigervnc.mo 53share/locale/sv/LC_MESSAGES/tigervnc.mo
44share/locale/tr/LC_MESSAGES/tigervnc.mo 54share/locale/tr/LC_MESSAGES/tigervnc.mo
45share/locale/uk/LC_MESSAGES/tigervnc.mo 55share/locale/uk/LC_MESSAGES/tigervnc.mo
46share/locale/vi/LC_MESSAGES/tigervnc.mo 56share/locale/vi/LC_MESSAGES/tigervnc.mo
47share/locale/zh_CN/LC_MESSAGES/tigervnc.mo 57share/locale/zh_CN/LC_MESSAGES/tigervnc.mo
 58share/locale/zh_TW/LC_MESSAGES/tigervnc.mo

cvs diff -r1.17 -r1.18 pkgsrc/net/tigervnc/distinfo (expand / switch to unified diff)

--- pkgsrc/net/tigervnc/distinfo 2020/04/17 11:37:24 1.17
+++ pkgsrc/net/tigervnc/distinfo 2021/05/16 21:06:42 1.18
@@ -1,16 +1,19 @@ @@ -1,16 +1,19 @@
1$NetBSD: distinfo,v 1.17 2020/04/17 11:37:24 wiz Exp $ 1$NetBSD: distinfo,v 1.18 2021/05/16 21:06:42 wiz Exp $
2 2
3SHA1 (tigervnc-1.9.0.tar.gz) = c56656c596fb863bb2c4b67fb62b4165011d181f 3SHA1 (tigervnc-1.11.0.tar.gz) = 6f6b621a76b734888748de10c32c2b5b59d40b19
4RMD160 (tigervnc-1.9.0.tar.gz) = 990e872addf459432584c176b3565504e994899e 4RMD160 (tigervnc-1.11.0.tar.gz) = 516a6eee866ef221ae52d759b465032a51510dc3
5SHA512 (tigervnc-1.9.0.tar.gz) = 333910f567e6b5e4a5a22d898b2d4c3f4b834cb4cc8fc13ff55d31401894c0d5122a127692ec5eb51e412c945ff3ea5b8146f9ab22cbe1e47541e09239ec8c9d 5SHA512 (tigervnc-1.11.0.tar.gz) = 262676f065de6dfb72b1482c0ef1e6d8b764f53360ae6114debbe0986eede45d27e283e1452a72cb9b7540657ab347fd36df5b30b72d6db4a0f8cbea5b591025
6Size (tigervnc-1.9.0.tar.gz) = 1506520 bytes 6Size (tigervnc-1.11.0.tar.gz) = 1346992 bytes
7SHA1 (xorg-server-1.17.2.tar.bz2) = 56ac29a82b99bcf4c7ba2fca41a44cfa18748262 7SHA1 (xorg-server-1.20.11.tar.bz2) = 86ae4add5719e6026a569f5559d51e8707171d5d
8RMD160 (xorg-server-1.17.2.tar.bz2) = bf575a269f1e7b729992a20989be84e09fcc88a2 8RMD160 (xorg-server-1.20.11.tar.bz2) = 9b451d5523e9384df37e0e91f52d843090590d23
9SHA512 (xorg-server-1.17.2.tar.bz2) = 7e7b7620890cc8db696695758fa22fa879f9d3c33946663611ec0b37f02116e9c6f08779f9eece59907b430d3df93f0c0548939683ea156b3c4cbe02571b7551 9SHA512 (xorg-server-1.20.11.tar.bz2) = 1017015b9fd5d53788abe3641d877e6df8609841fa5c1847c0a5e133ddcc1b758a5d695304ebd36828099ec201a85b6b70b46f5ea4f81c5bd3a16fa6e175e3c2
10Size (xorg-server-1.17.2.tar.bz2) = 5767983 bytes 10Size (xorg-server-1.20.11.tar.bz2) = 6476116 bytes
11SHA1 (patch-CMakeLists.txt) = 42a364f898784a9c4da46bea8ef6bc37838815b9 11SHA1 (patch-CMakeLists.txt) = e844bee9fa5e1ce755d65333fadd3654a207aee4
 12SHA1 (patch-common_rfb_util.h) = 73d5fc206e192b936c224cedf5857980fca69eb0
12SHA1 (patch-media_CMakeLists.txt) = cd50f9b7a9405aa523412ef823a32437a3c19ffa 13SHA1 (patch-media_CMakeLists.txt) = cd50f9b7a9405aa523412ef823a32437a3c19ffa
13SHA1 (patch-unix_vncserver) = 9c71ad02c6657f537bcb2abaa116a831b555d7c0 14SHA1 (patch-unix_vncserver_vncserver.in) = 715f16a4be6806778fd0a9d781e920771e35d0ca
14SHA1 (patch-unix_xserver117.patch) = 5e5d2a98f0b765ae0d6bb5f200808126b03dcc51 15SHA1 (patch-unix_vncserver_vncsession.c) = 78f623b2ed7e34d9478032a02d20917fdbf2c0ca
15SHA1 (patch-unix_xserver_hw_vnc_Makefile.am) = 29b33e6d94a070bb0a55a264cd1c4e120c9b1b3c 16SHA1 (patch-unix_xserver_hw_vnc_Makefile.am) = df31836e27bb535b307404adb55e239f10bbe6c4
 17SHA1 (patch-unix_xserver_hw_vnc_vncBlockHandler.c) = 534a621aab793625c27737d42c5bf12c9574a414
16SHA1 (patch-unix_xserver_hw_vnc_vncModule.c) = 77aff6c2bb19e6936302c783b72d581e7d6388f5 18SHA1 (patch-unix_xserver_hw_vnc_vncModule.c) = 77aff6c2bb19e6936302c783b72d581e7d6388f5
 19SHA1 (patch-unix_xserver_os_inputthread.c) = da8f1a6ab905d2569f61e92d8cf9891ed14ec42a

File Added: pkgsrc/net/tigervnc/files/vncserver.pl
#!/usr/bin/env perl
#
#  Copyright (C) 2009-2010 D. R. Commander.  All Rights Reserved.
#  Copyright (C) 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
#  Copyright (C) 2002-2003 Constantin Kaplinsky.  All Rights Reserved.
#  Copyright (C) 2002-2005 RealVNC Ltd.
#  Copyright (C) 1999 AT&T Laboratories Cambridge.  All Rights Reserved.
#
#  This is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#
#  This software is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this software; if not, write to the Free Software
#  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
#  USA.
#

#
# vncserver - wrapper script to start an X VNC server.
#

# First make sure we're operating in a sane environment.
$exedir = "";
$slashndx = rindex($0, "/");
if($slashndx>=0) {
    $exedir = substr($0, 0, $slashndx+1);
}

&SanityCheck();

#
# Global variables.  You may want to configure some of these for
# your site
#

$geometry = "1024x768";
#$depth = 16;

$vncUserDir = "$ENV{HOME}/.vnc";
$vncUserConfig = "$vncUserDir/config";

$vncSystemConfigDir = "/etc/tigervnc";
$vncSystemConfigDefaultsFile = "$vncSystemConfigDir/vncserver-config-defaults";
$vncSystemConfigMandatoryFile = "$vncSystemConfigDir/vncserver-config-mandatory";

$skipxstartup = 0;
$xauthorityFile = "$ENV{XAUTHORITY}" || "$ENV{HOME}/.Xauthority";

$xstartupFile = $vncUserDir . "/xstartup";
$defaultXStartup
    = ("#!/bin/sh\n\n".
       "unset SESSION_MANAGER\n".
       "unset DBUS_SESSION_BUS_ADDRESS\n".
       "OS=`uname -s`\n".
       "if [ \$OS = 'Linux' ]; then\n".
       "  case \"\$WINDOWMANAGER\" in\n".
       "    \*gnome\*)\n".
       "      if [ -e /etc/SuSE-release ]; then\n".
       "        PATH=\$PATH:/opt/gnome/bin\n".
       "        export PATH\n".
       "      fi\n".
       "      ;;\n".
       "  esac\n".
       "fi\n".
       "if [ -x /etc/X11/xinit/xinitrc ]; then\n".
       "  exec /etc/X11/xinit/xinitrc\n".
       "fi\n".
       "if [ -f /etc/X11/xinit/xinitrc ]; then\n".
       "  exec sh /etc/X11/xinit/xinitrc\n".
       "fi\n".
       "[ -r \$HOME/.Xresources ] && xrdb \$HOME/.Xresources\n".
       "xsetroot -solid grey\n".
       "xterm -geometry 80x24+10+10 -ls -title \"\$VNCDESKTOP Desktop\" &\n".
       "twm &\n");

$defaultConfig
    = ("## Supported server options to pass to vncserver upon invocation can be listed\n".
       "## in this file. See the following manpages for more: vncserver(1) Xvnc(1).\n".
       "## Several common ones are shown below. Uncomment and modify to your liking.\n".
       "##\n".
       "# securitytypes=vncauth,tlsvnc\n".
       "# desktop=sandbox\n".
       "# geometry=2000x1200\n".
       "# localhost\n".
       "# alwaysshared\n");

chop($host = `uname -n`);

if (-d "/etc/X11/fontpath.d") {
    $fontPath = "catalogue:/etc/X11/fontpath.d";
}

@fontpaths = ('/usr/share/X11/fonts', '/usr/share/fonts', '/usr/share/fonts/X11/');
if (! -l "/usr/lib/X11") {push(@fontpaths, '/usr/lib/X11/fonts');}
if (! -l "/usr/X11") {push(@fontpaths, '/usr/X11/lib/X11/fonts');}
if (! -l "/usr/X11R6") {push(@fontpaths, '/usr/X11R6/lib/X11/fonts');}
push(@fontpaths, '/usr/share/fonts/default');

@fonttypes = ('misc',
             '75dpi',
             '100dpi',
             'Speedo',
             'Type1');

foreach $_fpath (@fontpaths) {
    foreach $_ftype (@fonttypes) {
        if (-f "$_fpath/$_ftype/fonts.dir") {
            if (! -l "$_fpath/$_ftype") {
                $defFontPath .= "$_fpath/$_ftype,";
            }
        }
    }
}

if ($defFontPath) {
    if (substr($defFontPath, -1, 1) == ',') {
        chop $defFontPath;
    }
}

if ($fontPath eq "") {
    $fontPath = $defFontPath;
}

# Check command line options

&ParseOptions("-geometry",1,"-depth",1,"-pixelformat",1,"-name",1,"-kill",1,
	      "-help",0,"-h",0,"--help",0,"-fp",1,"-list",0,"-fg",0,"-autokill",0,"-noxstartup",0,"-xstartup",1);

&Usage() if ($opt{'-help'} || $opt{'-h'} || $opt{'--help'});

&Kill() if ($opt{'-kill'});

&List() if ($opt{'-list'});

# Uncomment this line if you want default geometry, depth and pixelformat
# to match the current X display:
# &GetXDisplayDefaults();

if ($opt{'-geometry'}) {
    $geometry = $opt{'-geometry'};
}
if ($opt{'-depth'}) {
    $depth = $opt{'-depth'};
    $pixelformat = "";
}
if ($opt{'-pixelformat'}) {
    $pixelformat = $opt{'-pixelformat'};
}
if ($opt{'-noxstartup'}) {
    $skipxstartup = 1;
}
if ($opt{'-xstartup'}) {
    $xstartupFile = $opt{'-xstartup'};
}
if ($opt{'-fp'}) {
    $fontPath = $opt{'-fp'};
    $fpArgSpecified = 1;
}

&CheckGeometryAndDepth();

# Create the user's vnc directory if necessary.
if (!(-e $vncUserDir)) {
    if (!mkdir($vncUserDir,0755)) {
	die "$prog: Could not create $vncUserDir.\n";
    }
}

# Find display number.
if ((@ARGV > 0) && ($ARGV[0] =~ /^:(\d+)$/)) {
    $displayNumber = $1;
    shift(@ARGV);
    if (!&CheckDisplayNumber($displayNumber)) {
	die "A VNC server is already running as :$displayNumber\n";
    }
} elsif ((@ARGV > 0) && ($ARGV[0] !~ /^-/) && ($ARGV[0] !~ /^\+/)) {
    &Usage();
} else {
    $displayNumber = &GetDisplayNumber();
}

$vncPort = 5900 + $displayNumber;

if ($opt{'-name'}) {
    $desktopName = $opt{'-name'};
} else {
    $desktopName = "$host:$displayNumber ($ENV{USER})";
}

my %default_opts;
my %config;

# We set some reasonable defaults. Config file settings
# override these where present.
$default_opts{desktop} = &quotedString($desktopName);
$default_opts{auth} = &quotedString($xauthorityFile);
$default_opts{geometry} = $geometry if ($geometry);
$default_opts{depth} = $depth if ($depth);
$default_opts{pixelformat} = $pixelformat if ($pixelformat);
$default_opts{rfbwait} = 30000;
$default_opts{rfbauth} = "$vncUserDir/passwd";
$default_opts{rfbport} = $vncPort;
$default_opts{fp} = $fontPath if ($fontPath);
$default_opts{pn} = "";

# Load user-overrideable system defaults
LoadConfig($vncSystemConfigDefaultsFile);

# Then the user's settings
LoadConfig($vncUserConfig);

# And then override anything set above if mandatory settings exist.
# WARNING: "Mandatory" is used loosely here! As the man page says,
# there is nothing stopping someone from EASILY subverting the
# settings in $vncSystemConfigMandatoryFile by simply passing
# CLI args to vncserver, which trump config files! To properly
# hard force policy in a non-subvertible way would require major
# development work that touches Xvnc itself.
LoadConfig($vncSystemConfigMandatoryFile, 1);

#
# Check whether VNC authentication is enabled, and if so, prompt the user to
# create a VNC password if they don't already have one.
#

$securityTypeArgSpecified = 0;
$vncAuthEnabled = 0;
$passwordArgSpecified = 0;
@vncAuthStrings = ("vncauth", "tlsvnc", "x509vnc");

# ...first we check our configuration files' settings
if ($config{'securitytypes'}) {
  $securityTypeArgSpecified = 1;
  foreach $arg2 (split(',', $config{'securitytypes'})) {
    if (grep {$_ eq lc($arg2)} @vncAuthStrings) {
      $vncAuthEnabled = 1;
    }
  }
}

# ...and finally we check CLI args, which in the case of the topic at
# hand (VNC auth or not), override anything found in configuration files
# (even so-called "mandatory" settings).
for ($i = 0; $i < @ARGV; ++$i) {
    # -SecurityTypes can be followed by a space or "="
    my @splitargs = split('=', $ARGV[$i]);
    if (@splitargs <= 1 && $i < @ARGV - 1) {
        push(@splitargs, $ARGV[$i + 1]);
    }
    if (lc(@splitargs[0]) eq "-securitytypes") {
        if (@splitargs > 1) {
            $securityTypeArgSpecified = 1;
        }
        foreach $arg2 (split(',', @splitargs[1])) {
            if (grep {$_ eq lc($arg2)} @vncAuthStrings) {
                $vncAuthEnabled = 1;
            }
        }
    }
    if ((lc(@splitargs[0]) eq "-password")
     || (lc(@splitargs[0]) eq "-passwordfile"
     || (lc(@splitargs[0]) eq "-rfbauth"))) {
        $passwordArgSpecified = 1;
    }
}

if ((!$securityTypeArgSpecified || $vncAuthEnabled) && !$passwordArgSpecified) {
    ($z,$z,$mode) = stat("$vncUserDir/passwd");
    if (!(-e "$vncUserDir/passwd") || ($mode & 077)) {
        warn "\nYou will require a password to access your desktops.\n\n";
        system($exedir."vncpasswd -q $vncUserDir/passwd");
        if (($? >> 8) != 0) {
            exit 1;
        }
    }
}

$desktopLog = "$vncUserDir/$host:$displayNumber.log";
unlink($desktopLog);

# Make an X server cookie and set up the Xauthority file
# mcookie is a part of util-linux, usually only GNU/Linux systems have it.
$cookie = `mcookie`;
# Fallback for non GNU/Linux OS - use /dev/urandom on systems that have it,
# otherwise use perl's random number generator, seeded with the sum
# of the current time, our PID and part of the encrypted form of the password.
if ($cookie eq "" && open(URANDOM, '<', '/dev/urandom')) {
  my $randata;
  if (sysread(URANDOM, $randata, 16) == 16) {
    $cookie = unpack 'h*', $randata;
  }
  close(URANDOM);
}
if ($cookie eq "") {
  srand(time+$$+unpack("L",`cat $vncUserDir/passwd`));
  for (1..16) {
    $cookie .= sprintf("%02x", int(rand(256)) % 256);
  }
}

open(XAUTH, "|xauth -f $xauthorityFile source -");
print XAUTH "add $host:$displayNumber . $cookie\n";
print XAUTH "add $host/unix:$displayNumber . $cookie\n";
close(XAUTH);

# Now start the X VNC Server

# We build up our Xvnc command with options
$cmd = $exedir."Xvnc :$displayNumber";

foreach my $k (sort keys %config) {
  $cmd .= " -$k $config{$k}";
  delete $default_opts{$k}; # file options take precedence
}

foreach my $k (sort keys %default_opts) {
  $cmd .= " -$k $default_opts{$k}";
}

# Add color database stuff here, e.g.:
# $cmd .= " -co /usr/lib/X11/rgb";

foreach $arg (@ARGV) {
  $cmd .= " " . &quotedString($arg);
}
$cmd .= " >> " . &quotedString($desktopLog) . " 2>&1";

# Run $cmd and record the process ID.
$pidFile = "$vncUserDir/$host:$displayNumber.pid";
system("$cmd & echo \$! >$pidFile");

# Give Xvnc a chance to start up

sleep(3);
if ($fontPath ne $defFontPath) {
    unless (kill 0, `cat $pidFile`) {
        if ($fpArgSpecified) {
	    warn "\nWARNING: The first attempt to start Xvnc failed, probably because the font\n";
	    warn "path you specified using the -fp argument is incorrect.  Attempting to\n";
	    warn "determine an appropriate font path for this system and restart Xvnc using\n";
	    warn "that font path ...\n";
        } else {
	    warn "\nWARNING: The first attempt to start Xvnc failed, possibly because the font\n";
	    warn "catalog is not properly configured.  Attempting to determine an appropriate\n";
	    warn "font path for this system and restart Xvnc using that font path ...\n";
        }
	$cmd =~ s@-fp [^ ]+@@;
	$cmd .= " -fp $defFontPath" if ($defFontPath);
	system("$cmd & echo \$! >$pidFile");
	sleep(3);
    }
}
unless (kill 0, `cat $pidFile`) {
    warn "Could not start Xvnc.\n\n";
    unlink $pidFile;
    open(LOG, "<$desktopLog");
    while (<LOG>) { print; }
    close(LOG);
    die "\n";
}

warn "\nNew '$desktopName' desktop is $host:$displayNumber\n\n";

# Create the user's xstartup script if necessary.
if (! $skipxstartup) {
    if (!(-e "$xstartupFile")) {
	warn "Creating default startup script $xstartupFile\n";
	open(XSTARTUP, ">$xstartupFile");
        print XSTARTUP $defaultXStartup;
        close(XSTARTUP);
        chmod 0755, "$xstartupFile";
    }
}

# Create the user's config file if necessary.
if (!(-e "$vncUserDir/config")) {
    warn "Creating default config $vncUserDir/config\n";
    open(VNCUSERCONFIG, ">$vncUserDir/config");
    print VNCUSERCONFIG $defaultConfig;
    close(VNCUSERCONFIG);
    chmod 0644, "$vncUserDir/config";
}

# Run the X startup script.
if (! $skipxstartup) {
    warn "Starting applications specified in $xstartupFile\n";
}
warn "Log file is $desktopLog\n\n";

# If the unix domain socket exists then use that (DISPLAY=:n) otherwise use
# TCP (DISPLAY=host:n)

if (-e "/tmp/.X11-unix/X$displayNumber" ||
    -e "/usr/spool/sockets/X11/$displayNumber")
{
    $ENV{DISPLAY}= ":$displayNumber";
} else {
    $ENV{DISPLAY}= "$host:$displayNumber";
}
$ENV{VNCDESKTOP}= $desktopName;

if ($opt{'-fg'}) {
    if (! $skipxstartup) {
        system("$xstartupFile >> " . &quotedString($desktopLog) . " 2>&1");
    }
    if (kill 0, `cat $pidFile`) {
        $opt{'-kill'} = ':'.$displayNumber;
        &Kill();
    }
} else {
    if ($opt{'-autokill'}) {
    	if (! $skipxstartup) {
            system("($xstartupFile; $0 -kill :$displayNumber) >> "
	     . &quotedString($desktopLog) . " 2>&1 &");
    	}
    } else {
    	if (! $skipxstartup) {
            system("$xstartupFile >> " . &quotedString($desktopLog)
	     . " 2>&1 &");
    	}
    }
}

exit;

###############################################################################
# Functions
###############################################################################

#
# Populate the global %config hash with settings from a specified
# vncserver configuration file if it exists
#
# Args: 1. file path
#       2. optional boolean flag to enable warning when a previously
#          set configuration setting is being overridden
#
sub LoadConfig {
  local ($configFile, $warnoverride) = @_;
  local ($toggle) = undef;

  if (stat($configFile)) {
    if (open(IN, $configFile)) {
      while (<IN>) {
        next if /^#/;
        if (my ($k, $v) = /^\s*(\w+)\s*=\s*(.+)$/) {
          $k = lc($k); # must normalize key case
          if ($warnoverride && $config{$k}) {
            print("Warning: $configFile is overriding previously defined '$k' to be '$v'\n");
          }
          $config{$k} = $v;
        } elsif ($_ =~ m/^\s*(\S+)/) {
          # We can't reasonably warn on override of toggles (e.g. AlwaysShared)
          # because it would get crazy to do so. We'd have to check if the
          # current config file being loaded defined the logical opposite setting
          # (NeverShared vs. AlwaysShared, etc etc).
          $toggle = lc($1); # must normalize key case
          $config{$toggle} = $k;
        }
      }
      close(IN);
    }
  }
}

#
# CheckGeometryAndDepth simply makes sure that the geometry and depth values
# are sensible.
#

sub CheckGeometryAndDepth
{
    if ($geometry =~ /^(\d+)x(\d+)$/) {
	$width = $1; $height = $2;

	if (($width<1) || ($height<1)) {
	    die "$prog: geometry $geometry is invalid\n";
	}

	$geometry = "${width}x$height";
    } else {
	die "$prog: geometry $geometry is invalid\n";
    }

    if ($depth && (($depth < 8) || ($depth > 32))) {
	die "Depth must be between 8 and 32\n";
    }
}


#
# GetDisplayNumber gets the lowest available display number.  A display number
# n is taken if something is listening on the VNC server port (5900+n) or the
# X server port (6000+n).
#

sub GetDisplayNumber
{
    foreach $n (1..99) {
	if (&CheckDisplayNumber($n)) {
	    return $n+0; # Bruce Mah's workaround for bug in perl 5.005_02
	}
    }

    die "$prog: no free display number on $host.\n";
}


#
# CheckDisplayNumber checks if the given display number is available.  A
# display number n is taken if something is listening on the VNC server port
# (5900+n) or the X server port (6000+n).
#

sub CheckDisplayNumber
{
    local ($n) = @_;

    socket(S, $AF_INET, $SOCK_STREAM, 0) || die "$prog: socket failed: $!\n";
    eval 'setsockopt(S, &SOL_SOCKET, &SO_REUSEADDR, pack("l", 1))';
    if (!bind(S, sockaddr_in(6000 + $n, &INADDR_ANY))) {
	close(S);
	return 0;
    }
    close(S);

    socket(S, $AF_INET, $SOCK_STREAM, 0) || die "$prog: socket failed: $!\n";
    eval 'setsockopt(S, &SOL_SOCKET, &SO_REUSEADDR, pack("l", 1))';
    if (!bind(S, sockaddr_in(5900 + $n, &INADDR_ANY))) {
	close(S);
	return 0;
    }
    close(S);

    if (-e "/tmp/.X$n-lock") {
	warn "\nWarning: $host:$n is taken because of /tmp/.X$n-lock\n";
	warn "Remove this file if there is no X server $host:$n\n";
	return 0;
    }

    if (-e "/tmp/.X11-unix/X$n") {
	warn "\nWarning: $host:$n is taken because of /tmp/.X11-unix/X$n\n";
	warn "Remove this file if there is no X server $host:$n\n";
	return 0;
    }

    if (-e "/usr/spool/sockets/X11/$n") {
	warn("\nWarning: $host:$n is taken because of ".
             "/usr/spool/sockets/X11/$n\n");
	warn "Remove this file if there is no X server $host:$n\n";
	return 0;
    }

    return 1;
}


#
# GetXDisplayDefaults uses xdpyinfo to find out the geometry, depth and pixel
# format of the current X display being used.  If successful, it sets the
# options as appropriate so that the X VNC server will use the same settings
# (minus an allowance for window manager decorations on the geometry).  Using
# the same depth and pixel format means that the VNC server won't have to
# translate pixels when the desktop is being viewed on this X display (for
# TrueColor displays anyway).
#

sub GetXDisplayDefaults
{
    local (@lines, @matchlines, $width, $height, $defaultVisualId, $i,
	   $red, $green, $blue);

    $wmDecorationWidth = 4;	# a guess at typical size for window manager
    $wmDecorationHeight = 24;	# decoration size

    return if (!defined($ENV{DISPLAY}));

    @lines = `xdpyinfo 2>/dev/null`;

    return if ($? != 0);

    @matchlines = grep(/dimensions/, @lines);
    if (@matchlines) {
	($width, $height) = ($matchlines[0] =~ /(\d+)x(\d+) pixels/);

	$width -= $wmDecorationWidth;
	$height -= $wmDecorationHeight;

	$geometry = "${width}x$height";
    }

    @matchlines = grep(/default visual id/, @lines);
    if (@matchlines) {
	($defaultVisualId) = ($matchlines[0] =~ /id:\s+(\S+)/);

	for ($i = 0; $i < @lines; $i++) {
	    if ($lines[$i] =~ /^\s*visual id:\s+$defaultVisualId$/) {
		if (($lines[$i+1] !~ /TrueColor/) ||
		    ($lines[$i+2] !~ /depth/) ||
		    ($lines[$i+4] !~ /red, green, blue masks/))
		{
		    return;
		}
		last;
	    }
	}

	return if ($i >= @lines);

	($depth) = ($lines[$i+2] =~ /depth:\s+(\d+)/);
	($red,$green,$blue)
	    = ($lines[$i+4]
	       =~ /masks:\s+0x([0-9a-f]+), 0x([0-9a-f]+), 0x([0-9a-f]+)/);

	$red = hex($red);
	$green = hex($green);
	$blue = hex($blue);

	if ($red > $blue) {
	    $red = int(log($red) / log(2)) - int(log($green) / log(2));
	    $green = int(log($green) / log(2)) - int(log($blue) / log(2));
	    $blue = int(log($blue) / log(2)) + 1;
	    $pixelformat = "rgb$red$green$blue";
	} else {
	    $blue = int(log($blue) / log(2)) - int(log($green) / log(2));
	    $green = int(log($green) / log(2)) - int(log($red) / log(2));
	    $red = int(log($red) / log(2)) + 1;
	    $pixelformat = "bgr$blue$green$red";
	}
    }
}


#
# quotedString returns a string which yields the original string when parsed
# by a shell.
#

sub quotedString
{
    local ($in) = @_;

    $in =~ s/\'/\'\"\'\"\'/g;

    return "'$in'";
}


#
# removeSlashes turns slashes into underscores for use as a file name.
#

sub removeSlashes
{
    local ($in) = @_;

    $in =~ s|/|_|g;

    return "$in";
}


#
# Usage
#

sub Usage
{
    die("\nusage: $prog [:<number>] [-name <desktop-name>] [-depth <depth>]\n".
	"                 [-geometry <width>x<height>]\n".
	"                 [-pixelformat rgbNNN|bgrNNN]\n".
	"                 [-fp <font-path>]\n".
	"                 [-fg]\n".
	"                 [-autokill]\n".
	"                 [-noxstartup]\n".
	"                 [-xstartup <file>]\n".
	"                 <Xvnc-options>...\n\n".
	"       $prog -kill <X-display>\n\n".
	"       $prog -list\n\n");
}


#
# List
#

sub List
{
    opendir(dir, $vncUserDir);
    my @filelist = readdir(dir);
    closedir(dir);
    print "\nTigerVNC server sessions:\n\n";
    print "X DISPLAY #\tPROCESS ID\n";
    foreach my $file (@filelist) {
	if ($file =~ /$host:(\d+)$\.pid/) {
	    chop($tmp_pid = `cat $vncUserDir/$file`);
	    if (kill 0, $tmp_pid) {
		print ":".$1."\t\t".`cat $vncUserDir/$file`;
	    } else {
		unlink ($vncUserDir . "/" . $file);
	    }
	}
    }
    exit;
}


#
# Kill
#

sub Kill
{
    $opt{'-kill'} =~ s/(:\d+)\.\d+$/$1/; # e.g. turn :1.0 into :1

    if ($opt{'-kill'} =~ /^:\d+$/) {
	$pidFile = "$vncUserDir/$host$opt{'-kill'}.pid";
    } else {
	if ($opt{'-kill'} !~ /^$host:/) {
	    die "\nCan't tell if $opt{'-kill'} is on $host\n".
		"Use -kill :<number> instead\n\n";
	}
	$pidFile = "$vncUserDir/$opt{'-kill'}.pid";
    }

    if (! -r $pidFile) {
	die "\nCan't find file $pidFile\n".
	    "You'll have to kill the Xvnc process manually\n\n";
    }

    $SIG{'HUP'} = 'IGNORE';
    chop($pid = `cat $pidFile`);
    warn "Killing Xvnc process ID $pid\n";

    if (kill 0, $pid) {
	system("kill $pid");
	sleep(1);
	if (kill 0, $pid) {
	    print "Xvnc seems to be deadlocked.  Kill the process manually and then re-run\n";
	    print "    ".$0." -kill ".$opt{'-kill'}."\n";
	    print "to clean up the socket files.\n";
	    exit
	}

    } else {
	warn "Xvnc process ID $pid already killed\n";
	$opt{'-kill'} =~ s/://;

	if (-e "/tmp/.X11-unix/X$opt{'-kill'}") {
	    print "Xvnc did not appear to shut down cleanly.";
	    print " Removing /tmp/.X11-unix/X$opt{'-kill'}\n";
	    unlink "/tmp/.X11-unix/X$opt{'-kill'}";
	}
	if (-e "/tmp/.X$opt{'-kill'}-lock") {
	    print "Xvnc did not appear to shut down cleanly.";
	    print " Removing /tmp/.X$opt{'-kill'}-lock\n";
	    unlink "/tmp/.X$opt{'-kill'}-lock";
	}
    }

    unlink $pidFile;
    exit;
}


#
# ParseOptions takes a list of possible options and a boolean indicating
# whether the option has a value following, and sets up an associative array
# %opt of the values of the options given on the command line. It removes all
# the arguments it uses from @ARGV and returns them in @optArgs.
#

sub ParseOptions
{
    local (@optval) = @_;
    local ($opt, @opts, %valFollows, @newargs);

    while (@optval) {
	$opt = shift(@optval);
	push(@opts,$opt);
	$valFollows{$opt} = shift(@optval);
    }

    @optArgs = ();
    %opt = ();

    arg: while (defined($arg = shift(@ARGV))) {
	foreach $opt (@opts) {
	    if ($arg eq $opt) {
		push(@optArgs, $arg);
		if ($valFollows{$opt}) {
		    if (@ARGV == 0) {
			&Usage();
		    }
		    $opt{$opt} = shift(@ARGV);
		    push(@optArgs, $opt{$opt});
		} else {
		    $opt{$opt} = 1;
		}
		next arg;
	    }
	}
	push(@newargs,$arg);
    }

    @ARGV = @newargs;
}


# Routine to make sure we're operating in a sane environment.
sub SanityCheck
{
    local ($cmd);

    # Get the program name
    ($prog) = ($0 =~ m|([^/]+)$|);

    #
    # Check we have all the commands we'll need on the path.
    #

 cmd:
    foreach $cmd ("uname","xauth") {
	for (split(/:/,$ENV{PATH})) {
	    if (-x "$_/$cmd") {
		next cmd;
	    }
	}
	die "$prog: couldn't find \"$cmd\" on your PATH.\n";
    }

    if($exedir eq "") {
      cmd2:
	foreach $cmd ("Xvnc","vncpasswd") {
	    for (split(/:/,$ENV{PATH})) {
		if (-x "$_/$cmd") {
		    next cmd2;
		}
	    }
	    die "$prog: couldn't find \"$cmd\" on your PATH.\n";
	}
    }
    else {
      cmd3:
	foreach $cmd ($exedir."Xvnc",$exedir."vncpasswd") {
	    for (split(/:/,$ENV{PATH})) {
		if (-x "$cmd") {
		    next cmd3;
		}
	    }
	    die "$prog: couldn't find \"$cmd\".\n";
	}
    }

    if (!defined($ENV{HOME})) {
	die "$prog: The HOME environment variable is not set.\n";
    }

    #
    # Find socket constants. 'use Socket' is a perl5-ism, so we wrap it in an
    # eval, and if it fails we try 'require "sys/socket.ph"'.  If this fails,
    # we just guess at the values.  If you find perl moaning here, just
    # hard-code the values of AF_INET and SOCK_STREAM.  You can find these out
    # for your platform by looking in /usr/include/sys/socket.h and related
    # files.
    #

    chop($os = `uname`);
    chop($osrev = `uname -r`);

    eval 'use Socket';
    if ($@) {
	eval 'require "sys/socket.ph"';
	if ($@) {
	    if (($os eq "SunOS") && ($osrev !~ /^4/)) {
		$AF_INET = 2;
		$SOCK_STREAM = 2;
	    } else {
		$AF_INET = 2;
		$SOCK_STREAM = 1;
	    }
	} else {
	    $AF_INET = &AF_INET;
	    $SOCK_STREAM = &SOCK_STREAM;
	}
    } else {
	$AF_INET = &AF_INET;
	$SOCK_STREAM = &SOCK_STREAM;
    }
}

cvs diff -r1.3 -r1.4 pkgsrc/net/tigervnc/patches/patch-CMakeLists.txt (expand / switch to unified diff)

--- pkgsrc/net/tigervnc/patches/patch-CMakeLists.txt 2016/04/21 12:47:58 1.3
+++ pkgsrc/net/tigervnc/patches/patch-CMakeLists.txt 2021/05/16 21:06:43 1.4
@@ -1,21 +1,12 @@ @@ -1,21 +1,12 @@
1$NetBSD: patch-CMakeLists.txt,v 1.3 2016/04/21 12:47:58 jperkin Exp $ 1$NetBSD: patch-CMakeLists.txt,v 1.4 2021/05/16 21:06:43 wiz Exp $
2 2
3--- CMakeLists.txt.orig 2015-07-11 13:00:36.000000000 +0000 3--- CMakeLists.txt.orig 2021-04-28 15:26:55.658924359 +0000
4+++ CMakeLists.txt 4+++ CMakeLists.txt
5@@ -26,7 +26,7 @@ set(RCVERSION 1,5,0,0) 5@@ -250,6 +250,7 @@ if(UNIX AND NOT APPLE)
6 # Installation paths 6 if(X11_Xrender_FOUND)
7 set(BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin") 7 set(FLTK_LIBRARIES ${FLTK_LIBRARIES} ${X11_Xrender_LIB})
8 set(DATA_DIR "${CMAKE_INSTALL_PREFIX}/share") 
9-set(MAN_DIR "${DATA_DIR}/man") 
10+set(MAN_DIR "${CMAKE_INSTALL_MANDIR}") 
11 set(LOCALE_DIR "${DATA_DIR}/locale") 
12 set(DOC_DIR "${CMAKE_INSTALL_PREFIX}/share/doc/${CMAKE_PROJECT_NAME}-${VERSION}") 
13  
14@@ -268,6 +268,7 @@ else() 
15 if(NOT APPLE) 
16 add_subdirectory(unix) 
17 endif() 8 endif()
18+ set(FLTK_LIBRARIES ${FLTK_LIBRARIES} -lpng -ljpeg) 9+ set(FLTK_LIBRARIES ${FLTK_LIBRARIES} -lpng)
19 endif() 10 endif()
20  11
21 if(ENABLE_NLS) 12 # Check for GNUTLS library

File Added: pkgsrc/net/tigervnc/patches/patch-common_rfb_util.h
$NetBSD: patch-common_rfb_util.h,v 1.1 2021/05/16 21:06:43 wiz Exp $

--- common/rfb/util.h.orig	2020-09-08 12:16:08.000000000 +0000
+++ common/rfb/util.h
@@ -31,7 +31,7 @@
 #include <limits.h>
 #include <string.h>
 
-struct timeval;
+#include <sys/time.h>
 
 #ifdef __GNUC__
 #  define __printf_attr(a, b) __attribute__((__format__ (__printf__, a, b)))

File Added: pkgsrc/net/tigervnc/patches/patch-unix_vncserver_vncserver.in
$NetBSD: patch-unix_vncserver_vncserver.in,v 1.1 2021/05/16 21:06:43 wiz Exp $

--- unix/vncserver/vncserver.in.orig	2020-09-08 12:16:08.000000000 +0000
+++ unix/vncserver/vncserver.in
@@ -51,6 +51,8 @@ if (-d "/etc/X11/fontpath.d") {
 }
 
 @fontpaths = ('/usr/share/X11/fonts', '/usr/share/fonts', '/usr/share/fonts/X11/');
+if (! -l "@PREFIX@/share/fonts/X11") {push(@fontpaths, '@PREFIX@/share/fonts/X11');}
+if (! -l "@X11BASE@/lib/X11/fonts") {push(@fontpaths, '@X11BASE@/lib/X11/fonts');}
 if (! -l "/usr/lib/X11") {push(@fontpaths, '/usr/lib/X11/fonts');}
 if (! -l "/usr/X11") {push(@fontpaths, '/usr/X11/lib/X11/fonts');}
 if (! -l "/usr/X11R6") {push(@fontpaths, '/usr/X11R6/lib/X11/fonts');}

File Added: pkgsrc/net/tigervnc/patches/Attic/patch-unix_vncserver_vncsession.c
$NetBSD: patch-unix_vncserver_vncsession.c,v 1.1 2021/05/16 21:06:43 wiz Exp $

--- unix/vncserver/vncsession.c.orig	2020-09-08 12:16:08.000000000 +0000
+++ unix/vncserver/vncsession.c
@@ -37,6 +37,10 @@
 #include <sys/types.h>
 #include <sys/wait.h>
 
+#ifndef HOST_NAME_MAX
+#define HOST_NAME_MAX 255
+#endif
+
 extern char **environ;
 
 // PAM service name

File Added: pkgsrc/net/tigervnc/patches/patch-unix_xserver_hw_vnc_vncBlockHandler.c
$NetBSD: patch-unix_xserver_hw_vnc_vncBlockHandler.c,v 1.1 2021/05/16 21:06:43 wiz Exp $

--- unix/xserver/hw/vnc/vncBlockHandler.c.orig	2018-07-16 14:08:55.000000000 +0000
+++ unix/xserver/hw/vnc/vncBlockHandler.c
@@ -17,14 +17,14 @@
  * USA.
  */
 
+#include <X11/Xpoll.h>
+
 #ifdef HAVE_DIX_CONFIG_H
 #include <dix-config.h>
 #endif
 
 #include <errno.h>
 
-#include <X11/Xpoll.h>
-
 #include "os.h"
 #include "dix.h"
 #include "scrnintstr.h"

File Added: pkgsrc/net/tigervnc/patches/patch-unix_xserver_os_inputthread.c
$NetBSD: patch-unix_xserver_os_inputthread.c,v 1.1 2021/05/16 21:06:43 wiz Exp $

--- unix/xserver/os/inputthread.c.orig	2021-04-28 14:41:01.046740215 +0000
+++ unix/xserver/os/inputthread.c
@@ -318,7 +317,9 @@ InputThreadDoWork(void *arg)
     sigfillset(&set);
     pthread_sigmask(SIG_BLOCK, &set, NULL);
 
+#ifndef __NetBSD__
     ddxInputThreadInit();
+#endif
 
     inputThreadInfo->running = TRUE;
 

File Deleted: pkgsrc/net/tigervnc/patches/Attic/patch-unix_vncserver

File Deleted: pkgsrc/net/tigervnc/patches/Attic/patch-unix_xserver117.patch

cvs diff -r1.4 -r1.5 pkgsrc/net/tigervnc/patches/patch-unix_xserver_hw_vnc_Makefile.am (expand / switch to unified diff)

--- pkgsrc/net/tigervnc/patches/patch-unix_xserver_hw_vnc_Makefile.am 2018/08/17 12:36:05 1.4
+++ pkgsrc/net/tigervnc/patches/patch-unix_xserver_hw_vnc_Makefile.am 2021/05/16 21:06:43 1.5
@@ -1,22 +1,22 @@ @@ -1,22 +1,22 @@
1$NetBSD: patch-unix_xserver_hw_vnc_Makefile.am,v 1.4 2018/08/17 12:36:05 wiz Exp $ 1$NetBSD: patch-unix_xserver_hw_vnc_Makefile.am,v 1.5 2021/05/16 21:06:43 wiz Exp $
2 2
3--- unix/xserver/hw/vnc/Makefile.am.orig 2018-07-16 14:08:55.000000000 +0000 3--- unix/xserver/hw/vnc/Makefile.am.orig 2020-09-08 12:16:08.000000000 +0000
4+++ unix/xserver/hw/vnc/Makefile.am 4+++ unix/xserver/hw/vnc/Makefile.am
5@@ -9,6 +9,9 @@ XREGION_LIB=$(TIGERVNC_BUILDDIR)/common/ 5@@ -8,6 +8,9 @@ NETWORK_LIB=$(TIGERVNC_BUILDDIR)/common/
6 UNIXCOMMON_LIB=$(TIGERVNC_BUILDDIR)/unix/common/libunixcommon.la 6 UNIXCOMMON_LIB=$(TIGERVNC_BUILDDIR)/unix/common/libunixcommon.la
7 COMMON_LIBS=$(NETWORK_LIB) $(RFB_LIB) $(RDR_LIB) $(XREGION_LIB) $(OS_LIB) $(UNIXCOMMON_LIB) 7 COMMON_LIBS=$(NETWORK_LIB) $(RFB_LIB) $(RDR_LIB) $(OS_LIB) $(UNIXCOMMON_LIB)
8  8
9+# Hack to get the C headers to work when included from C++ code 9+# Hack to get the C headers to work when included from C++ code
10+AM_CXXFLAGS = -fpermissive 10+AM_CXXFLAGS = -fpermissive
11+ 11+
12 noinst_LTLIBRARIES = libvnccommon.la 12 noinst_LTLIBRARIES = libvnccommon.la
13  13
14 HDRS = vncExtInit.h vncHooks.h \ 14 HDRS = vncExtInit.h vncHooks.h \
15@@ -68,6 +71,6 @@ libvnc_la_CPPFLAGS = $(XVNC_CPPFLAGS) -I 15@@ -67,6 +70,6 @@ libvnc_la_CPPFLAGS = $(XVNC_CPPFLAGS) -I
16  16
17 libvnc_la_LDFLAGS = -module -avoid-version -Wl,-z,now 17 libvnc_la_LDFLAGS = -module -avoid-version -Wl,-z,now
18  18
19-libvnc_la_LIBADD = libvnccommon.la $(COMMON_LIBS) 19-libvnc_la_LIBADD = libvnccommon.la $(COMMON_LIBS)
20+libvnc_la_LIBADD = libvnccommon.la $(COMMON_LIBS) $(OS_LIB) 20+libvnc_la_LIBADD = libvnccommon.la $(COMMON_LIBS) $(OS_LIB)
21  21
22 EXTRA_DIST = Xvnc.man 22 EXTRA_DIST = Xvnc.man