- .fdo.container-build@debian
- .container
variables:
- FDO_DISTRIBUTION_TAG: &x86_build-base "2020-06-01"
+ FDO_DISTRIBUTION_TAG: &x86_build-base "2020-06-02"
.use-x86_build-base:
extends:
extends:
- .use-x86_build-base
variables:
- FDO_DISTRIBUTION_TAG: &x86_build "2020-06-01"
+ FDO_DISTRIBUTION_TAG: &x86_build "2020-06-02"
.use-x86_build:
variables:
- x86_build-base
- x86_build
+# Debian 10 based i386 cross-build image
+i386_build:
+ extends:
+ - .use-x86_build-base
+ variables:
+ FDO_DISTRIBUTION_TAG: &i386_build "2020-06-02"
+
+.use-i386_build:
+ variables:
+ TAG: *i386_build
+ image: "$CI_REGISTRY_IMAGE/debian/i386_build:$TAG"
+ needs:
+ - x86_build-base
+ - i386_build
+
+# Debian 10 based ppc64el cross-build image
+ppc64el_build:
+ extends:
+ - .use-x86_build-base
+ variables:
+ FDO_DISTRIBUTION_TAG: &ppc64el_build "2020-06-02"
+
+.use-ppc64el_build:
+ variables:
+ TAG: *ppc64el_build
+ image: "$CI_REGISTRY_IMAGE/debian/ppc64el_build:$TAG"
+ needs:
+ - x86_build-base
+ - ppc64el_build
+
+# Debian 10 based s390x cross-build image
+s390x_build:
+ extends:
+ - .use-x86_build-base
+ variables:
+ FDO_DISTRIBUTION_TAG: &s390x_build "2020-06-02"
+
+.use-s390x_build:
+ variables:
+ TAG: *s390x_build
+ image: "$CI_REGISTRY_IMAGE/debian/s390x_build:$TAG"
+ needs:
+ - x86_build-base
+ - s390x_build
+
# Debian 10 based x86 test image base
x86_test-base:
extends: x86_build-base
-D werror=true
meson-i386:
- extends: .meson-cross
+ extends:
+ - .meson-cross
+ - .use-i386_build
variables:
CROSS: i386
VULKAN_DRIVERS: intel,amd
EXTRA_OPTION: >
-D vulkan-overlay-layer=true
-D werror=true
- script:
- - dpkg -i /var/cache/apt/archives/$CROSS/*.deb
- - .gitlab-ci/meson-build.sh
meson-s390x:
extends:
- .meson-cross
+ - .use-s390x_build
tags:
- kvm
variables:
EXTRA_OPTION: >
-D werror=true
GALLIUM_DRIVERS: "swrast"
- script:
- # For unknown reasons "too many" installed i386 libraries cause qemu to
- # crash while executing llvm-config for s390x.
- - apt-get purge -y wine32-development
- - apt-get autoremove -y --purge
- - dpkg -i /var/cache/apt/archives/$CROSS/*.deb
- - .gitlab-ci/meson-build.sh
meson-ppc64el:
extends:
- meson-s390x
+ - .use-ppc64el_build
variables:
CROSS: ppc64el
EXTRA_OPTION: ""
--- /dev/null
+#!/bin/bash
+
+set -e
+set -o xtrace
+
+export DEBIAN_FRONTEND=noninteractive
+
+# Ephemeral packages (installed for this script and removed again at the end)
+STABLE_EPHEMERAL=" \
+ libpciaccess-dev:$arch \
+ wget \
+ "
+
+dpkg --add-architecture $arch
+apt-get update
+
+apt-get install -y --no-remove \
+ $STABLE_EPHEMERAL \
+ crossbuild-essential-$arch \
+ libelf-dev:$arch \
+ libexpat1-dev:$arch \
+ libffi-dev:$arch \
+ libstdc++6:$arch \
+ libtinfo-dev:$arch
+
+apt-get install -y --no-remove -t buster-backports \
+ llvm-8-dev:$arch
+
+. .gitlab-ci/create-cross-file.sh $arch
+
+
+. .gitlab-ci/container/container_pre_build.sh
+
+
+# dependencies where we want a specific version
+export LIBDRM_VERSION=libdrm-2.4.100
+
+wget https://dri.freedesktop.org/libdrm/$LIBDRM_VERSION.tar.bz2
+tar -xvf $LIBDRM_VERSION.tar.bz2 && rm $LIBDRM_VERSION.tar.bz2
+cd $LIBDRM_VERSION
+meson --cross-file=/cross_file-${arch}.txt build -D libdir=lib/$(dpkg-architecture -A $arch -qDEB_TARGET_MULTIARCH)
+ninja -C build install
+cd ..
+rm -rf $LIBDRM_VERSION
+
+
+apt-get purge -y \
+ $STABLE_EPHEMERAL
+
+. .gitlab-ci/container/container_post_build.sh
--- /dev/null
+#!/bin/bash
+
+arch=i386
+
+. .gitlab-ci/container/cross_build.sh
--- /dev/null
+#!/bin/bash
+
+arch=ppc64el
+
+. .gitlab-ci/container/cross_build.sh
+
+apt-get install -y --no-remove \
+ libvulkan-dev:$arch
--- /dev/null
+#!/bin/bash
+
+arch=s390x
+
+. .gitlab-ci/container/cross_build.sh
export DEBIAN_FRONTEND=noninteractive
-CROSS_ARCHITECTURES="i386 ppc64el s390x"
-for arch in $CROSS_ARCHITECTURES; do
- dpkg --add-architecture $arch
-done
-
apt-get install -y \
ca-certificates \
gnupg \
bison \
ccache \
clang-9 \
+ dpkg-cross \
flex \
g++ \
g++-mingw-w64-x86-64 \
gettext \
libclang-9-dev \
libclc-dev \
- libdrm-dev:s390x \
libelf-dev \
libepoxy-dev \
libexpat1-dev \
libgtk-3-dev \
libomxil-bellagio-dev \
libpciaccess-dev \
- libpciaccess-dev:i386 \
libunwind-dev \
libva-dev \
libvdpau-dev \
libvulkan-dev \
- libvulkan-dev:ppc64el \
libx11-dev \
libx11-xcb-dev \
libxdamage-dev \
python3-requests \
qemu-user \
scons \
- wine-development \
- wine32-development \
wine64-development \
x11proto-dri2-dev \
x11proto-gl-dev \
libllvm8 \
meson
-# Cross-build Mesa deps
-for arch in $CROSS_ARCHITECTURES; do
- apt-get install -y --no-remove \
- crossbuild-essential-${arch} \
- libelf-dev:${arch} \
- libexpat1-dev:${arch} \
- libffi-dev:${arch} \
- libstdc++6:${arch} \
- libtinfo-dev:${arch}
-
- apt-get install -y --no-remove -t buster-backports \
- libllvm8:${arch}
-
- mkdir /var/cache/apt/archives/${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 -t buster-backports \
- llvm-8-dev:${arch}
-done
-
-apt-get install -y --no-remove -t buster-backports \
- llvm-8-dev
-
-
-# Generate cross build files for Meson
-for arch in $CROSS_ARCHITECTURES; do
- . .gitlab-ci/create-cross-file.sh $arch
-done
-
# for the vulkan overlay layer
wget https://github.com/KhronosGroup/glslang/releases/download/master-tot/glslang-master-linux-Release.zip
wget \
"
+# We need multiarch for Wine
+dpkg --add-architecture i386
+apt-get update
+
apt-get install -y --no-remove \
- $STABLE_EPHEMERAL
+ $STABLE_EPHEMERAL \
+ wine-development \
+ wine32-development
+
+apt-get install -y --no-remove -t buster-backports \
+ llvm-8-dev
. .gitlab-ci/container/container_pre_build.sh
tar -xvf $LIBDRM_VERSION.tar.bz2 && rm $LIBDRM_VERSION.tar.bz2
cd $LIBDRM_VERSION
meson build -D vc4=true -D freedreno=true -D etnaviv=true -D libdir=lib/x86_64-linux-gnu; ninja -C build install
-rm -rf build; meson --cross-file=/cross_file-ppc64el.txt build -D libdir=lib/powerpc64le-linux-gnu; ninja -C build install
-rm -rf build; meson --cross-file=/cross_file-i386.txt build -D libdir=lib/i386-linux-gnu; ninja -C build install
cd ..
rm -rf $LIBDRM_VERSION