# $Id$ PNAME="tigervnc" PVER="1.4.2" PBUILD="r1" SPLIT_PACKAGES="tigervnc-common tigervnc-server tigervnc-xserver-module tigervnc-server-applet tigervnc" PCAT="net-misc" HOMEPAGE="http://www.tigervnc.com/" SRCFILE="v${PVER}.tar.gz" SRCDIR="${BUILDDIR}/${PNAME}-${PVER}" XORG_PVER="1.16.3" XORG="xorg-server-${XORG_PVER}.tar.bz2" XORGSDIR="${BUILDDIR}/xorg-server-${XORG_PVER}" XORGDDIR="${SRCDIR}/unix/xserver" COMMON_DEPEND=">= x11-libs/libX11-1.6 >= x11-libs/libXext-1.3 >= x11-libs/libSM-1.2 >= x11-libs/libXtst-1.2 >= x11-libs/libXi-1.7 >= x11-libs/fltk-1.3 >= sys-libs/zlib-1.2.5 >= sys-libs/libstdc++-4.8 >= app-crypt/gnutls-3.2" COMMON_FONTS_DEPEND=">= media-fonts/font-adobe-100dpi-1 >= media-fonts/font-adobe-75dpi-1 >= media-fonts/font-alias-1 >= media-fonts/font-cursor-misc-1 >= media-fonts/font-misc-misc-1" SERVER_DEPEND=">= x11-libs/libXfont-1.4 >= x11-libs/libxkbfile-1.0.8 >= x11-libs/pixman-0.32 >= media-libs/freetype-2.5 >= x11-apps/xauth-1.0.7 >= x11-apps/xsetroot-1.1 >= x11-misc/xkeyboard-config-2.8 >= sys-fs/udev-208" MODULE_DEPEND=">= virtual/X-ABI-EXTENSION-8 >= virtual/X-ABI-VIDEODRV-15 >= virtual/X-ABI-XINPUT-20" APPLET_DEPEND=">= virtual/java" SDEPEND="${COMMON_DEPEND} ${COMMON_FONTS_DEPEND} ${SERVER_DEPEND} ${MODULE_DEPEND} ${APPLET_DEPEND} >= dev-util/desktop-file-utils-0.15 >= dev-lang/nasm-2 == x11-proto/xorg-protos-7.7.${XORG_PVER} >= x11-libs/libpciaccess-0.13 >= media-fonts/font-util-1.3 >= virtual/java-jdk >= gnome-base/librsvg-2.40 >= media-gfx/imagemagick-6.8" msetfeature "!check" sminclude cmake xorg xdg mtools cleanutils SRC_URI=( https://github.com/TigerVNC/${PNAME}/archive/${SRCFILE} mirror://${PNAME}/${SRCFILE} http://ftp.x.org/pub/individual/xserver/${XORG} mirror://xorg-server/${XORG} mirror://${PNAME}/tigervnc_48.png mirror://${PNAME}/${PNAME}-1.0.90-cookie.patch mirror://${PNAME}/${PNAME}-1.0.90-ldnow.patch mirror://${PNAME}/${PNAME}-1.1.0-gethomedir.patch mirror://${PNAME}/${PNAME}-${PVER}-rh692048.patch mirror://${PNAME}/${PNAME}-1.3.0-inetd-nowait.patch mirror://${PNAME}/${PNAME}-1.3.0-getmaster.patch mirror://${PNAME}/${PNAME}-1.3.0-shebang.patch mirror://${PNAME}/${PNAME}-1.3.0-key_is_down.patch ) UP2SEPERATOR="v" UP2DATE="updatecmd https://github.com/TigerVNC/${PNAME}/releases | highesttarball gz" split_info_tigervnc-common() { DESCRIPTION="Common TigerVNC libs and utils." DEPEND="${COMMON_DEPEND}" PROVIDE="virtual/vnc-client" } split_info_tigervnc-server() { DESCRIPTION="TigerVNC VNC server." DEPEND="== net-misc/tigervnc-common-${PVER} ${COMMON_DEPEND} ${COMMON_FONTS_DEPEND} ${SERVER_DEPEND}" PROVIDE="virtual/vnc" } split_info_tigervnc-xserver-module() { DESCRIPTION="TigerVNC Xorg server module." DEPEND="== net-misc/tigervnc-common-${PVER} ${COMMON_FONTS_DEPEND} ${MODULE_DEPEND}" PROVIDE="virtual/vnc-x11" } split_info_tigervnc-server-applet() { DESCRIPTION="TigerVNC VNC server." DEPEND="${APPLET_DEPEND}" PROVIDE="virtual/vnc-java" } split_info_tigervnc() { DESCRIPTION="TigerVNC is a suite of VNC servers and clients that have a focus on performance and remote display functionality." DEPEND="== net-misc/tigervnc-common-${PVER} == net-misc/tigervnc-server-${PVER} == net-misc/tigervnc-xserver-module-${PVER} == net-misc/tigervnc-server-applet-${PVER}" PKGTYPE="virtual" # drop everything we don't need in the meta package: INHERITS="" SPECIAL_VARS="" SPECIAL_FUNCTIONS="" SDEPEND="" PROVIDE="" unset -f preinstall unset -f postinstall unset -f preremove unset -f postremove } src_prepare() { # munpack needs a suffix tar xvf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${BUILDDIR} || die munpack ${XORG} || die cp -r ${XORGSDIR}/* ${XORGDDIR} || die cd ${SRCDIR} # patchwork # create X server cookie via mcookie mpatch ${PNAME}-1.0.90-cookie.patch || die # link libvnc.so "now" to catch "undefined symbol" errors during Xorg startup mpatch ${PNAME}-1.0.90-ldnow.patch || die mpatch ${PNAME}-1.1.0-gethomedir.patch || die mpatch ${PNAME}-${PVER}-rh692048.patch || die # fix busy loop when run from inetd in nowait mode mpatch ${PNAME}-1.3.0-inetd-nowait.patch || die # libvnc.so: don't use unexported GetMaster function mpatch ${PNAME}-1.3.0-getmaster.patch || die # don't use shebang in vncserver script. mpatch ${PNAME}-1.3.0-shebang.patch || die # libvnc.so: don't use unexported key_is_down function mpatch ${PNAME}-1.3.0-key_is_down.patch || die # apply the included xorg patch cd ${XORGDDIR} local xorg_patch_ver="${XORG_PVER%.*}" xorg_patch_ver="${xorg_patch_ver//.}" patch -Np1 -i ../xserver${xorg_patch_ver}.patch || die # reconfigure xorg cd ${XORGDDIR} mautoreconf || die } src_compile() { cd ${SRCDIR} cmake_configure || die mmake || die # build the x11 module cd ${XORGDDIR} mconfigure \ --with-default-font-path=/usr/share/fonts/misc,/usr/share/fonts/75dpi,/usr/share/fonts/100dpi,/usr/share/fonts/TTF,/usr/share/fonts/Type1 \ --with-fontdir=/usr/share/fonts \ --with-rgb-path=/usr/share/X11/rgb.txt \ --with-xkb-output=/usr/share/X11/xkb \ --with-module-dir=/usr/$(mlibdir)/xorg/modules \ --with-dri-driver-path=/usr/$(mlibdir)/dri \ --with-pic \ --without-dtrace \ --disable-xorg \ --disable-composite \ --enable-xtrap \ --disable-xinerama \ --enable-glx \ --disable-xnest \ --disable-xvfb \ --disable-dmx \ --disable-xwin \ --disable-xephyr \ --disable-kdrive \ --disable-static \ --disable-dri \ --enable-dri2 \ --disable-dri3 \ --disable-present \ --disable-config-dbus \ --disable-config-hal \ --disable-config-udev \ --enable-install-libxf86config \ --disable-unit-tests \ --disable-devel-docs \ --disable-selective-werror \ || die mmake || die # build icons cd ${SRCDIR}/media mmake -j1 || die # build the java applet cd ${SRCDIR}/java # cmake_configure does not work because of LIBDIR definition cmake \ -DCMAKE_VERBOSE_MAKEFILE=ON \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr \ ${SRCDIR}/java \ || die mmake -j1 || die } src_install_tigervnc-common() { cd ${SRCDIR} mmake DESTDIR=${BINDIR} install || die # cleanup zapmost ${BINDIR} usr/bin/vncpasswd usr/bin/vncviewer usr/share/locale || die # install man pages cp ${SRCDIR}/vncviewer/vncviewer.{man,1} || die cp ${SRCDIR}/unix/vncpasswd/vncpasswd.{man,1} || die minstallman ${SRCDIR}/vncviewer/vncviewer.1 || die minstallman ${SRCDIR}/unix/vncpasswd/vncpasswd.1 || die # desktop icon minstallpixmap media/icons/tigervnc_48.png vncviewer.png || die minstall_desktop_icon \ --name "TigerVNC Viewer" \ --file "vncviewer" \ --comment "Connect to VNC server and display remote desktop" \ --exec /usr/bin/vncviewer \ --icon vncviewer.png \ --categories "Application,Network" \ || die # docs minstalldocs README LICENCE.TXT || die } src_install_tigervnc-server() { cd ${SRCDIR} mmake DESTDIR=${BINDIR} install || die # install server module and binaries cd ${XORGDDIR}/hw/vnc mmake DESTDIR=${BINDIR} install || die # cleanup rm ${BINDIR}/usr/bin/vncpasswd || die rm ${BINDIR}/usr/bin/vncviewer || die rm -r ${BINDIR}/usr/share/man || die rm -r ${BINDIR}/usr/$(mlibdir) || die # install man pages cp ${SRCDIR}/unix/vncconfig/vncconfig.{man,1} || die cp ${SRCDIR}/unix/vncserver.{man,1} || die cp ${SRCDIR}/unix/x0vncserver/x0vncserver.{man,1} || die cp ${XORGDDIR}/hw/vnc/Xvnc.{man,1} || die minstallman ${SRCDIR}/unix/vncconfig/vncconfig.1 || die minstallman ${SRCDIR}/unix/vncserver.1 || die minstallman ${SRCDIR}/unix/x0vncserver/x0vncserver.1 || die minstallman ${XORGDDIR}/hw/vnc/Xvnc.1 || die } src_install_tigervnc-xserver-module() { # install server module and binaries cd ${XORGDDIR}/hw/vnc mmake DESTDIR=${BINDIR} install || die # cleanup zapmost ${BINDIR} usr/$(mlibdir) || die # not needed rm ${BINDIR}/usr/$(mlibdir)/xorg/modules/extensions/libvnc.la || die # create a example config minstalldir /etc/X11/xorg.conf.d || die MCONFIG=/etc/X11/xorg.conf.d/20-vnc.conf mclearconfig maddconfig '# Example vnc module configuration' maddconfig '# Uncomment these entries and set a password with the vncpasswd program' maddconfig maddconfig 'Section "Module"' maddconfig ' Load "vnc"' maddconfig 'EndSection' maddconfig maddconfig 'Section "Screen"' maddconfig ' Identifier "Screen0"' maddconfig ' Option "SecurityTypes" "VncAuth"' maddconfig ' Option "UserPasswdVerifier" "VncAuth"' maddconfig ' Option "PasswordFile" "/root/.vnc/passwd"' maddconfig 'EndSection' } src_install_tigervnc-server-applet() { cd ${SRCDIR}/java minstalldir /usr/share/vnc/classes || die minstallexec VncViewer.jar /usr/share/vnc/classes || die minstallfile com/tigervnc/vncviewer/index.vnc /usr/share/vnc/classes || die } postinstall_tigervnc-xserver-module() { echo echo 'Add following to /etc/X11/xorg.conf.d/20-vnc.conf for native X display support:' echo ' Section "Module"' echo ' ...' echo ' Load "vnc"' echo ' EndSection' echo echo 'To enable VNC password authentification use the vncpasswd program:' echo ' "vncpasswd"' echo echo 'You will also need to tell the VNC module where the password is stored:' echo ' Section "Screen"' echo ' ...' echo ' Option "SecurityTypes" "VncAuth"' echo ' Option "UserPasswdVerifier" "VncAuth"' echo ' Option "PasswordFile" "/root/.vnc/passwd"' echo ' EndSection' echo }