File tigervnc.spec of Package tigervnc.407

#
# spec file for package tigervnc
#
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
#
# 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 http://bugs.opensuse.org/
#


Name:           tigervnc
Version:        1.4.1
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:  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(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(xfont) >= 1.4.2
BuildRequires:  pkgconfig(xineramaproto)
BuildRequires:  pkgconfig(xkbfile)
BuildRequires:  pkgconfig(xproto)  >= 7.0.17
BuildRequires:  pkgconfig(xtrans) >= 1.2.2
Requires(post):   update-alternatives
Requires(postun): update-alternatives
Url:            http://sourceforge.net/apps/mediawiki/tigervnc/
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
Summary:        A high-performance, platform-neutral implementation of VNC
License:        GPL-2.0 and MIT
Group:          System/X11/Servers/XF86_4
# would need fixing to use fPIC in common/CMakeLists.txt
ExcludeArch:    s390
Source1:        tigervnc-1.4.1.tar.gz
Source2:        xorg-server-1.15.2.tar.bz2
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:       index.vnc

# Tiger vnc patches
Patch1:         tigervnc-newfbsize.patch
Patch2:         tigervnc-clean-pressed-key-on-exit.patch
Patch3:         N_use-icewm.patch
Patch4:         tigervnc-sf3495623.patch
Patch5:         u_tigervnc-dont-send-ascii-control-characters.patch
Patch6:         u_tigervnc-ignore-epipe-on-write.patch
Patch7:         U_include-vencrypt-only-if-any-subtype-present.patch
Patch8:         u_tigervnc-use_preferred_mode.patch
Patch9:         u_tigervnc-cve-2014-8240.patch
Patch10:        u_tigervnc-send-special-keys-directly.patch
Patch11:        n_tigervnc_Revert_Attempt_to_handle_Ctrl-key.patch
Patch12:        n_tigervnc-date-time.patch
Patch13:        u_terminate_instead_of_ignoring_restart.patch

# Xserver patches
Patch100:       N_xorg-server-xdmcp.patch
Patch101:       n_tigervnc-dont-build-gtf.patch
Patch102:       u_ppc64le-support.patch
Patch103:       U_BellProc-Send-bell-event-on-core-protocol-bell-when-requested.patch
Patch104:       U_fb-Fix-invalid-bpp-for-24bit-depth-window.patch
Patch105:       U_unchecked_malloc_may_allow_unauthed_client_to_crash_Xserver.patch
Patch106:       U_dix_integer_overflow_in_ProcPutImage.patch
Patch107:       U_dix_integer_overflow_in_GetHosts.patch
Patch108:       U_dix_integer_overflow_in_RegionSizeof.patch
Patch109:       U_dix_integer_overflow_in_REQUEST_FIXED_SIZE.patch
Patch110:       U_dbe_unvalidated_lengths_in_DbeSwapBuffers_calls.patch
Patch111:       U_Xi_unvalidated_lengths_in_Xinput_extension.patch
Patch112:       U_xcmisc_unvalidated_length_in_SProcXCMiscGetXIDList.patch
Patch113:       U_Xv_unvalidated_lengths_in_XVideo_extension_swapped_procs.patch
Patch114:       U_randr_unvalidated_lengths_in_RandR_extension_swapped_procs.patch
Patch115:       U_render_check_request_size_before_reading_it.patch
Patch116:       U_render_unvalidated_lengths_in_Render_extn_swapped_procs.patch
Patch117:       U_xfixes_unvalidated_length_in_SProcXFixesSelectSelectionInput.patch
Patch118:       U_glx_Be_more_paranoid_about_variable_length_requests.patch
Patch119:       U_glx_Be_more_strict_about_rejecting_invalid_image_sizes.patch
Patch120:       U_glx_Additional_paranoia_in___glXGetAnswerBuffer___GLX_GET_ANSWER_BUFFER.patch
Patch121:       U_glx_Fix_image_size_computation_for_EXT_texture_integer.patch
Patch122:       U_glx_Add_safe__add_mul_pad.patch
Patch123:       U_glx_Length_checking_for_GLXRender_requests.patch
Patch124:       U_glx_Integer_overflow_protection_for_non_generated_render_requests.patch
Patch125:       U_glx_Length_checking_for_RenderLarge_requests.patch
Patch126:       U_glx_Top_level_length_checking_for_swapped_VendorPrivate_requests.patch
Patch127:       U_glx_Request_length_checks_for_SetClientInfoARB.patch
Patch128:       U_glx_Length_checking_for_non_generated_vendor_private_requests.patch
Patch129:       U_glx_Length_checking_for_non_generated_single_request.patch
Patch130:       U_glx_Pass_remaining_request_length_into_varsize.patch
Patch131:       U_glx_Fix_mask_truncation_in___glXGetAnswerBuffer.patch     
Patch132:       U_dix_GetHosts_bounds_check_using_wrong_pointer_value.patch
Patch133:       U_dix_Missing_parens_in_REQUEST_FIXED_SIZE_macro.patch
Patch134:       U_dbe_Call_to_DDX_SwapBuffers_requires_address_of_int_not_unsigned_int.patch 
Patch135:       U_xkb-check-strings-length-against-request-size.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:       xinetd
# Needed by vncserver script.
Requires:       icewm-lite
Requires:       xkeyboard-config
Summary:        TigerVNC implementation of Xvnc
Group:          System/X11/Servers/XF86_4

%description -n xorg-x11-Xvnc
This is the TigerVNC implementation of Xvnc.

%prep
%setup -T -b1 -b2
cp -r ../xorg-server-*/* unix/xserver/

if [ -e unix/xserver/hw/xfree86/modes/xf86gtf.c -o -e unix/xserver/hw/xfree86/utils/gtf/gtf.c ]; then
  echo "Files hw/xfree86/modes/xf86gtf hw/xfree86/utils/gtf/gtf.c have to be excluded from the xserver source tar ball (bnc#85566)."
  exit 1
fi

%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p0
%patch6 -p0
%patch7 -p0
%patch8 -p0
%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p1
%patch13 -p1

pushd unix/xserver
patch -p1 < ../xserver115.patch
%patch100 -p1
%patch101 -p1
%patch102 -p1
%patch103 -p1
%patch104 -p1
%patch105 -p1
%patch106 -p1
%patch107 -p1
%patch108 -p1
%patch109 -p1
%patch110 -p1
%patch111 -p1
%patch112 -p1
%patch113 -p1
%patch114 -p1
%patch115 -p1
%patch116 -p1
%patch117 -p1
%patch118 -p1
%patch119 -p1
%patch120 -p1
%patch121 -p1
%patch122 -p1
%patch123 -p1
%patch124 -p1
%patch125 -p1
%patch126 -p1
%patch127 -p1
%patch128 -p1
%patch129 -p1
%patch130 -p1
%patch131 -p1
%patch132 -p1
%patch133 -p1
%patch134 -p1
%patch135 -p1
popd

%build
export CXXFLAGS="%optflags"
export CFLAGS="%optflags"
# Build all tigervnc
cmake -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} -DCMAKE_BUILD_TYPE=RelWithDebInfo
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 --enable-dri2 \
        --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%{_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

%find_lang '%{name}'

%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

%files -f %{name}.lang
%defattr(-,root,root,-)
%{_bindir}/vncviewer
%{_bindir}/vncviewer-tigervnc
%exclude /usr/share/doc/tigervnc-1.4.1
%doc LICENCE.TXT
%doc README.txt
%doc %_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)

%{_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

%exclude /usr/lib/debug/*
%exclude /usr/lib/debug/.*
%exclude /usr/src/debug

%doc java/com/tigervnc/vncviewer/README
%{_datadir}/vnc

%changelog
openSUSE Build Service is sponsored by