export DEBIAN_FRONTEND=noninteractive
-CROSS_ARCHITECTURES="i386"
+CROSS_ARCHITECTURES="i386 ppc64el s390x"
for arch in $CROSS_ARCHITECTURES; do
dpkg --add-architecture $arch
done
apt-get install -y \
ca-certificates \
+ gnupg \
unzip \
wget
+# Upstream LLVM package repository
+apt-key add .gitlab-ci/container/llvm-snapshot.gpg.key
+echo "deb https://apt.llvm.org/buster/ llvm-toolchain-buster-9 main" >/etc/apt/sources.list.d/llvm9.list
+
sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list
echo 'deb https://deb.debian.org/debian buster-backports main' >/etc/apt/sources.list.d/backports.list
automake \
autotools-dev \
bison \
- clang-8 \
+ ccache \
+ clang-9 \
cmake \
flex \
g++ \
libclang-6.0-dev \
libclang-7-dev \
libclang-8-dev \
+ libclang-9-dev \
libclc-dev \
libelf-dev \
libepoxy-dev \
libx11-xcb-dev \
libxdamage-dev \
libxext-dev \
+ libxml2-utils \
libxrandr-dev \
libxrender-dev \
libxshmfence-dev \
libxvmc-dev \
libxxf86vm-dev \
llvm-6.0-dev \
- llvm-7-dev \
- llvm-8-dev \
+ llvm-9-dev \
meson \
pkg-config \
python-mako \
python3-mako \
+ qemu-user \
scons \
x11proto-dri2-dev \
x11proto-gl-dev \
libdrm-dev:${arch} \
libelf-dev:${arch} \
libexpat1-dev:${arch}
+
+ if [ "$arch" = "s390x" ]; then
+ LLVM_VERSION=7
+ else
+ LLVM_VERSION=8
+ fi
+
+ if [ "$arch" != "i386" ]; then
+ mkdir /var/cache/apt/archives/${arch}
+ apt-get install -y --no-remove \
+ libffi-dev:${arch} \
+ libllvm${LLVM_VERSION}:${arch} \
+ libstdc++6:${arch} \
+ libtinfo-dev:${arch} \
+
+ # Download llvm-* packages, but don't install them yet, since they can
+ # only be installed for one architecture at a time
+ apt-get install -o Dir::Cache::archives=/var/cache/apt/archives/$arch --download-only -y --no-remove \
+ llvm-${LLVM_VERSION}-dev:${arch}
+ fi
done
+apt-get install -y --no-remove \
+ llvm-7-dev \
+ llvm-8-dev \
+
# for 64bit windows cross-builds
apt-get install -y --no-remove \
libz-mingw-w64-dev \
wget $XORG_RELEASES/util/$XORGMACROS_VERSION.tar.bz2
tar -xvf $XORGMACROS_VERSION.tar.bz2 && rm $XORGMACROS_VERSION.tar.bz2
-cd $XORGMACROS_VERSION; ./configure; make install; cd ..
+cd $XORGMACROS_VERSION; ./configure; make -j4 install; cd ..
rm -rf $XORGMACROS_VERSION
wget $XCB_RELEASES/$XCBPROTO_VERSION.tar.bz2
tar -xvf $XCBPROTO_VERSION.tar.bz2 && rm $XCBPROTO_VERSION.tar.bz2
-cd $XCBPROTO_VERSION; ./configure; make install; cd ..
+cd $XCBPROTO_VERSION; ./configure; make -j4 install; cd ..
rm -rf $XCBPROTO_VERSION
wget $XCB_RELEASES/$LIBXCB_VERSION.tar.bz2
tar -xvf $LIBXCB_VERSION.tar.bz2 && rm $LIBXCB_VERSION.tar.bz2
-cd $LIBXCB_VERSION; ./configure; make install; cd ..
+cd $LIBXCB_VERSION; ./configure; make -j4 install; cd ..
rm -rf $LIBXCB_VERSION
wget https://dri.freedesktop.org/libdrm/$LIBDRM_VERSION.tar.bz2
wget $WAYLAND_RELEASES/$LIBWAYLAND_VERSION.tar.xz
tar -xvf $LIBWAYLAND_VERSION.tar.xz && rm $LIBWAYLAND_VERSION.tar.xz
-cd $LIBWAYLAND_VERSION; ./configure --enable-libraries --without-host-scanner --disable-documentation --disable-dtd-validation; make install; cd ..
+cd $LIBWAYLAND_VERSION; ./configure --enable-libraries --without-host-scanner --disable-documentation --disable-dtd-validation; make -j4 install; cd ..
rm -rf $LIBWAYLAND_VERSION
wget $WAYLAND_RELEASES/$WAYLAND_PROTOCOLS_VERSION.tar.xz
tar -xvf $WAYLAND_PROTOCOLS_VERSION.tar.xz && rm $WAYLAND_PROTOCOLS_VERSION.tar.xz
-cd $WAYLAND_PROTOCOLS_VERSION; ./configure; make install; cd ..
+cd $WAYLAND_PROTOCOLS_VERSION; ./configure; make -j4 install; cd ..
rm -rf $WAYLAND_PROTOCOLS_VERSION
GLVND_VERSION=1.2.0
wget https://gitlab.freedesktop.org/glvnd/libglvnd/-/archive/v$GLVND_VERSION/libglvnd-v$GLVND_VERSION.tar.gz
tar -xvf libglvnd-v$GLVND_VERSION.tar.gz && rm libglvnd-v$GLVND_VERSION.tar.gz
-pushd libglvnd-v$GLVND_VERSION; ./autogen.sh; ./configure; make install; popd
+pushd libglvnd-v$GLVND_VERSION; ./autogen.sh; ./configure; make -j4 install; popd
rm -rf libglvnd-v$GLVND_VERSION
git clone https://gitlab.freedesktop.org/mesa/shader-db.git --depth 1
rm -rf shader-db/.git
cd shader-db
-make
+make -j4
popd
-# Use ccache to speed up builds
-apt-get install -y --no-remove ccache
-
-# We need xmllint to validate the XML files in Mesa
-apt-get install -y --no-remove libxml2-utils
-
# Generate cross build files for Meson
for arch in $CROSS_ARCHITECTURES; do
if [ "$arch" = "i386" ]; then
# Work around a bug in debcrossgen that should be fixed in the next release
sed -i "s|cpu_family = 'i686'|cpu_family = 'x86'|g" "$cross_file"
- # Don't need wrapper for i386 executables
- sed -i -e '/\[properties\]/a\' -e "needs_exe_wrapper = False" "$cross_file"
fi
+
+ # Rely on qemu-user being configured in binfmt_misc on the host
+ sed -i -e '/\[properties\]/a\' -e "needs_exe_wrapper = False" "$cross_file"
done
+# Remove ccache directory, useless for the build jobs
+rm -rf $(ccache --get-config=cache_dir)
+
+
############### Uninstall the build software
apt-get purge -y \
autotools-dev \
cmake \
git \
+ gnupg \
libgbm-dev \
libtool \
unzip \