File xorg-x11-server.spec of Package xorg-x11-server

#
# spec file for package xorg-x11-server
#
# 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/
#


%ifarch s390 s390x
%define have_wayland 0
%else
%if 0%{?suse_version} >= 1320
%define have_wayland 1
%endif
%endif

Name:           xorg-x11-server

%define dirsuffix 1.17.2

Summary:        X
License:        MIT
Group:          System/X11/Servers/XF86_4
# Source URL: http://xorg.freedesktop.org/archive/individual/xserver/
Source0:        xorg-server-%{dirsuffix}.tar.bz2
Source1:        sysconfig.displaymanager.template
Source2:        README.updates
Source3:        xorgcfg.tar.bz2
Source4:        xorg-backtrace
# RPM Macros to be installed. The ABI Versions will be injected by configure.
Source90:       xorg-x11-server.macros.in
# Source91 and Source99 are used to ensure proper ABI provides.
Source91:       xorg-server-provides
Source92:       pre_checkin.sh

BuildRequires:  Mesa-devel
BuildRequires:  bison
BuildRequires:  flex
BuildRequires:  libtool
BuildRequires:  pkgconfig
BuildRequires:  pkgconfig(bigreqsproto) >= 1.1.0
BuildRequires:  pkgconfig(compositeproto)
BuildRequires:  pkgconfig(damageproto) >= 1.1
BuildRequires:  pkgconfig(dbus-1) >= 1.0
BuildRequires:  pkgconfig(dmx) >= 1.0.99.1
BuildRequires:  pkgconfig(dri) >= 7.8.0
BuildRequires:  pkgconfig(dri2proto)
BuildRequires:  pkgconfig(dri3proto)
BuildRequires:  pkgconfig(epoxy) >= 1.1
%if 0%{?have_wayland} == 1
BuildRequires:  pkgconfig(wayland-client)
%endif
BuildRequires:  pkgconfig(fixesproto) >= 4.1
BuildRequires:  pkgconfig(fontconfig)
BuildRequires:  pkgconfig(fontenc)
BuildRequires:  pkgconfig(fontsproto)
BuildRequires:  pkgconfig(fontutil)
BuildRequires:  pkgconfig(freetype2)
BuildRequires:  pkgconfig(glproto)
BuildRequires:  pkgconfig(ice)
BuildRequires:  pkgconfig(inputproto) >= 1.9.99.902
BuildRequires:  pkgconfig(kbproto) >= 1.0.3
BuildRequires:  pkgconfig(libdrm)
BuildRequires:  pkgconfig(libsystemd-daemon)
BuildRequires:  pkgconfig(openssl)
BuildRequires:  pkgconfig(pciaccess) >= 0.8.0
BuildRequires:  pkgconfig(pixman-1) >= 0.24
BuildRequires:  pkgconfig(presentproto)
BuildRequires:  pkgconfig(randrproto) >= 1.2.99.3
BuildRequires:  pkgconfig(renderproto) >= 0.11
BuildRequires:  pkgconfig(resourceproto)
BuildRequires:  pkgconfig(scrnsaverproto)
BuildRequires:  pkgconfig(sm)
BuildRequires:  pkgconfig(x11)
BuildRequires:  pkgconfig(xau)
BuildRequires:  pkgconfig(xaw7)
BuildRequires:  pkgconfig(xcb-aux)
BuildRequires:  pkgconfig(xcb-icccm)
BuildRequires:  pkgconfig(xcb-image)
BuildRequires:  pkgconfig(xcb-keysyms)
BuildRequires:  pkgconfig(xcb-renderutil)
BuildRequires:  pkgconfig(xcmiscproto) >= 1.2.0
BuildRequires:  pkgconfig(xdmcp)
BuildRequires:  pkgconfig(xext) >= 1.0.99.4
BuildRequires:  pkgconfig(xextproto) >= 7.1.99
BuildRequires:  pkgconfig(xf86dgaproto)
BuildRequires:  pkgconfig(xf86driproto)
BuildRequires:  pkgconfig(xfixes)
BuildRequires:  pkgconfig(xfont) >= 1.4.2
BuildRequires:  pkgconfig(xi) >= 1.2.99.1
BuildRequires:  pkgconfig(xineramaproto)
BuildRequires:  pkgconfig(xkbfile)
BuildRequires:  pkgconfig(xmu)
BuildRequires:  pkgconfig(xorg-macros)
BuildRequires:  pkgconfig(xp)
BuildRequires:  pkgconfig(xpm)
BuildRequires:  pkgconfig(xprintutil)
BuildRequires:  pkgconfig(xproto) >= 7.0.17
BuildRequires:  pkgconfig(xrender)
BuildRequires:  pkgconfig(xres)
BuildRequires:  pkgconfig(xshmfence)
BuildRequires:  pkgconfig(xt)
BuildRequires:  pkgconfig(xtrans) >= 1.3.1
BuildRequires:  pkgconfig(xtst) >= 1.0.99.2
BuildRequires:  pkgconfig(xv)
### udev support (broken on openSUSE 11.2, see also bnc #589997)
%if 0%{?suse_version} >= 1130
BuildRequires:  pkgconfig(libudev) >= 143
%endif

Version:        7.6_%{dirsuffix}
Release:        0
Url:            http://xorg.freedesktop.org/
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
%ifnarch s390 s390x
Requires(pre):  %fillup_prereq
%endif
Requires:       pkgconfig
Requires:       xkbcomp
Requires:       xorg-x11-fonts-core
%ifnarch s390 s390x
Requires:       libpixman-1-0 >= 0.24
%(cat %{SOURCE91})
%endif
Requires:       Mesa
%if 0%{?suse_version} >= 1315
Requires(post):   update-alternatives
Requires(postun): update-alternatives
%endif
Provides:       xorg-x11-Xvfb
Provides:       xorg-x11-server-glx
Obsoletes:      xorg-x11-Xvfb
Obsoletes:      xorg-x11-server-glx

Provides:       glamor = %{version}
Provides:       glamor-egl = %{version}
Obsoletes:      glamor < %{version}
Obsoletes:      glamor-egl < %{version}

Provides:       xf86-video-modesetting = %{version}
Obsoletes:      xf86-video-modesetting < %{version}

 # Remove (also from depending driver(s)) when updating X11_ABI_VIDEODRV by updating the server package - NOTE: also remove from xorg-x11-server.macros.in !
Provides:       X11_ABI_HAS_DPMS_GET_CAPABILITIES

# Xvfb requires keyboard files as well (bnc#797124)
Requires:       xkeyboard-config

# PATCH-FEATURE-OPENSUSE n_xorg-x11-server-rpmmacros.patch dimstar@opensuse.org -- Provide RPM macros to require correct ABI Versions.
Patch0:         N_xorg-x11-server-rpmmacros.patch
Patch1:         N_default-module-path.diff
Patch2:         N_zap_warning_xserver.diff
Patch3:         N_driver-autoconfig.diff
Patch4:         N_fix_fglrx_screendepth_issue.patch
Patch6:         N_fix-dpi-values.diff

Patch100:       u_fbdevhw.diff
Patch101:       u_confine_to_shape.diff
# PATCH-FIX-UPSTREAM u_x86emu-include-order.patch schwab@suse.de -- Change include order to avoid conflict with system header, remove duplicate definitions
Patch102:       u_x86emu-include-order.patch
Patch103:       u_randr_allow_rrselectinput_for_providerchange_and_resourcechange_events.patch
Patch104:       u_xorg-server-xdmcp.patch
Patch105:       ux_xserver_xvfb-randr.patch
# PATCH-FIX-UPSTREAM u_exa-only-draw-valid-trapezoids.patch bnc#853846 msrb@suse.com -- Fixes possible crash of server using invalid trapezoids. 2013-12-12 patch is waiting in mailing list to be upstreamed.
Patch106:       u_exa-only-draw-valid-trapezoids.patch
Patch111:       u_CloseConsole-Don-t-report-FatalError-when-shutting-down.patch
Patch112:       u_render-Cast-color-masks-to-unsigned-long-before-shifting-them.patch

Patch114:       u_ad-hoc-fix-for-mmap-s-truncated-offset-parameter-on-.patch
Patch115:       N_Force-swcursor-for-KMS-drivers-without-hw-cursor-sup.patch

Patch117:       xorg-x11-server-byte-order.patch

Patch160:       u_vesa-Add-VBEDPMSGetCapabilities-VBEDPMSGet.patch

Patch201:       U_linux-Add-linux_parse_vt_settings-and-linux_get_keep.patch
Patch202:       U_linux-Add-a-may_fail-paramter-to-linux_parse_vt_sett.patch
Patch203:       U_systemd-logind-Only-use-systemd-logind-integration-t.patch
Patch204:       U_systemd-logind-do-not-rely-on-directed-signals.patch

Patch1000:      n_xserver-optimus-autoconfig-hack.patch

Patch1162:      b_cache-xkbcomp-output-for-fast-start-up.patch
Patch1211:      b_0001-Prevent-XSync-Alarms-from-senslessly-calling-CheckTr.patch
Patch1222:      b_sync-fix.patch

Patch1300:      u_0001-os-make-sure-the-clientsWritable-fd_set-is-initializ.patch

%description
This package contains the X.Org Server.

%package extra
Summary:        Additional Xservers (Xdmx, Xephyr, Xnest)
Group:          System/X11/Servers/XF86_4
Requires:       Mesa
Requires:       xkbcomp
Requires:       xkeyboard-config
Requires:       xorg-x11-fonts-core
Provides:       xorg-x11-Xnest
Obsoletes:      xorg-x11-Xnest

%description extra
This package contains additional Xservers (Xdmx, Xephyr, Xnest).

%package sdk
Summary:        X
Group:          System/Libraries
Requires:       xorg-x11-server
Requires:       pkgconfig(fontconfig)
Requires:       pkgconfig(fontenc)
Requires:       pkgconfig(freetype2)
Requires:       pkgconfig(ice)
Requires:       pkgconfig(libdrm)
Requires:       pkgconfig(sm)
Requires:       pkgconfig(x11)
Requires:       pkgconfig(xau)
Requires:       pkgconfig(xdmcp)
Requires:       pkgconfig(xext)
Requires:       pkgconfig(xfixes)
Requires:       pkgconfig(xkbfile)
Requires:       pkgconfig(xmu)
Requires:       pkgconfig(xp)
Requires:       pkgconfig(xpm)
Requires:       pkgconfig(xprintutil)
Requires:       pkgconfig(xrender)
Requires:       pkgconfig(xt)
Requires:       pkgconfig(xtrans)
Requires:       pkgconfig(xv)
Provides:       xorg-x11-sdk
Obsoletes:      xorg-x11-sdk
Provides:       glamor-devel = %{version}
Obsoletes:      glamor-devel < %{version}

%description sdk
This package contains the X.Org Server SDK.

%package source
Summary:        Source code of X.Org server
Group:          Development/Sources

%description source
This package contains patched sources of X.Org Server.

%prep
%setup -q -n xorg-server-%{dirsuffix} -a3
# Early verification if the ABI Defines are correct. Let's not waste build cycles if the Provides are wrong at the end.
sh %{SOURCE92} --verify . %{SOURCE91}
cp %{SOURCE90} .
%patch0 -p1

%if 0%{?suse_version} < 1315
%patch1
%endif
%patch2 -p1
%patch3 -p0
%patch4 -p0
%patch6 -p0
#
%patch100
%patch101
%patch102 -p1
%patch103 -p1
%patch104 -p1
%patch105 -p1
%patch106 -p1

%patch111 -p1
%patch112 -p1

%patch114 -p1
%patch115 -p1

%patch117 -p1

%patch160 -p1

%patch201 -p1
%patch202 -p1
%patch203 -p1
%patch204 -p1

%patch1000 -p1

### disabled for now
#%patch1162 -p1
### disabled for now
#%patch1211 -p1
### patch222 might not be applicable anymore
#%patch1222 -p1

%patch1300 -p1

find . -type f \! -name '*.orig' \! -path ./source-file-list > source-file-list

%build
autoreconf -fi
%configure CFLAGS="%{optflags} -fno-strict-aliasing" \
	    --sysconfdir=/etc \
            --enable-xdmcp \
            --enable-xdm-auth-1 \
            --enable-dri \
            --enable-dri2 \
            --enable-dri3 \
            --enable-glamor \
            --enable-dmx \
            --enable-xnest \
            --enable-kdrive \
            --enable-kdrive-evdev \
            --enable-xephyr \
            --disable-xfake \
            --disable-xfbdev \
            --enable-record \
            --enable-xcsecurity \
            --enable-systemd-logind \
            --with-sha1=libcrypto \
            --disable-linux-acpi \
            --disable-linux-apm \
%ifarch s390 s390x
            --disable-xorg \
            --disable-aiglx \
%else
            --enable-xorg \
%if 0%{?suse_version} > 1120
	    --enable-config-udev \
%endif
%endif
%if 0%{?have_wayland} == 1
            --enable-xwayland \
%else
            --disable-xwayland \
%endif
            --with-log-dir="/var/log" \
            --with-os-name="openSUSE" \
            --with-os-vendor="SUSE LINUX" \
            --with-fontrootdir="/usr/share/fonts" \
            --with-xkb-path="/usr/share/X11/xkb" \
            --with-xkb-output="/var/lib/xkb/compiled" \
	    --with-default-font-path="/usr/share/fonts/misc:unscaled,\
/usr/share/fonts/Type1/,/usr/share/fonts/100dpi:unscaled,\
%if 0%{?suse_version} > 1210
/usr/share/fonts/75dpi:unscaled,/usr/share/fonts/ghostscript/,\
%else
/usr/share/fonts/75dpi:unscaled,/usr/share/fonts/URW/,\
%endif
/usr/share/fonts/cyrillic:unscaled,\
/usr/share/fonts/misc/sgi:unscaled,\
/usr/share/fonts/truetype/,built-ins"
make %{?_smp_mflags}
make -C hw/kdrive %{?_smp_mflags}

%install
%make_install
make -C hw/kdrive install DESTDIR=%{buildroot}
%ifnarch s390 s390x
# remove .la files
find %{buildroot}%{_libdir}/xorg/modules/ -name "*.la" | \
  xargs rm
install -m 644 hw/xfree86/parser/{xf86Parser.h,xf86Optrec.h} \
  %{buildroot}%{_includedir}/xorg
# bnc #632737
chmod u-s %{buildroot}%{_bindir}/Xorg
mkdir -p %{buildroot}%{_localstatedir}/lib/X11
ln -snf ../../../usr/bin/Xorg %{buildroot}%{_localstatedir}/lib/X11/X
ln -snf ../../var/lib/X11/X %{buildroot}%{_bindir}/X
%if 0%{?suse_version} > 1120
%ifnarch s390 s390x
mkdir -p %{buildroot}%{_sysconfdir}/X11/xorg.conf.d
cp %{buildroot}/%{_datadir}/X11/xorg.conf.d/10-evdev.conf %{buildroot}%{_sysconfdir}/X11/xorg.conf.d/
%endif
%endif
%if 0%{?suse_version} < 1315
mkdir -p %{buildroot}%{_libdir}/xorg/modules/updates/{fonts,input,linux,drivers,multimedia,extensions}
install -m 644 $RPM_SOURCE_DIR/README.updates %{buildroot}%{_libdir}/xorg/modules/updates
%endif
%else
rm -f %{buildroot}%{_datadir}/aclocal/*.m4
%endif
%ifarch s390 s390x
rm -f %{buildroot}%{_sysconfdir}/X11/10-evdev.conf
mkdir -p %{buildroot}%{_includedir}/xorg
install -m 644 include/list.h \
         %{buildroot}%{_includedir}/xorg
%endif
%ifnarch s390 s390x
mkdir -p %{buildroot}%{_localstatedir}/adm/fillup-templates
install -m 644 %_sourcedir/sysconfig.displaymanager.template \
  %{buildroot}%{_localstatedir}/adm/fillup-templates/sysconfig.displaymanager-%{name}
%endif
install -m 755 $RPM_SOURCE_DIR/xorg-backtrace %{buildroot}%{_bindir}/xorg-backtrace
install -D xorg-x11-server.macros %{buildroot}%{_sysconfdir}/rpm/macros.xorg-server
%ifnarch s390 s390x
%if 0%{?suse_version} >= 1315
mkdir -p %{buildroot}%{_libdir}/xorg/modules/extensions/xorg
mv  %{buildroot}%{_libdir}/xorg/modules/extensions/libglx.so \
    %{buildroot}%{_libdir}/xorg/modules/extensions/xorg/xorg-libglx.so
ln -snf %{_sysconfdir}/alternatives/libglx.so %{buildroot}%{_libdir}/xorg/modules/extensions/libglx.so
%endif
%endif

mkdir -p %{buildroot}/usr/src/xserver
xargs cp --parents --target-directory=%{buildroot}/usr/src/xserver < source-file-list

%post
%ifnarch s390 s390x
%{fillup_only -an displaymanager}
# Move SaX2 generated xorg.conf file to xorg.conf.sle11
#
# Only in very rare cases a static X configuration is still
# required on sle12. And, in some cases the migration from a
# static sle11 X configuration to a static sle12 X configuration
# is not possible at all, e.g. some video and input drivers
# are no longer available on sle12. In short, trying to migrate
# will result in more harm than benefit.
if [ -f etc/X11/xorg.conf -a ! -f etc/X11/xorg.conf.sle11 ]; then
  echo "xorg.conf exists and xorg.conf.sle11 does not"
  if grep -q "SaX generated X11 config file" etc/X11/xorg.conf; then
    echo "move SaX generated xorg.conf to xorg.conf.sle11"
    mv etc/X11/xorg.conf etc/X11/xorg.conf.sle11
    # remove dangling link (bnc#879360, comment#15)
    rm -f etc/X11/XF86Config
    # prevent %postun of NVIDIA/fglrx driver packages from restoring xorg.conf
    # backup or running sax2 as fallback to create a new xorg.conf (bcn#877315)
    rm -f etc/X11/xorg.conf.nvidia-post \
          etc/X11/xorg.conf.fglrx-post
    chmod -x usr/sbin/sax2
  fi
fi
%if 0%{?suse_version} >= 1315
%_sbindir/update-alternatives \
    --force --install %{_libdir}/xorg/modules/extensions/libglx.so libglx.so %{_libdir}/xorg/modules/extensions/xorg/xorg-libglx.so 50
%endif
%endif
exit 0

%ifnarch s390 s390x
%if 0%{?suse_version} >= 1315
%postun
if [ "$1" = 0 ] ; then
   "%_sbindir/update-alternatives" --remove libglx.so %{_libdir}/xorg/modules/extensions/xorg/xorg-libglx.so
fi
%endif
%endif

%files
%defattr(-,root,root)
%ifnarch s390 s390x
%if 0%{?suse_version} > 1120
%dir %{_sysconfdir}/X11/xorg.conf.d
%config(noreplace) %{_sysconfdir}/X11/xorg.conf.d/10-evdev.conf
%dir %{_datadir}/X11/xorg.conf.d
%{_datadir}/X11/xorg.conf.d/10-*.conf
%endif
%dir %{_localstatedir}/lib/X11
%endif
%dir %{_localstatedir}/lib/xkb
%dir %{_localstatedir}/lib/xkb/compiled
%dir %{_libdir}/xorg
%{_libdir}/xorg/protocol.txt
%{_mandir}/man1/*
%exclude %{_mandir}/man1/Xdmx.1*
%exclude %{_mandir}/man1/Xephyr.1*
%exclude %{_mandir}/man1/Xnest.1*
%{_localstatedir}/lib/xkb/compiled/README.compiled
%ifnarch s390 s390x
%{_bindir}/Xorg
%{_bindir}/X

%{_bindir}/cvt
%{_bindir}/gtf
%{_libdir}/xorg/modules/
%{_mandir}/man4/*
%{_mandir}/man5/*
%{_localstatedir}/adm/fillup-templates/sysconfig.displaymanager-%{name}
%{_localstatedir}/lib/X11/X
%if 0%{?suse_version} >= 1315
%ghost %{_sysconfdir}/alternatives/libglx.so
%endif
%endif
%if 0%{?have_wayland} == 1
%{_bindir}/Xwayland
%endif
%{_bindir}/Xvfb
%{_bindir}/xorg-backtrace

%files extra
%defattr(-,root,root)
%{_bindir}/Xephyr
%{_bindir}/Xnest
%{_bindir}/Xdmx
%{_bindir}/dmxaddinput
%{_bindir}/dmxaddscreen
%{_bindir}/dmxinfo
%{_bindir}/dmxreconfig
%{_bindir}/dmxresize
%{_bindir}/dmxrminput
%{_bindir}/dmxrmscreen
%{_bindir}/dmxtodmx
%{_bindir}/dmxwininfo
%{_bindir}/vdltodmx
%{_bindir}/xdmxconfig
%{_mandir}/man1/Xdmx.1*
%{_mandir}/man1/Xephyr.1*
%{_mandir}/man1/Xnest.1*

%files sdk
%defattr(-,root,root)
%{_includedir}/xorg/
%ifnarch s390 s390x
%{_libdir}/pkgconfig/*.pc
%{_datadir}/aclocal/*.m4
%endif
%{_sysconfdir}/rpm/macros.xorg-server

%files source
%defattr(-,root,root)
/usr/src/xserver

%changelog
openSUSE Build Service is sponsored by