188 lines
5.3 KiB
Bash
188 lines
5.3 KiB
Bash
#!/bin/bash
|
|
|
|
set -e
|
|
set -o xtrace
|
|
|
|
############### Install packages for building
|
|
dpkg --add-architecture ${DEBIAN_ARCH}
|
|
echo 'deb-src https://deb.debian.org/debian testing main' > /etc/apt/sources.list.d/deb-src.list
|
|
apt-get update
|
|
apt-get -y install ca-certificates
|
|
apt-get -y install --no-install-recommends \
|
|
crossbuild-essential-${DEBIAN_ARCH} \
|
|
meson \
|
|
g++ \
|
|
git \
|
|
ccache \
|
|
pkg-config \
|
|
python3-mako \
|
|
python-numpy \
|
|
python-six \
|
|
python-mako \
|
|
python3-pip \
|
|
python3-setuptools \
|
|
python3-six \
|
|
python3-wheel \
|
|
python3-jinja2 \
|
|
bison \
|
|
flex \
|
|
gettext \
|
|
cmake \
|
|
bc \
|
|
libssl-dev \
|
|
lqa \
|
|
csvkit \
|
|
curl \
|
|
unzip \
|
|
wget \
|
|
debootstrap \
|
|
procps \
|
|
qemu-user-static \
|
|
cpio \
|
|
clang-8 \
|
|
llvm-8 \
|
|
libclang-8-dev \
|
|
llvm-8-dev \
|
|
gdc-9 \
|
|
lld-8 \
|
|
nasm \
|
|
libegl1-mesa-dev \
|
|
\
|
|
libdrm-dev:${DEBIAN_ARCH} \
|
|
libx11-dev:${DEBIAN_ARCH} \
|
|
libxxf86vm-dev:${DEBIAN_ARCH} \
|
|
libexpat1-dev:${DEBIAN_ARCH} \
|
|
libsensors-dev:${DEBIAN_ARCH} \
|
|
libxfixes-dev:${DEBIAN_ARCH} \
|
|
libxdamage-dev:${DEBIAN_ARCH} \
|
|
libxext-dev:${DEBIAN_ARCH} \
|
|
x11proto-dev:${DEBIAN_ARCH} \
|
|
libx11-xcb-dev:${DEBIAN_ARCH} \
|
|
libxcb-dri2-0-dev:${DEBIAN_ARCH} \
|
|
libxcb-glx0-dev:${DEBIAN_ARCH} \
|
|
libxcb-xfixes0-dev:${DEBIAN_ARCH} \
|
|
libxcb-dri3-dev:${DEBIAN_ARCH} \
|
|
libxcb-present-dev:${DEBIAN_ARCH} \
|
|
libxcb-randr0-dev:${DEBIAN_ARCH} \
|
|
libxcb-sync-dev:${DEBIAN_ARCH} \
|
|
libxrandr-dev:${DEBIAN_ARCH} \
|
|
libxshmfence-dev:${DEBIAN_ARCH} \
|
|
libelf-dev:${DEBIAN_ARCH} \
|
|
zlib1g-dev:${DEBIAN_ARCH} \
|
|
libglvnd-core-dev:${DEBIAN_ARCH} \
|
|
libgles2-mesa-dev:${DEBIAN_ARCH} \
|
|
libegl1-mesa-dev:${DEBIAN_ARCH} \
|
|
libpng-dev:${DEBIAN_ARCH}
|
|
|
|
|
|
############### Install lavacli (remove after it's back into Debian testing)
|
|
mkdir -p lavacli
|
|
wget -qO- https://git.lavasoftware.org/lava/lavacli/-/archive/v0.9.8/lavacli-v0.9.8.tar.gz | tar -xz --strip-components=1 -C lavacli
|
|
pushd lavacli
|
|
python3 ./setup.py install
|
|
popd
|
|
|
|
|
|
############### Cross-build dEQP
|
|
mkdir -p /artifacts/rootfs/deqp
|
|
|
|
git config --global user.email "mesa@example.com"
|
|
git config --global user.name "Mesa CI"
|
|
# XXX: Use --depth 1 once we can drop the cherry-picks.
|
|
git clone \
|
|
https://github.com/KhronosGroup/VK-GL-CTS.git \
|
|
-b opengl-es-cts-3.2.5.1 \
|
|
/VK-GL-CTS
|
|
cd /VK-GL-CTS
|
|
# Fix surfaceless build
|
|
git cherry-pick -x 22f41e5e321c6dcd8569c4dad91bce89f06b3670
|
|
git cherry-pick -x 1daa8dff73161ea60ead965bd6c9f2a0a2165648
|
|
|
|
# surfaceless links against libkms and such despite not using it.
|
|
sed -i '/gbm/d' targets/surfaceless/surfaceless.cmake
|
|
sed -i '/libkms/d' targets/surfaceless/surfaceless.cmake
|
|
sed -i '/libgbm/d' targets/surfaceless/surfaceless.cmake
|
|
|
|
python3 external/fetch_sources.py
|
|
|
|
cd /artifacts/rootfs/deqp
|
|
cmake -G Ninja \
|
|
-DDEQP_TARGET=surfaceless \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DCMAKE_C_COMPILER=${GCC_ARCH}-gcc \
|
|
-DCMAKE_CXX_COMPILER=${GCC_ARCH}-g++ \
|
|
/VK-GL-CTS
|
|
ninja
|
|
rm -rf /artifacts/rootfs/deqp/external
|
|
rm -rf /artifacts/rootfs/deqp/modules/gles31
|
|
rm -rf /artifacts/rootfs/deqp/modules/internal
|
|
rm -rf /artifacts/rootfs/deqp/executor
|
|
rm -rf /artifacts/rootfs/deqp/execserver
|
|
rm -rf /artifacts/rootfs/deqp/modules/egl
|
|
rm -rf /artifacts/rootfs/deqp/framework
|
|
find . -name CMakeFiles | xargs rm -rf
|
|
find . -name lib\*.a | xargs rm -rf
|
|
du -sh *
|
|
rm -rf /VK-GL-CTS-opengl-es-cts-3.2.5.0
|
|
|
|
|
|
############### Cross-build Volt dEQP runner
|
|
mkdir -p /battery
|
|
cd /battery
|
|
wget https://github.com/VoltLang/Battery/releases/download/v0.1.23/battery-0.1.23-x86_64-linux.tar.gz
|
|
tar xzvf battery-0.1.23-x86_64-linux.tar.gz
|
|
rm battery-0.1.23-x86_64-linux.tar.gz
|
|
mv battery /usr/local/bin
|
|
rm -rf /battery
|
|
|
|
mkdir -p /volt
|
|
cd /volt
|
|
mkdir -p Watt Volta dEQP
|
|
wget -qO- https://github.com/VoltLang/Watt/archive/v0.1.3.tar.gz | tar -xz --strip-components=1 -C ./Watt
|
|
wget -qO- https://github.com/VoltLang/Volta/archive/v0.1.3.tar.gz | tar -xz --strip-components=1 -C ./Volta
|
|
wget -qO- https://github.com/Wallbraker/dEQP/archive/v0.1.4.tar.gz | tar -xz --strip-components=1 -C ./dEQP
|
|
battery config --release --lto Volta Watt
|
|
battery build
|
|
battery config --arch ${VOLT_ARCH} --cmd-volta Volta/volta Volta/rt Watt dEQP
|
|
battery build
|
|
rm /usr/local/bin/battery
|
|
cp dEQP/deqp /artifacts/rootfs/deqp/deqp-volt
|
|
rm -rf /volt
|
|
|
|
|
|
############### Remove LLVM now, so the container image is smaller
|
|
apt-get -y remove \*llvm\*
|
|
|
|
|
|
############### Cross-build kernel
|
|
KERNEL_URL="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/snapshot/linux-5.3-rc8.tar.gz"
|
|
export ARCH=${KERNEL_ARCH}
|
|
export CROSS_COMPILE="${GCC_ARCH}-"
|
|
|
|
mkdir -p /kernel
|
|
wget -qO- ${KERNEL_URL} | tar -xz --strip-components=1 -C /kernel
|
|
cd /kernel
|
|
./scripts/kconfig/merge_config.sh ${DEFCONFIG} /tmp/clone/.gitlab-ci/${KERNEL_ARCH}.config
|
|
make -j12 ${KERNEL_IMAGE_NAME} dtbs
|
|
cp arch/${KERNEL_ARCH}/boot/${KERNEL_IMAGE_NAME} /artifacts/.
|
|
cp ${DEVICE_TREES} /artifacts/.
|
|
rm -rf /kernel
|
|
|
|
|
|
############### Create rootfs
|
|
cp /tmp/clone/.gitlab-ci/create-rootfs.sh /artifacts/rootfs/.
|
|
mkdir -p /artifacts/rootfs/bin
|
|
cp /usr/bin/qemu-aarch64-static /artifacts/rootfs/bin
|
|
cp /usr/bin/qemu-arm-static /artifacts/rootfs/bin
|
|
|
|
set +e
|
|
debootstrap --variant=minbase --arch=${DEBIAN_ARCH} testing /artifacts/rootfs/ http://deb.debian.org/debian
|
|
cat /artifacts/rootfs/debootstrap/debootstrap.log
|
|
set -e
|
|
chroot /artifacts/rootfs sh /create-rootfs.sh
|
|
|
|
rm /artifacts/rootfs/bin/qemu-arm-static
|
|
rm /artifacts/rootfs/bin/qemu-aarch64-static
|
|
rm /artifacts/rootfs/create-rootfs.sh
|
|
|