When we build our base-OS container, we run debian-install.sh to install packages and compile our build dependencies. Since the latter is mostly OS-independent, split debian-install.sh into two scripts: one to install and cleanup packages, and another just to compile stuff. Signed-off-by: Daniel Stone <daniels@collabora.com>dev
parent
2cf3730f4f
commit
50c83bf6c8
@ -0,0 +1,126 @@ |
||||
#!/bin/bash |
||||
# |
||||
# Builds the dependencies required for any OS/architecture combination. See |
||||
# .gitlab-ci.yml for more information. This script is called from an |
||||
# OS-specific build scripts like debian-install.sh. |
||||
|
||||
set -o xtrace -o errexit |
||||
|
||||
# Set concurrency to an appropriate level for our shared runners, falling back |
||||
# to the conservative default form before we had this variable. |
||||
export MAKEFLAGS="-j${FDO_CI_CONCURRENT:-4}" |
||||
export NINJAFLAGS="-j${FDO_CI_CONCURRENT:-4}" |
||||
|
||||
# Build and install Meson. Generally we want to keep this in sync with what |
||||
# we require inside meson.build, however per wayland/weston@bcf37c937a36, |
||||
# we use a higher version here |
||||
pip3 install --user git+https://github.com/mesonbuild/meson.git@0.57.0 |
||||
export PATH=$HOME/.local/bin:$PATH |
||||
|
||||
# Our docs are built using Sphinx (top-level organisation and final HTML/CSS |
||||
# generation), Doxygen (parse structures/functions/comments from source code), |
||||
# Breathe (a bridge between Doxygen and Sphinx), and we use the Read the Docs |
||||
# theme for the final presentation. |
||||
pip3 install sphinx==2.1.0 --user |
||||
pip3 install breathe==4.13.0.post0 --user |
||||
pip3 install sphinx_rtd_theme==0.4.3 --user |
||||
|
||||
# Build a Linux kernel for use in testing. We enable the VKMS module so we can |
||||
# predictably test the DRM backend in the absence of real hardware. We lock the |
||||
# version here so we see predictable results. |
||||
git clone --depth=1 --branch=drm-next-2020-06-11-1 https://anongit.freedesktop.org/git/drm/drm.git linux |
||||
cd linux |
||||
make x86_64_defconfig |
||||
make kvmconfig |
||||
./scripts/config --enable CONFIG_DRM_VKMS |
||||
make oldconfig |
||||
make |
||||
cd .. |
||||
mkdir /weston-virtme |
||||
mv linux/arch/x86/boot/bzImage /weston-virtme/bzImage |
||||
mv linux/.config /weston-virtme/.config |
||||
rm -rf linux |
||||
|
||||
# Build virtme, a QEMU wrapper: https://github.com/amluto/virtme |
||||
# |
||||
# virtme makes our lives easier by abstracting handling of the console, |
||||
# filesystem, etc, so we can pretend that the VM we execute in is actually |
||||
# just a regular container. |
||||
# |
||||
# The reason why we are using a fork here is that it adds a patch to have the |
||||
# --script-dir command line option. With that we can run scripts that are in a |
||||
# certain folder when virtme starts, which is necessary in our use case. |
||||
# |
||||
# The upstream also has some commands that could help us to reach the same |
||||
# results: --script-sh and --script-exec. Unfornutately they are not completely |
||||
# implemented yet, so we had some trouble to use them and it was becoming |
||||
# hackery. |
||||
# |
||||
git clone https://github.com/ezequielgarcia/virtme |
||||
cd virtme |
||||
git checkout -b snapshot 69e3cb83b3405edc99fcf9611f50012a4f210f78 |
||||
./setup.py install |
||||
cd .. |
||||
|
||||
# Build and install Wayland; keep this version in sync with our dependency |
||||
# in meson.build. |
||||
git clone --branch 1.18.0 --depth=1 https://gitlab.freedesktop.org/wayland/wayland |
||||
cd wayland |
||||
git show -s HEAD |
||||
mkdir build |
||||
cd build |
||||
../autogen.sh --disable-documentation |
||||
make install |
||||
cd ../../ |
||||
|
||||
# Keep this version in sync with our dependency in meson.build. If you wish to |
||||
# raise a MR against custom protocol, please change this reference to clone |
||||
# your relevant tree, and make sure you bump $FDO_DISTRIBUTION_TAG. |
||||
git clone --branch 1.19 https://gitlab.freedesktop.org/wayland/wayland-protocols |
||||
cd wayland-protocols |
||||
git show -s HEAD |
||||
mkdir build |
||||
cd build |
||||
../autogen.sh |
||||
make install |
||||
cd ../../ |
||||
rm -rf wayland-protocols |
||||
|
||||
# Build and install our own version of Mesa. Debian provides a perfectly usable |
||||
# Mesa, however llvmpipe's rendering behaviour can change subtly over time. |
||||
# This doesn't work for our tests which expect pixel-precise reproduction, so |
||||
# we lock it to a set version for more predictability. If you need newer |
||||
# features from Mesa then bump this version and $FDO_DISTRIBUTION_TAG, however |
||||
# please be prepared for some of the tests to change output, which will need to |
||||
# be manually inspected for correctness. |
||||
git clone --single-branch --branch 20.3 --shallow-since='2020-12-15' https://gitlab.freedesktop.org/mesa/mesa.git mesa |
||||
cd mesa |
||||
git checkout -b snapshot mesa-20.3.1 |
||||
meson build -Dauto_features=disabled \ |
||||
-Dgallium-drivers=swrast -Dvulkan-drivers= -Ddri-drivers= |
||||
ninja ${NINJAFLAGS} -C build install |
||||
cd .. |
||||
rm -rf mesa |
||||
|
||||
# PipeWire is used for remoting support. Unlike our other dependencies its |
||||
# behaviour will be stable, however as a pre-1.0 project its API is not yet |
||||
# stable, so again we lock it to a fixed version. |
||||
rm -rf pipewire |
||||
git clone --single-branch --branch 0.3.31 https://gitlab.freedesktop.org/pipewire/pipewire.git pipewire |
||||
cd pipewire |
||||
meson build |
||||
ninja ${NINJAFLAGS} -C build install |
||||
cd .. |
||||
rm -rf pipewire |
||||
|
||||
# seatd lets us avoid the pain of handling VTs manually through weston-launch |
||||
# or open-coding TTY assignment within Weston. We use this for our tests using |
||||
# the DRM backend. |
||||
git clone --depth=1 --branch 0.5.0 https://git.sr.ht/~kennylevinsen/seatd |
||||
cd seatd |
||||
meson build -Dauto_features=disabled \ |
||||
-Dseatd=enabled -Dlogind=enabled -Dserver=enabled \ |
||||
-Dexamples=disabled -Dman-pages=disabled |
||||
ninja ${NINJAFLAGS} -C build install |
||||
cd .. |
||||
rm -rf seatd |
Loading…
Reference in new issue