You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
519 lines
16 KiB
519 lines
16 KiB
# This package is an experiment in active integration of upstream SCM with |
|
# Fedora packaging. It works something like this: |
|
# |
|
# The "pristine" source is actually a git repo (with no working checkout). |
|
# The first step of %%prep is to check it out and switch to a "fedora" branch. |
|
# If you need to add a patch to the server, just do it like a normal git |
|
# operation, dump it with git-format-patch to a file in the standard naming |
|
# format, and add a PatchN: line. If you want to push something upstream, |
|
# check out the master branch, pull, cherry-pick, and push. |
|
|
|
# X.org requires lazy relocations to work. |
|
%undefine _hardened_build |
|
%undefine _strict_symbol_defs_build |
|
|
|
#global gitdate 20161026 |
|
%global stable_abi 1 |
|
|
|
%if !0%{?gitdate} || %{stable_abi} |
|
# Released ABI versions. Have to keep these manually in sync with the |
|
# source because rpm is a terrible language. |
|
%global ansic_major 0 |
|
%global ansic_minor 4 |
|
%global videodrv_major 24 |
|
%global videodrv_minor 1 |
|
%global xinput_major 24 |
|
%global xinput_minor 1 |
|
%global extension_major 10 |
|
%global extension_minor 0 |
|
%endif |
|
|
|
%if 0%{?gitdate} |
|
# For git snapshots, use date for major and a serial number for minor |
|
%global minor_serial 0 |
|
%global git_ansic_major %{gitdate} |
|
%global git_ansic_minor %{minor_serial} |
|
%global git_videodrv_major %{gitdate} |
|
%global git_videodrv_minor %{minor_serial} |
|
%global git_xinput_major %{gitdate} |
|
%global git_xinput_minor %{minor_serial} |
|
%global git_extension_major %{gitdate} |
|
%global git_extension_minor %{minor_serial} |
|
%endif |
|
|
|
%global pkgname xorg-server |
|
|
|
Summary: X.Org X11 X server |
|
Name: xorg-x11-server |
|
Version: 1.20.14 |
|
Release: 1%{?gitdate:.%{gitdate}}%{?dist} |
|
URL: http://www.x.org |
|
License: MIT |
|
|
|
#VCS: git:git://git.freedesktop.org/git/xorg/xserver |
|
%if 0%{?gitdate} |
|
# git snapshot. to recreate, run: |
|
# ./make-git-snapshot.sh `cat commitid` |
|
Source0: xorg-server-%{gitdate}.tar.xz |
|
#Source0: http://www.x.org/pub/individual/xserver/%{pkgname}-%{version}.tar.bz2 |
|
Source1: make-git-snapshot.sh |
|
Source2: commitid |
|
%else |
|
Source0: https://www.x.org/pub/individual/xserver/%{pkgname}-%{version}.tar.xz |
|
Source1: gitignore |
|
%endif |
|
|
|
Source4: 10-quirks.conf |
|
|
|
Source10: xserver.pamd |
|
|
|
# "useful" xvfb-run script |
|
Source20: http://svn.exactcode.de/t2/trunk/package/xorg/xorg-server/xvfb-run.sh |
|
|
|
# for requires generation in drivers |
|
Source30: xserver-sdk-abi-requires.release |
|
Source31: xserver-sdk-abi-requires.git |
|
|
|
# maintainer convenience script |
|
Source40: driver-abi-rebuild.sh |
|
|
|
# From Debian use intel ddx driver only for gen4 and older chipsets |
|
Patch1: 06_use-intel-only-on-pre-gen4.diff |
|
# Default to xf86-video-modesetting on GeForce 8 and newer |
|
Patch2: 0001-xfree86-use-modesetting-driver-by-default-on-GeForce.patch |
|
|
|
# Default to va_gl on intel i965 as we use the modesetting drv there |
|
# va_gl should probably just be the default everywhere ? |
|
Patch3: 0001-xf86-dri2-Use-va_gl-as-vdpau_driver-for-Intel-i965-G.patch |
|
|
|
# Submitted upstream, but not going anywhere |
|
Patch5: 0001-autobind-GPUs-to-the-screen.patch |
|
|
|
# because the display-managers are not ready yet, do not upstream |
|
Patch6: 0001-Fedora-hack-Make-the-suid-root-wrapper-always-start-.patch |
|
|
|
# Backports from current stable "server-1.20-branch": |
|
# <empty> |
|
|
|
# Backports from "master" upstream: |
|
# <empty> |
|
|
|
BuildRequires: make |
|
BuildRequires: systemtap-sdt-devel |
|
BuildRequires: git-core |
|
BuildRequires: automake autoconf libtool pkgconfig |
|
BuildRequires: xorg-x11-util-macros >= 1.17 |
|
|
|
BuildRequires: xorg-x11-proto-devel >= 7.7-10 |
|
BuildRequires: xorg-x11-font-utils >= 7.2-11 |
|
|
|
BuildRequires: dbus-devel libepoxy-devel systemd-devel |
|
BuildRequires: xorg-x11-xtrans-devel >= 1.3.2 |
|
BuildRequires: libXfont2-devel libXau-devel libxkbfile-devel libXres-devel |
|
BuildRequires: libfontenc-devel libXtst-devel libXdmcp-devel |
|
BuildRequires: libX11-devel libXext-devel |
|
BuildRequires: libXinerama-devel libXi-devel |
|
|
|
# DMX config utils buildreqs. |
|
BuildRequires: libXt-devel libdmx-devel libXmu-devel libXrender-devel |
|
BuildRequires: libXi-devel libXpm-devel libXaw-devel libXfixes-devel |
|
|
|
BuildRequires: pkgconfig(epoxy) |
|
BuildRequires: pkgconfig(xshmfence) >= 1.1 |
|
BuildRequires: libXv-devel |
|
BuildRequires: pixman-devel >= 0.30.0 |
|
BuildRequires: libpciaccess-devel >= 0.13.1 openssl-devel bison flex |
|
BuildRequires: mesa-libGL-devel >= 9.2 |
|
BuildRequires: mesa-libEGL-devel |
|
BuildRequires: mesa-libgbm-devel |
|
# XXX silly... |
|
BuildRequires: libdrm-devel >= 2.4.0 kernel-headers |
|
|
|
BuildRequires: audit-libs-devel libselinux-devel >= 2.0.86-1 |
|
BuildRequires: libudev-devel |
|
# libunwind is Exclusive for the following arches |
|
%ifarch aarch64 %{arm} hppa ia64 mips ppc ppc64 %{ix86} x86_64 |
|
%if !0%{?rhel} |
|
BuildRequires: libunwind-devel |
|
%endif |
|
%endif |
|
|
|
BuildRequires: pkgconfig(xcb-aux) pkgconfig(xcb-image) pkgconfig(xcb-icccm) |
|
BuildRequires: pkgconfig(xcb-keysyms) pkgconfig(xcb-renderutil) |
|
|
|
%description |
|
X.Org X11 X server |
|
|
|
|
|
%package common |
|
Summary: Xorg server common files |
|
Requires: pixman >= 0.30.0 |
|
Requires: xkeyboard-config xkbcomp |
|
|
|
%description common |
|
Common files shared among all X servers. |
|
|
|
|
|
%package Xorg |
|
Summary: Xorg X server |
|
Provides: Xorg = %{version}-%{release} |
|
Provides: Xserver |
|
# HdG: This should be moved to the wrapper package once the wrapper gets |
|
# its own sub-package: |
|
Provides: xorg-x11-server-wrapper = %{version}-%{release} |
|
%if !0%{?gitdate} || %{stable_abi} |
|
Provides: xserver-abi(ansic-%{ansic_major}) = %{ansic_minor} |
|
Provides: xserver-abi(videodrv-%{videodrv_major}) = %{videodrv_minor} |
|
Provides: xserver-abi(xinput-%{xinput_major}) = %{xinput_minor} |
|
Provides: xserver-abi(extension-%{extension_major}) = %{extension_minor} |
|
%endif |
|
%if 0%{?gitdate} |
|
Provides: xserver-abi(ansic-%{git_ansic_major}) = %{git_ansic_minor} |
|
Provides: xserver-abi(videodrv-%{git_videodrv_major}) = %{git_videodrv_minor} |
|
Provides: xserver-abi(xinput-%{git_xinput_major}) = %{git_xinput_minor} |
|
Provides: xserver-abi(extension-%{git_extension_major}) = %{git_extension_minor} |
|
%endif |
|
Obsoletes: xorg-x11-glamor < %{version}-%{release} |
|
Provides: xorg-x11-glamor = %{version}-%{release} |
|
Obsoletes: xorg-x11-drv-modesetting < %{version}-%{release} |
|
Provides: xorg-x11-drv-modesetting = %{version}-%{release} |
|
# Dropped from F25 |
|
Obsoletes: xorg-x11-drv-vmmouse < 13.1.0-4 |
|
|
|
Requires: xorg-x11-server-common >= %{version}-%{release} |
|
Requires: system-setup-keyboard |
|
Requires: xorg-x11-drv-libinput |
|
Requires: libEGL |
|
|
|
%description Xorg |
|
X.org X11 is an open source implementation of the X Window System. It |
|
provides the basic low level functionality which full fledged |
|
graphical user interfaces (GUIs) such as GNOME and KDE are designed |
|
upon. |
|
|
|
|
|
%package Xnest |
|
Summary: A nested server |
|
Requires: xorg-x11-server-common >= %{version}-%{release} |
|
Provides: Xnest |
|
|
|
%description Xnest |
|
Xnest is an X server which has been implemented as an ordinary |
|
X application. It runs in a window just like other X applications, |
|
but it is an X server itself in which you can run other software. It |
|
is a very useful tool for developers who wish to test their |
|
applications without running them on their real X server. |
|
|
|
|
|
%package Xdmx |
|
Summary: Distributed Multihead X Server and utilities |
|
Requires: xorg-x11-server-common >= %{version}-%{release} |
|
Provides: Xdmx |
|
|
|
%description Xdmx |
|
Xdmx is proxy X server that provides multi-head support for multiple displays |
|
attached to different machines (each of which is running a typical X server). |
|
When Xinerama is used with Xdmx, the multiple displays on multiple machines |
|
are presented to the user as a single unified screen. A simple application |
|
for Xdmx would be to provide multi-head support using two desktop machines, |
|
each of which has a single display device attached to it. A complex |
|
application for Xdmx would be to unify a 4 by 4 grid of 1280x1024 displays |
|
(each attached to one of 16 computers) into a unified 5120x4096 display. |
|
|
|
|
|
%package Xvfb |
|
Summary: A X Windows System virtual framebuffer X server |
|
# xvfb-run is GPLv2, rest is MIT |
|
License: MIT and GPLv2 |
|
Requires: xorg-x11-server-common >= %{version}-%{release} |
|
# required for xvfb-run |
|
Requires: xorg-x11-xauth |
|
Provides: Xvfb |
|
|
|
%description Xvfb |
|
Xvfb (X Virtual Frame Buffer) is an X server that is able to run on |
|
machines with no display hardware and no physical input devices. |
|
Xvfb simulates a dumb framebuffer using virtual memory. Xvfb does |
|
not open any devices, but behaves otherwise as an X display. Xvfb |
|
is normally used for testing servers. |
|
|
|
|
|
%package Xephyr |
|
Summary: A nested server |
|
Requires: xorg-x11-server-common >= %{version}-%{release} |
|
Provides: Xephyr |
|
|
|
%description Xephyr |
|
Xephyr is an X server which has been implemented as an ordinary |
|
X application. It runs in a window just like other X applications, |
|
but it is an X server itself in which you can run other software. It |
|
is a very useful tool for developers who wish to test their |
|
applications without running them on their real X server. Unlike |
|
Xnest, Xephyr renders to an X image rather than relaying the |
|
X protocol, and therefore supports the newer X extensions like |
|
Render and Composite. |
|
|
|
|
|
%package devel |
|
Summary: SDK for X server driver module development |
|
Requires: xorg-x11-util-macros |
|
Requires: xorg-x11-proto-devel |
|
Requires: libXfont2-devel |
|
Requires: pkgconfig pixman-devel libpciaccess-devel |
|
Provides: xorg-x11-server-static |
|
Obsoletes: xorg-x11-glamor-devel < %{version}-%{release} |
|
Provides: xorg-x11-glamor-devel = %{version}-%{release} |
|
|
|
%description devel |
|
The SDK package provides the developmental files which are necessary for |
|
developing X server driver modules, and for compiling driver modules |
|
outside of the standard X11 source code tree. Developers writing video |
|
drivers, input drivers, or other X modules should install this package. |
|
|
|
|
|
%package source |
|
Summary: Xserver source code required to build VNC server (Xvnc) |
|
BuildArch: noarch |
|
|
|
%description source |
|
Xserver source code needed to build VNC server (Xvnc) |
|
|
|
|
|
%prep |
|
%autosetup -N -n %{pkgname}-%{?gitdate:%{gitdate}}%{!?gitdate:%{version}} |
|
rm -rf .git |
|
cp %{SOURCE1} .gitignore |
|
# ick |
|
%global __scm git |
|
%{expand:%__scm_setup_git -q} |
|
%autopatch |
|
|
|
%if 0%{?stable_abi} |
|
# check the ABI in the source against what we expect. |
|
getmajor() { |
|
grep -i ^#define.ABI.$1_VERSION hw/xfree86/common/xf86Module.h | |
|
tr '(),' ' ' | awk '{ print $4 }' |
|
} |
|
|
|
getminor() { |
|
grep -i ^#define.ABI.$1_VERSION hw/xfree86/common/xf86Module.h | |
|
tr '(),' ' ' | awk '{ print $5 }' |
|
} |
|
|
|
test `getmajor ansic` == %{ansic_major} |
|
test `getminor ansic` == %{ansic_minor} |
|
test `getmajor videodrv` == %{videodrv_major} |
|
test `getminor videodrv` == %{videodrv_minor} |
|
test `getmajor xinput` == %{xinput_major} |
|
test `getminor xinput` == %{xinput_minor} |
|
test `getmajor extension` == %{extension_major} |
|
test `getminor extension` == %{extension_minor} |
|
|
|
%endif |
|
|
|
sed -i 's/MAXSCREENS\t16/MAXSCREENS\t32/g' include/misc.h |
|
sed -i 's/MAXGPUSCREENS\t16/MAXGPUSCREENS\t32/g' include/misc.h |
|
sed -i 's/MAXCLIENTS\t2048/MAXCLIENTS\t4096/g' include/misc.h |
|
sed -i 's/LIMITCLIENTS\t256/LIMITCLIENTS\t1024/g' include/misc.h |
|
|
|
%build |
|
|
|
export CFLAGS="$RPM_OPT_FLAGS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1" |
|
export CXXFLAGS="$RPM_OPT_FLAGS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1" |
|
export LDFLAGS="$RPM_LD_FLAGS -specs=/usr/lib/rpm/redhat/redhat-hardened-ld" |
|
|
|
%if !0%{?rhel} |
|
%ifarch %{ix86} x86_64 |
|
%global int10_arch 1 |
|
%endif |
|
%endif |
|
|
|
%if %{undefined int10_arch} |
|
%global no_int10 --disable-vbe --disable-int10-module |
|
%endif |
|
|
|
%global kdrive --enable-kdrive --enable-xephyr --disable-xfake --disable-xfbdev |
|
%global xservers --enable-xvfb --enable-xnest %{kdrive} --enable-xorg |
|
%global default_font_path "catalogue:/etc/X11/fontpath.d,built-ins" |
|
%global dri_flags --disable-dri --enable-dri2 %{?!rhel:--enable-dri3} --enable-suid-wrapper --enable-glamor |
|
|
|
autoreconf -f -v --install || exit 1 |
|
|
|
%configure %{xservers} \ |
|
--enable-dependency-tracking \ |
|
--disable-static \ |
|
--with-pic \ |
|
%{?no_int10} \ |
|
--with-default-font-path=%{default_font_path} \ |
|
--with-module-dir=%{_libdir}/xorg/modules \ |
|
--with-builderstring="Build ID: %{name} %{version}-%{release}" \ |
|
--with-os-name="$(hostname -s) $(uname -r)" \ |
|
--with-xkb-output=%{_localstatedir}/lib/xkb \ |
|
--without-dtrace \ |
|
--disable-linux-acpi --disable-linux-apm \ |
|
--enable-xselinux --enable-record --enable-present \ |
|
--enable-xcsecurity \ |
|
--enable-config-udev \ |
|
--disable-unit-tests \ |
|
--enable-dmx \ |
|
--disable-xwayland \ |
|
%{dri_flags} \ |
|
${CONFIGURE} |
|
|
|
make V=1 %{?_smp_mflags} |
|
|
|
|
|
%install |
|
%make_install |
|
|
|
mkdir -p $RPM_BUILD_ROOT%{_libdir}/xorg/modules/{drivers,input} |
|
|
|
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/pam.d |
|
install -m 644 %{SOURCE10} $RPM_BUILD_ROOT%{_sysconfdir}/pam.d/xserver |
|
|
|
mkdir -p $RPM_BUILD_ROOT%{_datadir}/X11/xorg.conf.d |
|
install -m 644 %{SOURCE4} $RPM_BUILD_ROOT%{_datadir}/X11/xorg.conf.d |
|
|
|
# make sure the (empty) /etc/X11/xorg.conf.d is there, system-setup-keyboard |
|
# relies on it more or less. |
|
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/X11/xorg.conf.d |
|
|
|
%if %{stable_abi} |
|
install -m 755 %{SOURCE30} $RPM_BUILD_ROOT%{_bindir}/xserver-sdk-abi-requires |
|
%else |
|
sed -e s/@MAJOR@/%{gitdate}/g -e s/@MINOR@/%{minor_serial}/g %{SOURCE31} > \ |
|
$RPM_BUILD_ROOT%{_bindir}/xserver-sdk-abi-requires |
|
chmod 755 $RPM_BUILD_ROOT%{_bindir}/xserver-sdk-abi-requires |
|
%endif |
|
|
|
install -m 0755 %{SOURCE20} $RPM_BUILD_ROOT%{_bindir}/xvfb-run |
|
|
|
# Make the source package |
|
%global xserver_source_dir %{_datadir}/xorg-x11-server-source |
|
%global inst_srcdir %{buildroot}/%{xserver_source_dir} |
|
|
|
mkdir -p %{inst_srcdir}/{Xext,xkb,GL,hw/{xquartz/bundle,xfree86/common}} |
|
mkdir -p %{inst_srcdir}/{hw/dmx/doc,man,doc,hw/dmx/doxygen} |
|
cp {,%{inst_srcdir}/}hw/xquartz/bundle/cpprules.in |
|
cp {,%{inst_srcdir}/}man/Xserver.man |
|
cp {,%{inst_srcdir}/}doc/smartsched |
|
cp {,%{inst_srcdir}/}hw/dmx/doxygen/doxygen.conf.in |
|
cp {,%{inst_srcdir}/}xserver.ent.in |
|
cp {,%{inst_srcdir}/}hw/xfree86/Xorg.sh.in |
|
cp xkb/README.compiled %{inst_srcdir}/xkb |
|
cp hw/xfree86/xorgconf.cpp %{inst_srcdir}/hw/xfree86 |
|
|
|
find . -type f | egrep '.*\.(c|h|am|ac|inc|m4|h.in|pc.in|man.pre|pl|txt)$' | |
|
xargs tar cf - | (cd %{inst_srcdir} && tar xf -) |
|
find %{inst_srcdir}/hw/xfree86 -name \*.c -delete |
|
|
|
# Remove unwanted files/dirs |
|
{ |
|
find $RPM_BUILD_ROOT -type f -name '*.la' | xargs rm -f -- || : |
|
# wtf |
|
%ifnarch %{ix86} x86_64 |
|
rm -f $RPM_BUILD_ROOT%{_libdir}/xorg/modules/lib{int10,vbe}.so |
|
%endif |
|
} |
|
|
|
|
|
%files common |
|
%doc COPYING |
|
%{_mandir}/man1/Xserver.1* |
|
%{_libdir}/xorg/protocol.txt |
|
%dir %{_localstatedir}/lib/xkb |
|
%{_localstatedir}/lib/xkb/README.compiled |
|
|
|
%if 1 |
|
%global Xorgperms %attr(4755, root, root) |
|
%else |
|
# disable until module loading is audited |
|
%global Xorgperms %attr(0711,root,root) %caps(cap_sys_admin,cap_sys_rawio,cap_dac_override=pe) |
|
%endif |
|
|
|
%files Xorg |
|
%config %attr(0644,root,root) %{_sysconfdir}/pam.d/xserver |
|
%{_bindir}/X |
|
%{_bindir}/Xorg |
|
%{_libexecdir}/Xorg |
|
%{Xorgperms} %{_libexecdir}/Xorg.wrap |
|
%{_bindir}/cvt |
|
%{_bindir}/gtf |
|
%dir %{_libdir}/xorg |
|
%dir %{_libdir}/xorg/modules |
|
%dir %{_libdir}/xorg/modules/drivers |
|
%{_libdir}/xorg/modules/drivers/modesetting_drv.so |
|
%dir %{_libdir}/xorg/modules/extensions |
|
%{_libdir}/xorg/modules/extensions/libglx.so |
|
%dir %{_libdir}/xorg/modules/input |
|
%{_libdir}/xorg/modules/libfbdevhw.so |
|
%{_libdir}/xorg/modules/libexa.so |
|
%{_libdir}/xorg/modules/libfb.so |
|
%{_libdir}/xorg/modules/libglamoregl.so |
|
%{_libdir}/xorg/modules/libshadow.so |
|
%{_libdir}/xorg/modules/libshadowfb.so |
|
%{_libdir}/xorg/modules/libvgahw.so |
|
%{_libdir}/xorg/modules/libwfb.so |
|
%if %{defined int10_arch} |
|
%{_libdir}/xorg/modules/libint10.so |
|
%{_libdir}/xorg/modules/libvbe.so |
|
%endif |
|
%{_mandir}/man1/gtf.1* |
|
%{_mandir}/man1/Xorg.1* |
|
%{_mandir}/man1/Xorg.wrap.1* |
|
%{_mandir}/man1/cvt.1* |
|
%{_mandir}/man4/fbdevhw.4* |
|
%{_mandir}/man4/exa.4* |
|
%{_mandir}/man4/modesetting.4* |
|
%{_mandir}/man5/Xwrapper.config.5* |
|
%{_mandir}/man5/xorg.conf.5* |
|
%{_mandir}/man5/xorg.conf.d.5* |
|
%dir %{_sysconfdir}/X11/xorg.conf.d |
|
%dir %{_datadir}/X11/xorg.conf.d |
|
%{_datadir}/X11/xorg.conf.d/10-quirks.conf |
|
|
|
%files Xnest |
|
%{_bindir}/Xnest |
|
%{_mandir}/man1/Xnest.1* |
|
|
|
%files Xdmx |
|
%{_bindir}/Xdmx |
|
%{_bindir}/dmxaddinput |
|
%{_bindir}/dmxaddscreen |
|
%{_bindir}/dmxreconfig |
|
%{_bindir}/dmxresize |
|
%{_bindir}/dmxrminput |
|
%{_bindir}/dmxrmscreen |
|
%{_bindir}/dmxtodmx |
|
%{_bindir}/dmxwininfo |
|
%{_bindir}/vdltodmx |
|
%{_bindir}/dmxinfo |
|
%{_bindir}/xdmxconfig |
|
%{_mandir}/man1/Xdmx.1* |
|
%{_mandir}/man1/dmxtodmx.1* |
|
%{_mandir}/man1/vdltodmx.1* |
|
%{_mandir}/man1/xdmxconfig.1* |
|
|
|
%files Xvfb |
|
%{_bindir}/Xvfb |
|
%{_bindir}/xvfb-run |
|
%{_mandir}/man1/Xvfb.1* |
|
|
|
%files Xephyr |
|
%{_bindir}/Xephyr |
|
%{_mandir}/man1/Xephyr.1* |
|
|
|
%files devel |
|
%doc COPYING |
|
#{_docdir}/xorg-server |
|
%{_bindir}/xserver-sdk-abi-requires |
|
%{_libdir}/pkgconfig/xorg-server.pc |
|
%dir %{_includedir}/xorg |
|
%{_includedir}/xorg/*.h |
|
%{_datadir}/aclocal/xorg-server.m4 |
|
|
|
%files source |
|
%{xserver_source_dir} |
|
|
|
|
|
%changelog
|
|
|