Getting rid of CentOS6 for x86? (was: Compiler baselines)

Thorsten Behrens thb at libreoffice.org
Tue Feb 5 04:54:07 UTC 2019


Hi *,

as briefly talked about in a FOSDEM lightning talk, we managed to get
-m32 cross builds on master going for CentOS with devtoolset-7.

There's an existing setup for CentOS6 (Dockerfile attached) with a
number of ugly hacks; I'm working on a CentOS7 setup that looks much
cleaner, but suffers from one killer bug: a missing
devtoolset-7-libstdc++-devel.i686 package.

This is reported for upstream CentOS already here:
https://bugs.centos.org/view.php?id=15452

Does anybody have good suggestions how to get that fixed (whom to
lobby, whether to roll a custom package via COPR like mlampe did for
CentOS6, or anything else)?

Cheers,

-- Thorsten
-------------- next part --------------
# Dockerfile - this is for LibreOffice >=6.2 32bit
FROM centos:centos6

# basic setup & packages
RUN rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
# update first, to prevent SSL issues below - touch is due to https://bugzilla.redhat.com/show_bug.cgi?id=1213602
RUN touch /var/lib/rpm/* && yum -y update
# pull in more build prerequisite repos
# devtoolset-7: need both repos for 64-bit compiler and 32-bit library/headers
RUN cd /etc/yum.repos.d && \
    curl -sLO http://download.opensuse.org/repositories/home:/fstrba:/LibreOffice/CentOS_6/home:fstrba:LibreOffice.repo && \
    curl -sLO https://copr.fedorainfracloud.org/coprs/mlampe/devtoolset-7/repo/epel-6/mlampe-devtoolset-7-epel-6.repo && \
    sed -e 's/\[mlampe-devtoolset-7\]/\[mlampe-devtoolset-7-32bit\]/' -e 's/$basearch/i386/' < mlampe-devtoolset-7-epel-6.repo > mlampe-devtoolset-7-epel-6-32bit.repo
# get build prereqs - touch is due to https://bugzilla.redhat.com/show_bug.cgi?id=1213602
RUN touch /var/lib/rpm/* && yum -y install fakeroot automake bison ccache dpkg dpkg-devel doxygen git devtoolset-7-gcc-c++ devtoolset-7-make gettext perl-Archive-Zip rpm-build zip screen tar nasm glibc-devel devtoolset-7-libstdc++-devel autoconf268 \
gnome-vfs2-devel.i686 cups-devel.i686 libffi-devel.i686 gstreamer-devel.i686 gstreamer-plugins-base-devel.i686 gtk2-devel.i686 kdelibs-devel.i686 avahi-devel.i686 devtoolset-7-libstdc++-devel.i686 glibc-devel.i686 zlib-devel.i686 fontconfig-devel.i686 freetype-devel.i686 krb5-devel.i686 libcom_err-devel.i686 openssl-devel.i686 libICE-devel.i686 libSM-devel.i686 libXrender-devel.i686 libXau-devel.i686 dbus-glib-devel.i686 dbus-devel.i686 glib2-devel.i686 pango-devel.i686 cairo-devel.i686 pixman-devel.i686 libpng-devel.i686 gdk-pixbuf2-devel.i686 atk-devel.i686 libxml2-devel.i686 mesa-libGL-devel.i686 qt-devel.i686 libX11-devel.i686 libxcb-devel.i686

# 32-bit JDK is only in 32-bit CentOS because it's not parallel-installable with 64-bit JDK
RUN sed -e 's/\[\(.*\)\]/\[\1-32\]/' -e 's/$basearch/i386/' < /etc/yum.repos.d/CentOS-Base.repo > /etc/yum.repos.d/CentOS-Base-32.repo && yum -y install java-1.7.0-openjdk-devel.i686 java-1.7.0-openjdk.i686

# std UID for builder user (for easier sharing on the host side)
RUN useradd -m -o -u 9001 -s /bin/bash builder

# self-built stuff, needed for versions >= LibO-5.3
RUN curl -sLO https://ftp.gnome.org/pub/gnome/sources/glib/2.50/glib-2.50.3.tar.xz && \
    cd /home/builder && \
    linux32 su - -c "tar -xf /glib-2.50.3.tar.xz ; cd glib-2.50.3 ; PKG_CONFIG_LIBDIR=/usr/lib/pkgconfig:/usr/share/pkgconfig CC=\"/opt/rh/devtoolset-7/root/usr/bin/gcc -m32\" ./configure --disable-libmount --with-pcre=internal --prefix=/home/builder/gst10-deps ; make -j3; make install" builder && \
    rm -rf glib-2.50.3 /glib-2.50.3.tar.xz

# get a newer gperf (for LibreOffice 6.2 on)
RUN curl -sLO https://ftp.gnu.org/pub/gnu/gperf/gperf-3.1.tar.gz && \
    cd /home/builder && \
    su - -c "tar -xf /gperf-3.1.tar.gz ; cd gperf-3.1 ; ./configure --prefix /home/builder/deps CC=/opt/rh/devtoolset-7/root/usr/bin/gcc CXX=/opt/rh/devtoolset-7/root/usr/bin/g++ ; make -j3; make install" builder && \
    rm -rf gperf-3.1 /gperf-3.1.tar.gz

# get a newer flex (for LibreOffice 6.2 on)
RUN curl -sLO https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz && \
    cd /home/builder && \
    su - -c "tar -xf /flex-2.6.4.tar.gz ; cd flex-2.6.4 ; ./configure --prefix /home/builder/deps CC=/opt/rh/devtoolset-7/root/usr/bin/gcc CC_FOR_BUILD=/opt/rh/devtoolset-7/root/usr/bin/gcc ; make -j3; make install" builder && \
    rm -rf flex-2.6.4 /flex-flex-2.6.4.tar.gz

# self-built stuff, needed for versions >= LibO-5.3
RUN curl -sLO https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.8.3.tar.xz && \
    cd /home/builder && \
    linux32 su - -c "tar -xf /gstreamer-1.8.3.tar.xz ; cd gstreamer-1.8.3 ; PATH="/home/builder/deps/bin:${PATH}" CC=\"/opt/rh/devtoolset-7/root/usr/bin/gcc -m32\" PKG_CONFIG_PATH=/home/builder/gst10-deps/lib/pkgconfig ./configure  --prefix=/home/builder/gst10-deps ; make -j3; make install" builder && \
    rm -rf gstreamer-1.8.3 /gstreamer-1.8.3.tar.xz
RUN curl -sLO https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.8.3.tar.xz && \
    cd /home/builder && \
    linux32 su - -c "tar -xf /gst-plugins-base-1.8.3.tar.xz ; cd gst-plugins-base-1.8.3 ; CC=\"/opt/rh/devtoolset-7/root/usr/bin/gcc -m32\" PKG_CONFIG_PATH=/home/builder/gst10-deps/lib/pkgconfig ./configure  --prefix=/home/builder/gst10-deps ; make -j3; make install" builder && \
    rm -rf gst-plugins-base-1.8.3 /gst-plugins-base-1.8.3.tar.xz

# libnumbertext requires newer autoconf
RUN ln -s /usr/bin/autoreconf268 /home/builder/deps/bin/autoreconf

# static setup, and prebuilt tools
COPY apache-ant-1.9.8-bin.tar.bz2 /home/builder/
RUN cd /home/builder && tar -xf apache-ant-1.9.8-bin.tar.bz2
COPY junit-4.10.jar /home/builder/
COPY qt.patch /
RUN patch -p0 < /qt.patch

# env vars used during build
ENV CC "/opt/rh/devtoolset-7/root/usr/bin/gcc -m32"
ENV CXX "/opt/rh/devtoolset-7/root/usr/bin/g++ -m32"
ENV PKG_CONFIG_LIBDIR "/usr/lib/pkgconfig:/usr/share/pkgconfig"
ENV GSTREAMER_1_0_CFLAGS "-pthread -I/home/builder/gst10-deps/include/gstreamer-1.0 -I/home/builder/gst10-deps/lib/gstreamer-1.0/include -I/home/builder/gst10-deps/include/glib-2.0 -I/home/builder/gst10-deps/lib/glib-2.0/include"
ENV GSTREAMER_1_0_LIBS "-L/home/builder/gst10-deps/lib -lgstpbutils-1.0 -lgstvideo-1.0 -lgstbase-1.0 -lgstreamer-1.0 -lgobject-2.0 -lglib-2.0"
ENV PATH "/home/builder/deps/bin:${PATH}"

ENV CCACHE_DIR /cache

USER builder
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 1032 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/libreoffice/attachments/20190205/dfbb667b/attachment.sig>


More information about the LibreOffice mailing list