gitlab-ci: Add x86_build-base docker image

Similar to x86_test-base.

Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5296>
This commit is contained in:
Michel Dänzer 2020-05-30 15:53:41 +02:00 committed by Eric Anholt
parent ae400553fb
commit a85da8e3d5
3 changed files with 170 additions and 128 deletions

View File

@ -131,30 +131,49 @@ success:
# no need to pull the whole repo to build the container image
GIT_STRATEGY: none
# Debian 10 based x86 build image
x86_build:
# Debian 10 based x86 build image base
x86_build-base:
extends:
- .fdo.container-build@debian
- .container
variables:
FDO_DISTRIBUTION_TAG: &x86_build "2020-05-31"
FDO_DISTRIBUTION_TAG: &x86_build-base "2020-06-01"
.use-x86_build-base:
extends:
- x86_build-base
- .ci-run-policy
stage: container-2
variables:
BASE_TAG: *x86_build-base
FDO_BASE_IMAGE: "$CI_REGISTRY_IMAGE/debian/x86_build-base:$BASE_TAG"
needs:
- x86_build-base
# Debian 10 based x86 main build image
x86_build:
extends:
- .use-x86_build-base
variables:
FDO_DISTRIBUTION_TAG: &x86_build "2020-06-01"
.use-x86_build:
variables:
TAG: *x86_build
image: "$CI_REGISTRY_IMAGE/debian/x86_build:$TAG"
needs:
- x86_build-base
- x86_build
# Debian 10 based x86 test image base
x86_test-base:
extends: x86_build
extends: x86_build-base
variables:
FDO_DISTRIBUTION_TAG: &x86_test-base "2020-06-02"
.use-x86_test-base:
extends:
- x86_build
- x86_build-base
- .ci-run-policy
stage: container-2
variables:
@ -177,7 +196,7 @@ x86_test-vk:
# Debian 9 based x86 build image (old LLVM)
x86_build_old:
extends: x86_build
extends: x86_build-base
variables:
FDO_DISTRIBUTION_TAG: &x86_build_old "2020-06-02"
FDO_DISTRIBUTION_VERSION: stretch-slim
@ -206,7 +225,7 @@ arm_build:
# x86 image with ARM rootfses for baremetal testing.
arm_test:
extends: x86_build
extends: x86_build-base
variables:
FDO_DISTRIBUTION_TAG: &arm_test "2020-06-01"
@ -621,6 +640,7 @@ meson-mingw32-x86_64:
TAG: *x86_test-gl
image: "$CI_REGISTRY_IMAGE/debian/x86_test-gl:$TAG"
needs:
- x86_build-base
- x86_build
- meson-testing
- x86_test-base
@ -633,6 +653,7 @@ meson-mingw32-x86_64:
TAG: *x86_test-vk
image: "$CI_REGISTRY_IMAGE/debian/x86_test-vk:$TAG"
needs:
- x86_build-base
- x86_build
- meson-testing
- x86_test-base

View File

@ -0,0 +1,131 @@
#!/bin/bash
set -e
set -o xtrace
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 \
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
apt-get update
apt-get install -y --no-remove \
$STABLE_EPHEMERAL \
bison \
ccache \
clang-9 \
flex \
g++ \
g++-mingw-w64-x86-64 \
gcc \
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 \
libxext-dev \
libxml2-utils \
libxrandr-dev \
libxrender-dev \
libxshmfence-dev \
libxvmc-dev \
libxxf86vm-dev \
libz-mingw-w64-dev \
llvm-9-dev \
pkg-config \
python-mako \
python3-mako \
python3-pil \
python3-requests \
qemu-user \
scons \
wine-development \
wine32-development \
wine64-development \
x11proto-dri2-dev \
x11proto-gl-dev \
x11proto-randr-dev \
xz-utils \
zlib1g-dev
apt-get install -y --no-remove -t buster-backports \
libclang-8-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
unzip glslang-master-linux-Release.zip bin/glslangValidator
install -m755 bin/glslangValidator /usr/local/bin/
rm bin/glslangValidator glslang-master-linux-Release.zip
############### Uninstall ephemeral packages
apt-get purge -y \
gnupg \
unzip \
wget
. .gitlab-ci/container/container_post_build.sh

View File

@ -5,112 +5,24 @@ set -o xtrace
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 \
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
apt-get update
apt-get install -y --no-remove \
# Ephemeral packages (installed for this script and removed again at the end)
STABLE_EPHEMERAL=" \
autoconf \
automake \
autotools-dev \
bison \
ccache \
clang-9 \
bzip2 \
cmake \
flex \
g++ \
g++-mingw-w64-x86-64 \
gcc \
gettext \
git \
libclang-9-dev \
libclc-dev \
libdrm-dev:s390x \
libelf-dev \
libepoxy-dev \
libexpat1-dev \
gnupg \
libgbm-dev \
libgtk-3-dev \
libomxil-bellagio-dev \
libpciaccess-dev \
libpciaccess-dev:i386 \
libtool \
libunwind-dev \
libva-dev \
libvdpau-dev \
libvulkan-dev \
libvulkan-dev:ppc64el \
libx11-dev \
libx11-xcb-dev \
libxdamage-dev \
libxext-dev \
libxml2-utils \
libxrandr-dev \
libxrender-dev \
libxshmfence-dev \
libxvmc-dev \
libxxf86vm-dev \
libz-mingw-w64-dev \
llvm-9-dev \
pkg-config \
python-mako \
python3-mako \
python3-pil \
python3-requests \
qemu-user \
scons \
wine-development \
wine32-development \
wine64-development \
x11proto-dri2-dev \
x11proto-gl-dev \
x11proto-randr-dev \
xz-utils \
zlib1g-dev
make \
unzip \
wget \
"
apt-get install -y --no-remove -t buster-backports \
libclang-8-dev \
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 \
apt-get install -y --no-remove \
$STABLE_EPHEMERAL
. .gitlab-ci/container/container_pre_build.sh
@ -127,19 +39,6 @@ EOF
chmod +x /usr/local/bin/x86_64-w64-mingw32-pkg-config
# 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
unzip glslang-master-linux-Release.zip bin/glslangValidator
install -m755 bin/glslangValidator /usr/local/bin/
rm bin/glslangValidator glslang-master-linux-Release.zip
# dependencies where we want a specific version
export XORG_RELEASES=https://xorg.freedesktop.org/releases/individual
export XCB_RELEASES=https://xcb.freedesktop.org/dist
@ -208,15 +107,6 @@ popd
############### Uninstall the build software
apt-get purge -y \
autoconf \
automake \
autotools-dev \
cmake \
git \
gnupg \
libgbm-dev \
libtool \
unzip \
wget
$STABLE_EPHEMERAL
. .gitlab-ci/container/container_post_build.sh