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:

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)?


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

# basic setup & packages
RUN rpm -ivh 
# update first, to prevent SSL issues below - touch is due to 
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 
 && \
    curl -sLO 
 && \
    sed -e 's/\[mlampe-devtoolset-7\]/\[mlampe-devtoolset-7-32bit\]/' -e 
's/$basearch/i386/' < mlampe-devtoolset-7-epel-6.repo > 
# get build prereqs - touch is due to 
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 ; 
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 ; 
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 
 && \
    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_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}"


USER builder

Attachment: signature.asc
Description: PGP signature

LibreOffice mailing list

Reply via email to