# # spec file for package tigervnc # # Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via https://bugs.opensuse.org/ # %define vncgroup vnc %define vncuser vnc %define tlskey %{_sysconfdir}/vnc/tls.key %define tlscert %{_sysconfdir}/vnc/tls.cert Name: tigervnc Version: 1.6.0 Release: 0 Obsoletes: tightvnc <= 1.3.9 Provides: tightvnc = 1.3.9.5 Provides: vnc BuildRequires: Mesa-devel BuildRequires: autoconf BuildRequires: automake BuildRequires: cmake BuildRequires: fltk-devel BuildRequires: gcc-c++ BuildRequires: gcc-c++ BuildRequires: java-devel BuildRequires: jpackage-utils BuildRequires: libjpeg-devel BuildRequires: libopenssl-devel BuildRequires: libtool BuildRequires: nasm BuildRequires: xorg-x11-server-sdk BuildRequires: xorg-x11-server-source >= 1.19.6 BuildRequires: pkgconfig(x11) BuildRequires: pkgconfig(xext) BuildRequires: pkgconfig(xproto) BuildRequires: pkgconfig(xtst) # Because of keytool to build java client BuildRequires: libgcrypt-devel BuildRequires: libgpg-error-devel BuildRequires: mozilla-nss BuildRequires: pam-devel BuildRequires: pkg-config BuildRequires: xmlto BuildRequires: xorg-x11-libICE-devel BuildRequires: xorg-x11-libSM-devel BuildRequires: pkgconfig(bigreqsproto) >= 1.1.0 BuildRequires: pkgconfig(compositeproto) >= 0.4 BuildRequires: pkgconfig(damageproto) >= 1.1 BuildRequires: pkgconfig(dri) BuildRequires: pkgconfig(fixesproto) >= 4.1 BuildRequires: pkgconfig(fontsproto) BuildRequires: pkgconfig(fontutil) BuildRequires: pkgconfig(gl) BuildRequires: pkgconfig(glproto) BuildRequires: pkgconfig(gnutls) BuildRequires: pkgconfig(inputproto) >= 1.9.99.902 BuildRequires: pkgconfig(kbproto) >= 1.0.3 BuildRequires: pkgconfig(libtasn1) BuildRequires: pkgconfig(openssl) BuildRequires: pkgconfig(pciaccess) >= 0.8.0 BuildRequires: pkgconfig(pixman-1) >= 0.15.20 BuildRequires: pkgconfig(presentproto) >= 1.0 BuildRequires: pkgconfig(randrproto) >= 1.2.99.3 BuildRequires: pkgconfig(recordproto) >= 1.13.99.1 BuildRequires: pkgconfig(renderproto) >= 0.11 BuildRequires: pkgconfig(resourceproto) BuildRequires: pkgconfig(scrnsaverproto) >= 1.1 BuildRequires: pkgconfig(videoproto) BuildRequires: pkgconfig(xau) BuildRequires: pkgconfig(xcmiscproto) >= 1.2.0 BuildRequires: pkgconfig(xdmcp) BuildRequires: pkgconfig(xextproto) >= 7.0.99.3 BuildRequires: pkgconfig(xf86driproto) >= 2.1.1 BuildRequires: pkgconfig(xfont) >= 1.4.2 BuildRequires: pkgconfig(xfont2) >= 2.0.0 BuildRequires: pkgconfig(xineramaproto) BuildRequires: pkgconfig(xkbfile) BuildRequires: pkgconfig(xorg-macros) >= 1.14 BuildRequires: pkgconfig(xproto) >= 7.0.17 BuildRequires: pkgconfig(xtrans) >= 1.2.2 Requires(post): update-alternatives Requires(postun): update-alternatives URL: http://tigervnc.org/ BuildRoot: %{_tmppath}/%{name}-%{version}-build Summary: A high-performance, platform-neutral implementation of VNC # would need fixing to use fPIC in common/CMakeLists.txt License: GPL-2.0-only AND MIT Group: System/X11/Servers/XF86_4 ExcludeArch: s390 Source1: https://github.com/TigerVNC/tigervnc/archive/v%{version}.tar.gz Source3: vnc.xinetd Source4: 10-libvnc.conf Source5: vnc-server.firewall Source6: vnc-httpd.firewall Source7: vnc_inetd_httpd Source8: vnc.reg Source9: vncpasswd.arg Source10: vnc.pam Source11: with-vnc-key.sh Source12: index.vnc Patch1: tigervnc-newfbsize.patch Patch2: tigervnc-clean-pressed-key-on-exit.patch Patch3: u_tigervnc-ignore-epipe-on-write.patch Patch4: n_tigervnc-date-time.patch Patch5: U_include-vencrypt-only-if-any-subtype-present.patch Patch6: u_tigervnc-cve-2014-8240.patch Patch8: u_tigervnc_update_default_vncxstartup.patch Patch9: u_add_allowoverride_parameter.patch Patch10: u_build_libXvnc_as_separate_library.patch Patch11: N_tigervnc_revert_fltk_1_3_3_requirements.patch Patch12: N_use-icewm.patch Patch13: u_tigervnc-show-unencrypted-warning.patch Patch14: U_tigervnc_clear_up_zlibinstream_reset_behaviour.patch Patch15: U_tigervnc-fix-buffer-overflow-in-ModifiablePixelBuffer-fillRect.patch Patch16: U_tigervnc-prevent-invalid-PixelBuffer-accesses.patch Patch17: U_tigervnc-check-invalid-RRE-rects.patch Patch18: U_tigervnc_proper_global_init_deinit_of_GnuTLS.patch Patch19: U_tigervnc-crop-cursor-before-calling-maskRect.patch Patch20: U_tigervnc-restore-cropping-API-to-maskRect.patch Patch21: U_tigervnc-delete-underlying-ssecurity-in-SSecurityVeNCrypt.patch Patch22: U_tigervnc-fix-checkNoWait-logic-in-SSecurityPlain.patch Patch23: U_tigervnc-fix-crash-from-integer-overflow-in-SMsgReader-readClientCutText.patch Patch24: U_tigervnc-limit-max-username-password-size-in-SSecurityPlain.patch Patch25: U_tigervnc-prevent-double-free-by-crafted-fences.patch Patch26: U_tigervnc-prevent-leak-of-SecurityServer-and-ClientServer.patch Patch27: U_tigervnc-better-check-for-screen-visibility.patch Patch28: U_tigervnc-limit-size-of-cursor-accepted-by-client.patch Patch29: U_allow_multiple_certs_with_same_dn_in_saved_certs_file.patch Patch30: U_handle_certificate_verification_for_saved_certs_correctly.patch Patch31: u_tigervnc-add-autoaccept-parameter.patch Patch32: U_tigervnc-fix-race-problem-with-detecting-listening-inetd-sockets.patch Patch33: n_java_fix_16bit_depth.patch Patch34: U_tigervnc-xserver-Add-support-for-xorg-version-1.18.patch Patch35: U_tigervnc-Add-xorg-xserver-1.19-support.patch Patch36: U_tigervnc-fix-inetd-not-working-with-xserver-1-19.patch Patch41: 0001-Make-ZlibInStream-more-robust-against-failures.patch Patch43: 0003-Restrict-PixelBuffer-dimensions-to-safe-values.patch Patch44: 0004-Add-write-protection-to-OffsetPixelBuffer.patch Patch45: 0005-Handle-empty-Tight-gradient-rects.patch Patch46: 0006-Add-unit-test-for-PixelFormat-sanity-checks.patch Patch47: 0007-Fix-depth-sanity-test-in-PixelFormat.patch Patch48: 0008-Add-sanity-checks-for-PixelFormat-shift-values.patch Patch49: 0009-Remove-unused-FixedMemOutStream.patch Patch50: 0010-Use-size_t-for-lengths-in-stream-objects.patch Patch51: 0011-Be-defensive-about-overflows-in-stream-objects.patch Patch52: 0012-Add-unit-tests-for-PixelFormat.is888-detection.patch Patch53: 0013-Handle-pixel-formats-with-odd-shift-values.patch Patch54: U_tigervnc-Fix-xorg-xserver-1.19-support.patch Patch55: U_tigervnc-Flush-socket-before-checking-buffer.patch Patch60: U_0001-Properly-store-certificate-exceptions.patch Patch61: U_Move-UserPasswordGetter-out-of-CConn.patch Patch62: U_0002-Properly-store-certificate-exceptions-in-Java-viewer.patch %description TigerVNC is a high-performance, platform-neutral implementation of VNC (Virtual Network Computing), a client/server application that allows users to launch and interact with graphical applications on remote machines. TigerVNC provides the levels of performance necessary to run 3D and video applications; it attempts to maintain a common look and feel and re-use components, where possible, across the various platforms that it supports. TigerVNC also provides extensions for advanced authentication methods and TLS encryption. %package -n xorg-x11-Xvnc Requires(post): /usr/sbin/useradd Requires(post): /usr/sbin/groupadd # Needed to generate certificates Requires: openssl # Needed to serve java applet Requires: python Requires: python-pyOpenSSL Requires: xauth Requires: xinetd # Needed by vncserver script. Requires: icewm-lite Requires: xinit Requires: xkbcomp Requires: xkeyboard-config Requires: xorg-x11-fonts-core # For the with-vnc-key.sh script Requires: /bin/hostname Provides: xorg-x11-Xvnc:/usr/lib/vnc/with-vnc-key.sh Summary: TigerVNC implementation of Xvnc Group: System/X11/Servers/XF86_4 %description -n xorg-x11-Xvnc This is the TigerVNC implementation of Xvnc. %package -n libXvnc1 Summary: X extension to control VNC module Group: System/Libraries %description -n libXvnc1 Xvnc extension allows X clients to read and change VNC configuration. %package -n libXvnc-devel Summary: X extension to control VNC module Group: Development/Libraries/C and C++ Requires: libXvnc1 = %version %description -n libXvnc-devel Xvnc extension allows X clients to read and change VNC configuration. %prep %setup -T -b1 -q cp -r /usr/src/xserver/* unix/xserver/ %patch1 -p1 %patch2 -p1 %patch3 -p0 %patch4 -p1 %patch5 -p0 %patch6 -p1 %patch8 -p1 %patch9 -p1 %patch10 -p1 %patch11 -p1 %patch12 -p1 %patch13 -p1 %patch14 -p1 %patch15 -p1 %patch16 -p1 %patch17 -p1 %patch18 -p1 %patch19 -p1 %patch20 -p1 %patch21 -p1 %patch22 -p1 %patch23 -p1 %patch24 -p1 %patch25 -p1 %patch26 -p1 %patch27 -p1 %patch28 -p1 %patch29 -p1 %patch30 -p1 %patch32 -p1 %patch33 -p1 %patch34 -p1 %patch35 -p1 %patch36 -p1 %patch41 -p1 %patch43 -p1 %patch44 -p1 %patch45 -p1 %patch46 -p1 %patch47 -p1 %patch48 -p1 %patch49 -p1 %patch50 -p1 %patch51 -p1 %patch52 -p1 %patch53 -p1 %patch54 -p1 %patch55 -p1 %patch60 -p1 %patch61 -p1 %patch62 -p1 %patch31 -p1 pushd unix/xserver # Please adjust version of org-x11-server-source in BuildRequires # when changing ... patch -p1 < ../xserver119.patch popd %build export CXXFLAGS="%optflags -fPIC" export CFLAGS="%optflags -fPIC" # Build all tigervnc cmake -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TIMESTAMP="??-??-?? ??:??" make %{?_smp_mflags} # Build Xvnc server pushd unix/xserver autoreconf -fi %configure \ --disable-xorg --disable-xnest --disable-xvfb --disable-dmx \ --disable-xwin --disable-xephyr --disable-kdrive --with-pic \ --disable-static --disable-xinerama \ --with-xkb-path="/usr/share/X11/xkb" \ --with-xkb-output="/var/lib/xkb/compiled" \ --enable-glx --enable-dri \ %ifnarch s390 s390x --enable-dri2 \ %endif --disable-config-dbus \ --disable-config-hal \ --disable-config-udev \ --without-dtrace \ --disable-unit-tests \ --disable-devel-docs \ --with-fontrootdir=/usr/share/fonts \ --disable-selective-werror make %{?_smp_mflags} V=1 popd # Build java client pushd java cmake -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} make %{?_smp_mflags} popd %install %make_install mv $RPM_BUILD_ROOT/usr/bin/vncviewer $RPM_BUILD_ROOT/usr/bin/vncviewer-tigervnc mv $RPM_BUILD_ROOT/usr/share/man/man1/vncviewer.1 $RPM_BUILD_ROOT/usr/share/man/man1/vncviewer-tigervnc.1 pushd unix/xserver %make_install popd pushd java mkdir -p $RPM_BUILD_ROOT%{_datadir}/vnc/classes install -m755 VncViewer.jar $RPM_BUILD_ROOT%{_datadir}/vnc/classes popd install -D -m 644 %{SOURCE3} $RPM_BUILD_ROOT/etc/xinetd.d/vnc %ifnarch s390 s390x install -D -m 644 %{SOURCE4} $RPM_BUILD_ROOT/etc/X11/xorg.conf.d/10-libvnc.conf %endif install -D -m 644 %{SOURCE5} $RPM_BUILD_ROOT/etc/sysconfig/SuSEfirewall2.d/services/vnc-server install -D -m 644 %{SOURCE6} $RPM_BUILD_ROOT/etc/sysconfig/SuSEfirewall2.d/services/vnc-httpd install -D -m 755 %{SOURCE7} $RPM_BUILD_ROOT%{_bindir}/vnc_inetd_httpd install -D -m 644 %{SOURCE8} $RPM_BUILD_ROOT/etc/slp.reg.d/vnc.reg install -D -m 755 %{SOURCE9} $RPM_BUILD_ROOT%{_bindir}/vncpasswd.arg install -D -m 644 %{SOURCE10} $RPM_BUILD_ROOT/etc/pam.d/vnc install -D -m 644 %{SOURCE12} $RPM_BUILD_ROOT%{_datadir}/vnc/classes ln -s -f %{_sysconfdir}/alternatives/vncviewer $RPM_BUILD_ROOT%{_bindir}/vncviewer ln -s -f %{_sysconfdir}/alternatives/vncviewer.1.gz $RPM_BUILD_ROOT%{_mandir}/man1/vncviewer.1.gz mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/vnc mkdir -p $RPM_BUILD_ROOT%{_libexecdir}/vnc install -D -m 755 %{SOURCE11} $RPM_BUILD_ROOT%{_libexecdir}/vnc %find_lang '%{name}' %pre -n xorg-x11-Xvnc getent group %{vncgroup} > /dev/null || groupadd -r %{vncgroup} || : getent passwd %{vncuser} > /dev/null || useradd -r -g %{vncgroup} -d /var/lib/empty -s /sbin/nologin -c "user for VNC" %{vncuser} || : usermod -G shadow -a %{vncuser} || : %post %_sbindir/update-alternatives \ --install %{_bindir}/vncviewer vncviewer %{_bindir}/vncviewer-tigervnc 20 \ --slave %{_mandir}/man1/vncviewer.1.gz vncviewer.1.gz %{_mandir}/man1/vncviewer-tigervnc.1.gz %postun if [ "$1" = 0 ] ; then "%_sbindir/update-alternatives" --remove vncviewer /usr/bin/vncviewer-tigervnc fi %post -n libXvnc1 -p /sbin/ldconfig %postun -n libXvnc1 -p /sbin/ldconfig %files -f %{name}.lang %defattr(-,root,root,-) %ghost %{_bindir}/vncviewer %{_bindir}/vncviewer-tigervnc %doc LICENCE.TXT README.txt %ghost %_mandir/man1/vncviewer.1.gz %doc %_mandir/man1/vncviewer-tigervnc.1.gz %ghost %_sysconfdir/alternatives/vncviewer %ghost %_sysconfdir/alternatives/vncviewer.1.gz %files -n xorg-x11-Xvnc %defattr(-,root,root) %exclude /usr/share/doc/tigervnc-%{version} %doc LICENCE.TXT %doc README.txt %{_bindir}/Xvnc %{_bindir}/vncconfig %{_bindir}/vncpasswd %{_bindir}/vncpasswd.arg %{_bindir}/vncserver %{_bindir}/x0vncserver %{_bindir}/vnc_inetd_httpd %exclude %{_mandir}/man1/Xserver.1* %{_mandir}/man1/Xvnc.1* %{_mandir}/man1/vncconfig.1* %{_mandir}/man1/vncpasswd.1* %{_mandir}/man1/vncserver.1* %{_mandir}/man1/x0vncserver.1* %exclude /usr/%{_lib}/xorg/protocol.txt %exclude /usr/%{_lib}/xorg/modules/extensions/libvnc.la %ifnarch s390 s390x %{_libdir}/xorg/modules/extensions/libvnc.so %else %exclude %{_libdir}/xorg/modules %exclude %{_libdir}/xorg/modules/extensions %exclude %{_libdir}/xorg/modules/extensions/libvnc.so %endif %exclude /var/lib/xkb/compiled/README.compiled %config %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/vnc-server %config %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/vnc-httpd %ifnarch s390 s390x %config(noreplace) /etc/X11/xorg.conf.d/10-libvnc.conf %else %exclude /etc/X11/xorg.conf.d %endif %config(noreplace) /etc/xinetd.d/vnc %dir /etc/slp.reg.d %config(noreplace) /etc/slp.reg.d/vnc.reg %config %{_sysconfdir}/pam.d/vnc %exclude /usr/lib/debug/* %exclude /usr/lib/debug/.* %exclude /usr/src/debug %doc java/com/tigervnc/vncviewer/README %{_datadir}/vnc %dir %attr(0755,%{vncuser},%{vncuser}) %{_sysconfdir}/vnc %ghost %attr(0600,%{vncuser},%{vncuser}) %config(noreplace) %{tlskey} %ghost %attr(0644,%{vncuser},%{vncuser}) %config(noreplace) %{tlscert} %{_libexecdir}/vnc %files -n libXvnc1 %defattr(-,root,root) %{_libdir}/libXvnc.so.1* %files -n libXvnc-devel %defattr(-,root,root) %{_libdir}/libXvnc.so %{_includedir}/X11/extensions/Xvnc.h %changelog