Mesa (main): ci: Build Crosvm in our container

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jun 9 19:45:39 UTC 2021


Module: Mesa
Branch: main
Commit: dc9cd18f522d09dc447e2e3f1c80af0549d45660
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=dc9cd18f522d09dc447e2e3f1c80af0549d45660

Author: Tomeu Vizoso <tomeu.vizoso at collabora.com>
Date:   Thu Feb  4 15:10:08 2021 +0100

ci: Build Crosvm in our container

And also add the required bits to the x86_64 kernel.

syslogd is needed by Crosvm.

iptables is needed to route packets in and out the VM.

Signed-off-by: Tomeu Vizoso <tomeu.vizoso at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10862>

---

 .gitlab-ci/container/build-crosvm.sh        | 50 +++++++++++++++++++++++++++++
 .gitlab-ci/container/build-virglrenderer.sh |  4 +--
 .gitlab-ci/container/x86_64.config          | 23 +++++++++++++
 .gitlab-ci/container/x86_test-gl.sh         | 21 ++++++++++--
 4 files changed, 94 insertions(+), 4 deletions(-)

diff --git a/.gitlab-ci/container/build-crosvm.sh b/.gitlab-ci/container/build-crosvm.sh
new file mode 100644
index 00000000000..8993287b950
--- /dev/null
+++ b/.gitlab-ci/container/build-crosvm.sh
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+set -ex
+
+# Pull down repositories that crosvm depends on to cros checkout-like locations.
+CROS_ROOT=/
+THIRD_PARTY_ROOT=$CROS_ROOT/third_party
+mkdir -p $THIRD_PARTY_ROOT
+AOSP_EXTERNAL_ROOT=$CROS_ROOT/aosp/external
+mkdir -p $AOSP_EXTERNAL_ROOT
+PLATFORM2_ROOT=/platform2
+
+PLATFORM2_COMMIT=2079dd5fcd61f1ac39e2fc16595956617f3f1e9e
+git clone --single-branch --no-checkout https://chromium.googlesource.com/chromiumos/platform2 $PLATFORM2_ROOT
+pushd $PLATFORM2_ROOT
+git checkout $PLATFORM2_COMMIT
+popd
+
+# minijail does not exist in upstream linux distros.
+MINIJAIL_COMMIT=5f9e3001c61626d2863dad91248ba8496c3ef511
+git clone --single-branch --no-checkout https://android.googlesource.com/platform/external/minijail $AOSP_EXTERNAL_ROOT/minijail
+pushd $AOSP_EXTERNAL_ROOT/minijail
+git checkout $MINIJAIL_COMMIT
+make
+cp libminijail.so /usr/lib/x86_64-linux-gnu/
+popd
+
+# Pull the cras library for audio access.
+ADHD_COMMIT=5068bdd18b51de8f2d5bcff754cdecda80de8f44
+git clone --single-branch --no-checkout https://chromium.googlesource.com/chromiumos/third_party/adhd $THIRD_PARTY_ROOT/adhd
+pushd $THIRD_PARTY_ROOT/adhd
+git checkout $ADHD_COMMIT
+popd
+
+CROSVM_VERSION=f70350ba51e9631e3b7fe711c0296e041a61a499
+git clone --single-branch --no-checkout https://chromium.googlesource.com/chromiumos/platform/crosvm /platform/crosvm
+pushd /platform/crosvm
+git checkout "$CROSVM_VERSION"
+
+RUSTFLAGS='-L native=/usr/local/lib' cargo install \
+  -j ${FDO_CI_CONCURRENT:-4} \
+  --locked \
+  --features 'default-no-sandbox gpu x virtio-gpu-next' \
+  --path . \
+  --root /usr/local \
+  $EXTRA_CARGO_ARGS
+
+popd
+
+rm -rf $PLATFORM2_ROOT $AOSP_EXTERNAL_ROOT/minijail $THIRD_PARTY_ROOT/adhd /platform/crosvm
diff --git a/.gitlab-ci/container/build-virglrenderer.sh b/.gitlab-ci/container/build-virglrenderer.sh
index 20cd9474147..e917fcf4c6b 100644
--- a/.gitlab-ci/container/build-virglrenderer.sh
+++ b/.gitlab-ci/container/build-virglrenderer.sh
@@ -4,13 +4,13 @@ set -ex
 
 mkdir -p /epoxy
 pushd /epoxy
-wget -qO- https://github.com/anholt/libepoxy/releases/download/1.5.4/libepoxy-1.5.4.tar.xz | tar -xJ --strip-components=1
+wget -qO- https://github.com/anholt/libepoxy/releases/download/1.5.8/libepoxy-1.5.8.tar.xz | tar -xJ --strip-components=1
 meson build/ $EXTRA_MESON_ARGS
 ninja -C build install
 popd
 rm -rf /epoxy
 
-VIRGLRENDERER_VERSION=43148d1115a12219a0560a538c9872d07c28c558
+VIRGLRENDERER_VERSION=7db2faa354a895b75cee9e9c872c87500e1be7cb
 git clone https://gitlab.freedesktop.org/virgl/virglrenderer.git --single-branch --no-checkout /virglrenderer
 pushd /virglrenderer
 git checkout "$VIRGLRENDERER_VERSION"
diff --git a/.gitlab-ci/container/x86_64.config b/.gitlab-ci/container/x86_64.config
index ddaada4053b..5717f7d7fe3 100644
--- a/.gitlab-ci/container/x86_64.config
+++ b/.gitlab-ci/container/x86_64.config
@@ -70,3 +70,26 @@ CONFIG_CHROME_PLATFORMS=y
 
 #options for Intel devices
 CONFIG_MFD_INTEL_LPSS_PCI=y
+
+#options for KVM guests
+CONFIG_FUSE_FS=y
+CONFIG_HYPERVISOR_GUEST=y
+CONFIG_KVM=y
+CONFIG_KVM_GUEST=y
+CONFIG_VIRT_DRIVERS=y
+CONFIG_VIRTIO_FS=y
+CONFIG_DRM_VIRTIO_GPU=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_VIRTIO_NET=y
+CONFIG_VIRTIO_CONSOLE=y
+CONFIG_PARAVIRT=y
+CONFIG_VIRTIO_BLK=y
+CONFIG_VIRTUALIZATION=y
+CONFIG_VIRTIO=y
+CONFIG_VIRTIO_PCI=y
+CONFIG_VIRTIO_MMIO=y
+CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
+CONFIG_CRYPTO_DEV_VIRTIO=y
+CONFIG_HW_RANDOM_VIRTIO=y
+CONFIG_BLK_MQ_VIRTIO=y
+CONFIG_TUN=y
diff --git a/.gitlab-ci/container/x86_test-gl.sh b/.gitlab-ci/container/x86_test-gl.sh
index e814aa1a138..6b126ac33e8 100644
--- a/.gitlab-ci/container/x86_test-gl.sh
+++ b/.gitlab-ci/container/x86_test-gl.sh
@@ -9,12 +9,16 @@ export DEBIAN_FRONTEND=noninteractive
 STABLE_EPHEMERAL=" \
       autoconf \
       automake \
+      cargo \
       ccache \
       clang-11 \
       cmake \
       g++ \
       glslang-tools \
+      libasound2-dev \
+      libcap-dev \
       libclang-cpp11-dev \
+      libfdt-dev \
       libgbm-dev \
       libgles2-mesa-dev \
       libllvmspirvlib-dev \
@@ -25,6 +29,7 @@ STABLE_EPHEMERAL=" \
       libwaffle-dev \
       libwayland-dev \
       libx11-xcb-dev \
+      libxext-dev \
       libxkbcommon-dev \
       libxrender-dev \
       llvm-11-dev \
@@ -35,6 +40,7 @@ STABLE_EPHEMERAL=" \
       patch \
       pkg-config \
       python3-distutils \
+      wayland-protocols \
       wget \
       xz-utils \
       "
@@ -42,21 +48,25 @@ STABLE_EPHEMERAL=" \
 apt-get install -y --no-remove \
       $STABLE_EPHEMERAL \
       clinfo \
+      inetutils-syslogd \
+      iptables \
       libclang-common-11-dev \
       libclang-cpp11 \
+      libcap2 \
       libegl1 \
+      libfdt1 \
       libllvmspirvlib11 \
       libxcb-shm0 \
       ocl-icd-libopencl1 \
       python3-lxml \
       python3-renderdoc \
       python3-simplejson \
-      spirv-tools
+      spirv-tools \
+      sysvinit-core
 
 
 . .gitlab-ci/container/container_pre_build.sh
 
-
 ############### Build libdrm
 
 . .gitlab-ci/container/build-libdrm.sh
@@ -73,6 +83,13 @@ apt-get install -y --no-remove \
 
 PIGLIT_OPTS="-DPIGLIT_BUILD_CL_TESTS=ON" . .gitlab-ci/container/build-piglit.sh
 
+############### Build Rust deps (Crosvm and deqp-runner)
+
+. .gitlab-ci/container/build-crosvm.sh
+. .gitlab-ci/container/build-deqp-runner.sh
+
+rm -rf /root/.cargo
+
 ############### Build dEQP GL
 
 DEQP_TARGET=surfaceless . .gitlab-ci/container/build-deqp.sh



More information about the mesa-commit mailing list