# TODO
# - consider XSELINUX by default
# - Xvfb initscript runs Xvfb as root! add user there!
-# - upstream --enable-suid-wrapper vs Xwrapper patch?
#
# Conditional build:
%bcond_with dbus # D-BUS support for configuration (if no udev)
%bcond_with hal # HAL support for configuration (if no udev)
%bcond_without udev # UDEV support for configuration
%bcond_without dri2 # DRI2 extension
+%bcond_without dri3 # DRI3 extension
%bcond_without record # RECORD extension
%bcond_with xcsecurity # XC-SECURITY extension (deprecated)
%bcond_with xf86bigfont # XF86BigFont extension
#
# ABI versions, see hw/xfree86/common/xf86Module.h
%define xorg_xserver_server_ansic_abi 0.4
-%define xorg_xserver_server_extension_abi 9.0
-%define xorg_xserver_server_font_abi 0.6
-%define xorg_xserver_server_videodrv_abi 19.0
-%define xorg_xserver_server_xinput_abi 21.0
+%define xorg_xserver_server_extension_abi 10.0
+%define xorg_xserver_server_videodrv_abi 24.0
+%define xorg_xserver_server_xinput_abi 24.1
%define pixman_ver 0.30.0
Summary: X.org server
Summary(pl.UTF-8): Serwer X.org
Name: xorg-xserver-server
-Version: 1.17.3
+Version: 1.20.0
Release: 1
License: MIT
Group: X11/Servers
Source0: http://xorg.freedesktop.org/releases/individual/xserver/xorg-server-%{version}.tar.bz2
-# Source0-md5: 886eb794750f95d7e35e766a0ed0e8a6
+# Source0-md5: c1ca1ea0a905ea788da03c77cc38b06e
Source1: 10-quirks.conf
Source2: xserver.pamd
Source10: %{name}-Xvfb.init
Source11: %{name}-Xvfb.sysconfig
Source12: xvfb-run.sh
-
-Patch0: %{name}-xwrapper.patch
-Patch1: %{name}-pic-libxf86config.patch
-Patch2: dtrace-link.patch
+Patch1: %{name}-xwrapper-pam.patch
Patch4: %{name}-builtin-SHA1.patch
Patch6: 110_nvidia_slowdow_fix.patch
-Patch7: %{name}-include-defs.patch
URL: http://xorg.freedesktop.org/
BuildRequires: Mesa-libGL-devel >= 7.8.1
%{?with_dri2:BuildRequires: Mesa-libGL-devel >= 9.2.0}
BuildRequires: dbus-devel >= 1.0
%endif
%{?with_hal:BuildRequires: hal-devel}
-BuildRequires: libdrm-devel >= 2.4.46
+BuildRequires: libdrm-devel >= 2.4.89
%if %{with glamor} || %{with wayland}
BuildRequires: libepoxy-devel
%endif
BuildRequires: pixman-devel >= %{pixman_ver}
BuildRequires: pkgconfig >= 1:0.19
%{?with_systemtap:BuildRequires: systemtap-sdt-devel}
+BuildRequires: systemd-devel >= 209
BuildRequires: udev-devel >= 1:143
# wayland-client
%{?with_wayland:BuildRequires: wayland-devel >= 1.3.0}
+%{?with_wayland:BuildRequires: wayland-protocols >= 1.10}
BuildRequires: xcb-util-devel
BuildRequires: xcb-util-image-devel
BuildRequires: xcb-util-keysyms-devel
+BuildRequires: xcb-util-renderutil-devel
BuildRequires: xcb-util-wm-devel
BuildRequires: xmlto >= 0.0.20
BuildRequires: xorg-app-mkfontscale
+BuildRequires: xorg-font-font-util >= 1.1
BuildRequires: xorg-lib-libX11-devel >= 1.6
BuildRequires: xorg-lib-libXau-devel
%{?with_dmx:BuildRequires: xorg-lib-libXaw-devel}
BuildRequires: xorg-lib-libXdmcp-devel
BuildRequires: xorg-lib-libXext-devel >= 1.0.99.4
BuildRequires: xorg-lib-libXfixes-devel
-BuildRequires: xorg-lib-libXfont-devel >= 1.4.2
+BuildRequires: xorg-lib-libXfont2-devel >= 2.0.0
BuildRequires: xorg-lib-libXi-devel >= 1.2.99.1
%{?with_dmx:BuildRequires: xorg-lib-libXmu-devel}
%{?with_dmx:BuildRequires: xorg-lib-libXpm-devel}
BuildRequires: xorg-proto-damageproto-devel >= 1.1
%{?with_dmx:BuildRequires: xorg-proto-dmxproto-devel >= 2.2.99.1}
%{?with_dri2:BuildRequires: xorg-proto-dri2proto-devel >= 2.8}
-BuildRequires: xorg-proto-dri3proto-devel >= 1.0
+BuildRequires: xorg-proto-dri3proto-devel >= 1.2
BuildRequires: xorg-proto-fixesproto-devel >= 5.0
BuildRequires: xorg-proto-fontcacheproto-devel
BuildRequires: xorg-proto-fontsproto-devel >= 2.1.3
BuildRequires: xorg-proto-kbproto-devel >= 1.0.3
BuildRequires: xorg-proto-presentproto-devel >= 1.0
BuildRequires: xorg-proto-printproto-devel
-BuildRequires: xorg-proto-randrproto-devel >= 1.4.0
+BuildRequires: xorg-proto-randrproto-devel >= 1.6.0
%{?with_record:BuildRequires: xorg-proto-recordproto-devel >= 1.13.99.1}
BuildRequires: xorg-proto-renderproto-devel >= 0.11
BuildRequires: xorg-proto-resourceproto-devel >= 1.2.0
BuildRequires: xorg-proto-xf86miscproto-devel
BuildRequires: xorg-proto-xf86vidmodeproto-devel >= 2.2.99.1
BuildRequires: xorg-proto-xineramaproto-devel
-BuildRequires: xorg-proto-xproto-devel >= 7.0.26
+BuildRequires: xorg-proto-xproto-devel >= 7.0.31
BuildRequires: xorg-sgml-doctools >= 1.8
BuildRequires: xorg-util-util-macros >= 1.14
#BR: tslib (for KDRIVE only)
Requires(triggerpostun): sed >= 4.0
%{?with_glamor:Requires: Mesa-libgbm >= 10.2.0}
-Requires: libdrm >= 2.4.46
+Requires: libdrm >= 2.4.89
Requires: pixman >= %{pixman_ver}
Requires: udev-libs >= 1:143
Requires: xkeyboard-config
# for rgb.txt
Requires: xorg-app-rgb >= 0.99.3
Requires: xorg-app-xkbcomp
-Requires: xorg-lib-libXfont >= 1.4.2
+Requires: xorg-lib-libXfont2 >= 2.0.0
Requires: xorg-lib-libpciaccess >= 0.12.901
Requires: xorg-lib-libxshmfence >= 1.1
Suggests: dbus-x11 >= 1.0
Suggests: udev-acl >= 1:143
%{?with_udev:Suggests: udev-core >= 1:143}
Suggests: xkeyboard-config
-Suggests: xorg-driver-input-evdev
+Suggests: xorg-driver-input-libinput
# Usual desktop setups need least one video driver to run, see xorg.log which one exactly
Suggests: xorg-driver-video
+Provides: xorg-driver-video-modesetting
Provides: xorg-xserver-libdri = %{version}-%{release}
Provides: xorg-xserver-module(dri)
Provides: xorg-xserver-server(ansic-abi) = %{xorg_xserver_server_ansic_abi}
Provides: xorg-xserver-server(extension-abi) = %{xorg_xserver_server_extension_abi}
-Provides: xorg-xserver-server(font-abi) = %{xorg_xserver_server_font_abi}
Provides: xorg-xserver-server(videodrv-abi) = %{xorg_xserver_server_videodrv_abi}
Provides: xorg-xserver-server(xinput-abi) = %{xorg_xserver_server_xinput_abi}
Obsoletes: X11-Xserver < 1:7.0.0
Obsoletes: xorg-driver-video-modesetting
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
-# avoid self-dependencies on included modules
-%define _noautoreq libscanpci.so libxf1bpp.so
-
%description
Xorg server is a generally used X server which uses display hardware.
It requires proper driver for your display hardware.
Requires: pixman >= %{pixman_ver}
Requires: xorg-lib-libX11 >= 1.6
Requires: xorg-lib-libXext >= 1.0.99.4
-Requires: xorg-lib-libXfont >= 1.4.2
+Requires: xorg-lib-libXfont2 >= 2.0.0
Requires: xorg-lib-libXi >= 1.2.99.1
Requires: xorg-lib-libdmx >= 1.0.99.1
Group: X11/Servers
Requires: pixman >= %{pixman_ver}
Requires: xorg-lib-libXext >= 1.0.99.4
-Requires: xorg-lib-libXfont >= 1.4.2
+Requires: xorg-lib-libXfont2 >= 2.0.0
Obsoletes: X11-Xnest < 1:7.0.0
Obsoletes: XFree86-Xnest < 1:7.0.0
Obsoletes: Xserver-Xnest
Requires: Mesa-libGL >= 7.1.0
Requires: libxcb >= 1.6
Requires: pixman >= %{pixman_ver}
-Requires: xorg-lib-libXfont >= 1.4.2
+Requires: xorg-lib-libXfont2 >= 2.0.0
%description -n xorg-xserver-Xephyr
Xephyr is a kdrive server that outputs to a window on a pre-existing
istniejącym ekranie X. Można o nim myśleć jako o Xnest ze wsparciem do
wspólczesnych rozszerzeń jak composite, damage i randr.
-%package -n xorg-xserver-Xfbdev
-Summary: Xfbdev - Linux framebuffer device X server
-Summary(pl.UTF-8): Xfbdev - serwer X dla framebuffera
-Group: X11/Servers
-Requires: pixman >= %{pixman_ver}
-Requires: xorg-lib-libXfont >= 1.4.2
-
-%description -n xorg-xserver-Xfbdev
-Xfbdev is a Linux framebuffer device X server based on the kdrive X
-server.
-
-%description -n xorg-xserver-Xfbdev -l pl.UTF-8
-Xfbdev jest serwerem X dla framebuffera opartym na kdrive.
-
%package -n xorg-xserver-Xvfb
Summary: Xvfb - virtual framebuffer X server
Summary(pl.UTF-8): Xvfb - serwer X z wirtualnym framebufferem
Requires: xkeyboard-config
Requires: xorg-app-xauth
Requires: xorg-app-xkbcomp
-Requires: xorg-lib-libXfont >= 1.4.2
+Requires: xorg-lib-libXfont2 >= 2.0.0
Obsoletes: X11-Xvfb < 1:7.0.0
Obsoletes: XFree86-Xvfb < 1:7.0.0
Requires: pixman >= %{pixman_ver}
Requires: xorg-lib-libX11 >= 1.6
Requires: xorg-lib-libXext >= 1.0.99.4
-Requires: xorg-lib-libXfont >= 1.4.2
+Requires: xorg-lib-libXfont2 >= 2.0.0
Requires: xorg-lib-libXi >= 1.2.99.1
%description -n xorg-xserver-Xwayland
Summary(pl.UTF-8): Pliki nagłówkowe dla serwera X.org
Group: X11/Development/Libraries
Requires: Mesa-libGL-devel >= 7.8.0
-Requires: libdrm-devel >= 2.4.46
+Requires: libdrm-devel >= 2.4.89
Requires: pixman-devel >= %{pixman_ver}
+Requires: xorg-lib-libXfont2-devel >= 2.0.0
Requires: xorg-lib-libpciaccess-devel >= 0.12.901
Requires: xorg-lib-libxkbfile-devel
%{?with_dri2:Requires: xorg-proto-dri2proto-devel >= 2.8}
+%{?with_dri3:Requires: xorg-proto-dri3proto-devel >= 1.0}
Requires: xorg-proto-dri3proto-devel >= 1.0
Requires: xorg-proto-fontsproto-devel >= 2.1.3
Requires: xorg-proto-glproto-devel >= 1.4.17
Requires: xorg-proto-inputproto-devel >= 2.3
Requires: xorg-proto-kbproto-devel >= 1.0.3
Requires: xorg-proto-presentproto-devel >= 1.0
-Requires: xorg-proto-randrproto-devel >= 1.4.0
+Requires: xorg-proto-randrproto-devel >= 1.6.0
Requires: xorg-proto-renderproto-devel >= 0.11
Requires: xorg-proto-resourceproto-devel >= 1.2.0
Requires: xorg-proto-scrnsaverproto-devel >= 1.1
Requires: xorg-proto-xextproto-devel >= 1:7.3.0
Requires: xorg-proto-xf86driproto-devel >= 2.1.0
Requires: xorg-proto-xineramaproto-devel
-Requires: xorg-proto-xproto-devel >= 7.0.26
+Requires: xorg-proto-xproto-devel >= 7.0.31
Obsoletes: X11-Xserver-devel < 1:7.0.0
Obsoletes: XFree86-Xserver-devel < 1:7.0.0
%{?with_glamor:Obsoletes: glamor-devel}
%prep
%setup -q -n xorg-server-%{version}
-%patch0 -p0
%patch1 -p1
-%patch2 -p1
%patch4 -p1
%patch6 -p1
-#unfortunately breaks build
-#patch7 -p1
-
# xserver uses pixman-1 API/ABI so put that explictly here
sed -i -e 's#<pixman\.h#<pixman-1/pixman.h#g' ./fb/fb.h ./include/miscstruct.h ./render/picture.h
%build
API=$(awk '/#define ABI_ANSIC_VERSION/ { split($0,A,/[(,)]/); printf("%d.%d",A[2], A[3]); }' hw/xfree86/common/xf86Module.h)
-if [ $API != %{xorg_xserver_server_ansic_abi} ]; then
+if [ "$API" != "%{xorg_xserver_server_ansic_abi}" ]; then
echo "Set %%define xorg_xserver_server_ansic_abi to $API and rerun."
exit 1
fi
API=$(awk '/#define ABI_EXTENSION_VERSION/ { split($0,A,/[(,)]/); printf("%d.%d",A[2], A[3]); }' hw/xfree86/common/xf86Module.h)
-if [ $API != %{xorg_xserver_server_extension_abi} ]; then
+if [ "$API" != "%{xorg_xserver_server_extension_abi}" ]; then
echo "Set %%define xorg_xserver_server_extension_abi to $API and rerun."
exit 1
fi
-API=$(awk '/#define ABI_FONT_VERSION/ { split($0,A,/[(,)]/); printf("%d.%d",A[2], A[3]); }' hw/xfree86/common/xf86Module.h)
-if [ $API != %{xorg_xserver_server_font_abi} ]; then
- echo "Set %%define xorg_xserver_server_font_abi to $API and rerun."
- exit 1
-fi
API=$(awk '/#define ABI_VIDEODRV_VERSION/ { split($0,A,/[(,)]/); printf("%d.%d",A[2], A[3]); }' hw/xfree86/common/xf86Module.h)
-if [ $API != %{xorg_xserver_server_videodrv_abi} ]; then
+if [ "$API" != "%{xorg_xserver_server_videodrv_abi}" ]; then
echo "Set %%define xorg_xserver_server_videodrv_abi to $API and rerun."
exit 1
fi
API=$(awk '/#define ABI_XINPUT_VERSION/ { split($0,A,/[(,)]/); printf("%d.%d",A[2], A[3]); }' hw/xfree86/common/xf86Module.h)
-if [ $API != %{xorg_xserver_server_xinput_abi} ]; then
+if [ "$API" != "%{xorg_xserver_server_xinput_abi}" ]; then
echo "Set %%define xorg_xserver_server_xinput_abi to $API and rerun."
exit 1
fi
%{__autoheader}
%{__automake}
%configure \
+ --libexecdir=%{_libdir}/xorg \
--with-os-name="PLD/Linux" \
--with-os-vendor="PLD/Team" \
--with-default-font-path="%{_fontsdir}/misc,%{_fontsdir}/TTF,%{_fontsdir}/OTF,%{_fontsdir}/Type1,%{_fontsdir}/100dpi,%{_fontsdir}/75dpi" \
--with-xkb-output=/var/lib/xkb \
--disable-linux-acpi \
--disable-linux-apm \
- --enable-aiglx \
%{?with_dbus:--enable-config-dbus} \
--enable-config-hal%{!?with_hal:=no} \
--enable-config-udev%{!?with_udev:=no} \
--enable-dga \
%{?with_dmx:--enable-dmx} \
--enable-dri2%{!?with_dri2:=no} \
+ --enable-dri3%{!?with_dri3:=no} \
%{?with_glamor:--enable-glamor} \
- --enable-glx-tls \
- --enable-install-libxf86config \
--enable-kdrive \
%{?with_libunwind:--enable-libunwind} \
%{?with_record:--enable-record} \
%{?with_xcsecurity:--enable-xcsecurity} \
--enable-xephyr \
%{?with_xf86bigfont:--enable-xf86bigfont} \
- --disable-xfake \
- --enable-xfbdev \
%{?with_xselinux:--enable-xselinux} \
%{?with_wayland:--enable-xwayland} \
%{!?with_systemtap:--without-dtrace} \
--without-fop \
+ --enable-suid-wrapper \
--with-systemd-daemon
%{__make} -j1
install -p %{SOURCE10} $RPM_BUILD_ROOT/etc/rc.d/init.d/Xvfb
cp -p %{SOURCE11} $RPM_BUILD_ROOT/etc/sysconfig/Xvfb
+# Xorg.wrap config
+cat >$RPM_BUILD_ROOT/etc/X11/Xwrapper.config <<EOF
+# allowed values: rootonly console anybody pam
+allowed_users = pam
+
+# set to yes if hardware or console access requires root rights (and Xwrapper fails to detect it)
+#needs_root_rights = yes
+EOF
+
+# compatibility with old xwrapper
+ln -s %{_libdir}/xorg/Xorg.wrap $RPM_BUILD_ROOT%{_bindir}/Xwrapper
+
# prepare source package
install -d $RPM_BUILD_ROOT%{_usrsrc}/%{name}-%{version}
cp -a * $RPM_BUILD_ROOT%{_usrsrc}/%{name}-%{version}
%attr(755,root,root) %{_bindir}/gtf
%dir %{_libdir}/xorg
%{_libdir}/xorg/protocol.txt
+%attr(755,root,root) %{_libdir}/xorg/Xorg
+%attr(4755,root,root) %{_libdir}/xorg/Xorg.wrap
%dir %{_libdir}/xorg/modules
%attr(755,root,root) %{_libdir}/xorg/modules/libexa.so
%attr(755,root,root) %{_libdir}/xorg/modules/libfb.so
%config(missingok) /etc/security/console.apps/xserver
%{?with_dbus:/etc/dbus-1/system.d/xorg-server.conf}
%dir /etc/X11/xorg.conf.d
+%config(noreplace) %verify(not md5 mtime size) /etc/X11/Xwrapper.config
%dir %{_datadir}/X11/xorg.conf.d
# overwrite these settings with local configs in /etc/X11/xorg.conf.d
-%verify(not md5 mtime size) %{_datadir}/X11/xorg.conf.d/10-evdev.conf
%verify(not md5 mtime size) %{_datadir}/X11/xorg.conf.d/10-quirks.conf
%{_mandir}/man1/Xorg.1*
+%{_mandir}/man1/Xorg.wrap.1*
%{_mandir}/man1/Xserver.1*
%{_mandir}/man1/cvt.1*
%{_mandir}/man1/gtf.1*
%{_mandir}/man4/exa.4*
%{_mandir}/man4/fbdevhw.4*
%{_mandir}/man4/modesetting.4*
+%{_mandir}/man5/Xwrapper.config.5*
%{_mandir}/man5/xorg.conf.5*
%{_mandir}/man5/xorg.conf.d.5*
%attr(755,root,root) %{_bindir}/Xephyr
%{_mandir}/man1/Xephyr.1*
-%files -n xorg-xserver-Xfbdev
-%defattr(644,root,root,755)
-%attr(755,root,root) %{_bindir}/Xfbdev
-
%files -n xorg-xserver-Xvfb
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/Xvfb
%defattr(644,root,root,755)
%doc doc/{Xinput,Xserver-spec}.html %{?with_systemtap:doc/dtrace/Xserver-DTrace.html}
%{_includedir}/xorg
-%{_libdir}/libxf86config.a
-%{_libdir}/libxf86config.la
%{_aclocaldir}/xorg-server.m4
%{_pkgconfigdir}/xorg-server.pc