1

Due to an accessibility bug I cannot use Xorg-server 1.13 through 1.15. I see that CentOS 7 uses 1.15.0. Is there any way to use a later Xorg-server in CentOS 7?

Fedora 23 has Xorg-server 1.18.0, is there any way to use Fedora's Xorg-server in CentOS, considering that Fedora is pretty much a testbed for what will later go into RHEL and CentOS?

2 Answers 2

1

You can use fedora packages if the libraries dependencies didn't changed between what rhel has and what fedora has (slim chance), since RedHat 7 is based on Fedora 19.

You could try to rebuild the necessary packages from the fedoras srpms on a RHEL7 machine.

EDIT:

So I was wondering if it's possible to recompile the latest xorg for el7 (I didn't tried to install fedora packages, as I suspect this is pretty much a dead end).

To my surprise, I managed to do it. I only installed the resulting rpms in a docker container, I didn't do any tests or start a server to see if it works.

EDIT2:

Added commands to also build all libX packages. I couldn't rebuild mesa (too much work, as it needs a newer clang package and some other stuff also)

This is the script I used to do the builds. Everything was done in a docker container:

docker run --rm -it _your_container_ bash

#!/bin/bash

rm -f /etc/yum.repos.d/*

# I built packages from rawhide, you should use fedora23 probably
# we need yum-plugin-priorities and priority=1 for srpm repo
# if you use oracle linux, remove centos repo
#  and add oracles ol_latest and ol_optional
cat > /etc/yum.repos.d/extra_repos.repo <<EOF
[fedora_srpm]
#baseurl=https://dl.fedoraproject.org/pub/fedora/linux/releases/23/Everything/source/SRPMS/
baseurl=https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/source/SRPMS/
name=fedora_srpm
enabled=1
gpgcheck=0
priority=1
[centos]
baseurl=http://mirror.centos.org/centos/7/os/x86_64
name=centos
enabled=1
gpgcheck=0
EOF

yum groupinstall "Development Tools" -y
yum install -y yum-utils yum-plugin-priorities rpmdevtools libxcb libpng libfontenc \
  freetype fontconfig ghostscript xmlto java-1.7.0 java-1.7.0-openjdk-devel \
  zziplib cairo poppler xorg-x11-glamor libdrm valgrind mtdev libXvMC xcb-util \
  xorg-x11-server-utils pyparsing opus libiscsi glusterfs-api opus-devel \
  celt051-devel cyrus-sasl-devel celt051 mesa-private-llvm libdmx libXxf86dga \
  xorg-x11-util-macros xorg-x11-proto-devel python-six nss-util nspr nss libaio \
  xorg-x11-xbitmaps libXaw libXpm xorg-sgml-doctools passivetex gl-manpages \
  graphviz chrpath libXres xcb-util-wm xcb-util-keysyms xcb-util-image \
  xcb-util-renderutil rsh xorg-x11-xtrans-devel cmake asciidoc python-mako \
  imake || exit 1

# reinstall locales in docker
yum reinstall -y glibc glibc-common
yum update -y


rpmdev-setuptree
export QA_RPATHS=0x0001

## You will need those extra packages during builds from fedora rawhide
cd && mkdir extras && cd extras

pkg_extra=(libFS mcpp libdrm libevdev libinput spice-protocol spice libunwind wayland libxshmfence xcb-util)
for pkg in ${pkg_extra[@]}; do
  yumdownloader --source $pkg
  yum-builddep -y $pkg-*.fc2*.src.rpm && spectool -g -R $pkg-*.fc2*.src.rpm && rpmbuild --rebuild $pkg-*.fc2*.src.rpm || exit 1
  # we keep installing what we built nutil now for the next builds
  rm -f $pkg-*.fc2*.src.rpm && yum install -y ~/rpmbuild/RPMS/*/*
done


# for xorg server we need libepoxy for which we have to fix the spec file (needs python3 to compile)
yumdownloader --source libepoxy
rpm -i libepoxy*
sed s/python3/python2/g -i ~/rpmbuild/SPECS/libepoxy.spec
yum-builddep -y ~/rpmbuild/SPECS/libepoxy.spec && \
spectool -g -R ~/rpmbuild/SPECS/libepoxy.spec && \
rpmbuild -ba ~/rpmbuild/SPECS/libepoxy.spec || exit 1
rm -f libepoxy* && yum install -y ~/rpmbuild/RPMS/*/libepoxy-*



# Start building xorg
cd && mkdir xorg-x11 && cd xorg-x11

yumdownloader --source xorg-x11-*
# remove packages that complain about x86_64 architecture
rm -f xorg-x11-drv-armsoc* xorg-x11-drv-freedreno* xorg-x11-drv-geode* xorg-x11-drv-omap* xorg-x11-drv-opentegra*

# I couldn't compile xorg-x11-drv-intel, so we will install it later
rm -f xorg-x11-drv-intel-*

## we need those package built and installed first
pkg_order=(xorg-x11-proto-devel xorg-x11-font-utils xorg-x11-fonts xorg-x11-xtrans-devel xorg-x11-server-utils)
for pkg in ${pkg_order[@]}; do
  rpm_name=$pkg-*.src.rpm
  yum-builddep -y $rpm_name && spectool -g -R $rpm_name && rpmbuild --rebuild $rpm_name || exit 1
  rm -f $rpm_name && yum install -y ~/rpmbuild/RPMS/*/$pkg*
done

# drivers need to be compiled for this server version, so we compile and install the server
# remove fedora20 checks and build a package for wayland also
rpm -i xorg-x11-server-*.rpm
sed 's/0%{?fedora} > 20/0%{?el7:1}/g' -i ~/rpmbuild/SPECS/xorg-x11-server.spec
yum-builddep -y ~/rpmbuild/SPECS/xorg-x11-server.spec && \
spectool -g -R ~/rpmbuild/SPECS/xorg-x11-server.spec && \
rpmbuild -ba ~/rpmbuild/SPECS/xorg-x11-server.spec || exit 1
rm -f xorg-x11-server-*.rpm && yum install -y ~/rpmbuild/RPMS/*/*

# those need half of python3 packages for tests, so we disable tests in the spec file
pkg_notests=(xorg-x11-xauth xorg-x11-xbitmaps)
for pkg in ${pkg_notests[@]}; do
  rpm -i $pkg-*.rpm
  sed 's/BuildRequires: cmdtest/#BuildRequires: cmdtest/g' -i ~/rpmbuild/SPECS/$pkg.spec
  sed 's/make check/#make check/g' -i ~/rpmbuild/SPECS/$pkg.spec
  yum-builddep -y ~/rpmbuild/SPECS/$pkg.spec && \
  spectool -g -R ~/rpmbuild/SPECS/$pkg.spec && \
  rpmbuild -ba ~/rpmbuild/SPECS/$pkg.spec || exit 1
  rm -f $pkg-*.rpm && yum install -y ~/rpmbuild/RPMS/*/$pkg-*
done

# compile everything but drivers
ls *.rpm | grep -v 'xorg-x11-drv' | sort | while read pkg;do
  yum-builddep -y $pkg && spectool -g -R $pkg && rpmbuild --rebuild $pkg || exit 1
  rm -f $pkg
done

# build drivers at last
ls xorg-x11-drv*.rpm | sort | while read pkg;do
  yum-builddep -y $pkg && spectool -g -R $pkg && rpmbuild --rebuild $pkg || exit 1
  rm -f $pkg
done

# this conflicts with other packages
yum remove -y xorg-x11-server-debuginfo
# install everything for testing
yum install -y ~/rpmbuild/RPMS/*/* https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/x86_64/os/Packages/x/xorg-x11-drv-intel-2.99.917-16.20150729.fc24.x86_64.rpm


# recompile all libX packages
yumdownloader --source libX\*

# fix unpackaged files
rpm -i libXaw-*.rpm
sed 's/%dir %{_pkgdocdir}/%{_pkgdocdir}/' -i ~/rpmbuild/SPECS/libXaw.spec
yum-builddep -y ~/rpmbuild/SPECS/libXaw.spec && \
spectool -g -R ~/rpmbuild/SPECS/libXaw.spec && \
rpmbuild -ba ~/rpmbuild/SPECS/libXaw.spec || exit 1
rm -f libXaw-*.rpm

rpm -i libXt-*.rpm
sed 's/%dir %{_docdir}/%{_docdir}/' -i ~/rpmbuild/SPECS/libXt.spec
yum-builddep -y ~/rpmbuild/SPECS/libXt.spec && \
spectool -g -R ~/rpmbuild/SPECS/libXt.spec && \
rpmbuild -ba ~/rpmbuild/SPECS/libXt.spec || exit 1
rm -f libXt-*.rpm

ls *.rpm | sort | while read pkg;do
  yum-builddep -y $pkg && spectool -g -R $pkg && rpmbuild --rebuild $pkg || exit 1
  rm -f $pkg
done

echo SUCCESS
3
  • Slim chance that they changed, or slim chance that they hadn't changed? Is it enough to download an RPM from here and to install it?
    – dotancohen
    Nov 12, 2015 at 15:17
  • Slim chance they didn't change the versions. I don't think it will work if you try to install a rpm from fedora
    – cristi
    Nov 12, 2015 at 16:04
  • Thank you for that very invested script! The comments alone are extremely valuable, and I've a lot to learn in there. Thank you!
    – dotancohen
    Nov 16, 2015 at 7:42
0

I am happy to report that CentOS 7-1511 uses Xorg-server 1.17.2, which does not suffer from the accessibility bug. Therefore that version can be used without patching.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .