xref: /aosp_15_r20/external/crosvm/third_party/virglrenderer/ci/build-container.sh (revision bbecb9d118dfdb95f99bd754f8fa9be01f189df3)
1#!/bin/bash
2
3set -e
4set -o xtrace
5
6export DEBIAN_FRONTEND=noninteractive
7export GOPATH=/usr/local/go
8export PATH=$PATH:/usr/local/go/bin
9export LD_LIBRARY_PATH=/usr/local/lib64:/usr/local/lib:/usr/local/lib/x86_64-linux-gnu
10export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/local/lib64/pkgconfig:/usr/local/share/pkgconfig:/usr/local/lib/x86_64-linux-gnu/pkgconfig
11export LDFLAGS="-L/usr/local/lib64 -L/usr/local/lib/ -L/usr/local/lib/x86_64-linux-gnu"
12export CC="gcc"
13export CXX="g++"
14export CFLAGS="-g3"
15export CXXFLAGS="-g3"
16export GIT_DATE="2020-02-02"
17export MESA_DEBUG=1
18
19echo 'path-exclude=/usr/share/doc/*' > /etc/dpkg/dpkg.cfg.d/99-exclude-cruft
20echo 'path-exclude=/usr/share/man/*' >> /etc/dpkg/dpkg.cfg.d/99-exclude-cruft
21echo '#!/bin/sh' > /usr/sbin/policy-rc.d
22echo 'exit 101' >> /usr/sbin/policy-rc.d
23chmod +x /usr/sbin/policy-rc.d
24
25echo deb-src http://deb.debian.org/debian bullseye main >> /etc/apt/sources.list
26echo deb http://deb.debian.org/debian bullseye-backports main >> /etc/apt/sources.list
27apt-get update
28apt-get -y install ca-certificates
29apt-get -y install --no-install-recommends \
30      autoconf \
31      busybox \
32      ccache \
33      check \
34      clang \
35      cmake \
36      dbus \
37      g++ \
38      gcc \
39      gdb \
40      gdc \
41      git \
42      golang-go \
43      kbd \
44      libcurl4-openssl-dev \
45      libgbm-dev \
46      libnss-systemd \
47      libpng-dev \
48      libxrandr-dev \
49      libxvmc-dev \
50      libsm-dev \
51      libvulkan-dev \
52      libwayland-dev \
53      libwayland-egl-backend-dev \
54      linux-image-amd64 \
55      lld \
56      llvm-11-dev \
57      mesa-utils \
58      meson \
59      nasm \
60      ninja-build \
61      procps \
62      psmisc \
63      python3-numpy \
64      python3-six \
65      python3-mako \
66      python3-pip \
67      python3-setuptools \
68      python3-six \
69      python3-wheel \
70      qemu \
71      spirv-headers \
72      strace \
73      systemd \
74      systemd-coredump \
75      time \
76      waffle-utils \
77      wget \
78      xinit \
79      xserver-xorg-core \
80      xterm \
81      xvfb \
82      zlib1g-dev
83
84apt-get -y build-dep --no-install-recommends \
85      libdrm \
86      mesa \
87      piglit \
88      check
89
90apt-get -y remove valgrind libdrm-dev
91rm -rf /var/lib/apt/lists/*
92
93export KNOWN_GOOD_DRM=libdrm-2.4.105
94mkdir /drm
95pushd /drm
96git clone --shallow-since="$GIT_DATE" https://gitlab.freedesktop.org/mesa/drm.git . && \
97    git checkout ${KNOWN_GOOD_DRM} && \
98    git log --oneline -n 1 && \
99    mkdir -p build && \
100    meson build/ && \
101    meson configure build/ -Dprefix=/usr/local -Dlibdir=lib && \
102    ninja -C build/ install >/dev/null && \
103    rm -rf /drm
104    [ "$?" = "0" ] || exit 1
105popd
106
107export KNOWN_GOOD_MESA=${KNOWN_GOOD_MESA:-2908aba828c39a322dff8fd3044b42955efebfdb}
108echo $KNOWN_GOOD_MESA
109export MESA_REPO=https://gitlab.freedesktop.org/mesa/mesa.git
110echo $MESA_REPO
111mkdir /mesa
112pushd /mesa
113git clone --shallow-since="$GIT_DATE" ${MESA_REPO} . && \
114    git checkout ${KNOWN_GOOD_MESA} && \
115    git log --oneline -n 1 && \
116    mkdir -p build && \
117    meson build/ -Dprefix=/usr/local -Dplatforms=x11,wayland -Ddri-drivers= -Dgallium-drivers=swrast,iris,virgl,radeonsi -Dbuildtype=debugoptimized -Dllvm=true -Dglx=dri -Dgallium-vdpau=false -Dgallium-va=false -Dvulkan-drivers=[] -Dlibdir=lib && \
118    ninja -C build/ install >/dev/null && \
119    rm -rf /mesa
120    [ "$?" = "0" ] || exit 1
121popd
122
123export KNOWN_GOOD_EPOXY=${KNOWN_GOOD_EPOXY:-1.5.4}
124mkdir /epoxy
125pushd /epoxy
126git clone --shallow-since="$GIT_DATE" https://github.com/anholt/libepoxy.git . && \
127    git fetch --tags &&
128    git checkout ${KNOWN_GOOD_EPOXY} && \
129    git log --oneline -n 1 && \
130    mkdir -p build && \
131    meson build/ && \
132    meson configure build/ -Dprefix=/usr/local -Dlibdir=lib && \
133    ninja -C build/ install >/dev/null && \
134    rm -rf /epoxy
135    [ "$?" == "0" ] || exit 1
136popd
137
138export BATTERY_VERSION=0.1.24
139mkdir /battery
140pushd /battery
141wget "https://github.com/VoltLang/Battery/releases/download/v${BATTERY_VERSION}/battery-${BATTERY_VERSION}-x86_64-linux.tar.gz" && \
142    tar xzvf battery-${BATTERY_VERSION}-x86_64-linux.tar.gz && \
143    rm battery-${BATTERY_VERSION}-x86_64-linux.tar.gz && \
144    mv battery /usr/local/bin
145    [ "$?" = "0" ] || exit 1
146popd
147
148mkdir /volt
149pushd /volt
150git clone --depth=1 https://github.com/VoltLang/Watt.git && \
151    git clone --depth=1 https://github.com/VoltLang/Volta.git && \
152    git clone --depth=1 https://github.com/Wallbraker/dEQP.git && \
153    battery config --release --lto Volta Watt && \
154    battery build && \
155    battery config --cmd-volta Volta/volta Volta/rt Watt dEQP && \
156    battery build && \
157    cp dEQP/deqp /usr/local/bin && \
158    rm -rf /volt
159    [ "$?" = "0" ] || exit 1
160popd
161
162# To avoid this error:
163# error: RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function.
164git config --global http.postBuffer 1048576000
165
166export KNOWN_GOOD_CTS=${KNOWN_GOOD_CTS:-ededa67cb12aec0c5e92e3eba40d3f3c7b4d697f}
167mkdir /VK-GL-CTS
168pushd /VK-GL-CTS
169git clone --shallow-since="$GIT_DATE" https://github.com/KhronosGroup/VK-GL-CTS.git . && \
170    git checkout ${KNOWN_GOOD_CTS} && \
171    git log --oneline -n 1 && \
172    python3 external/fetch_sources.py && \
173    mkdir -p build && \
174    cd build && \
175    cmake -DDEQP_TARGET=x11_egl_glx -DCMAKE_BUILD_TYPE=Release .. && \
176    make -j$(nproc) && \
177    find . -name CMakeFiles | xargs rm -rf && \
178    find . -name lib\*.a | xargs rm -rf
179    [ "$?" = "0" ] || exit 1
180popd
181
182export KNOWN_GOOD_PIGLIT=${KNOWN_GOOD_PIGLIT:-6a4be9e9946df310d9402f995f371c7deb8c27ba}
183mkdir /piglit
184pushd /piglit
185git clone --shallow-since="$GIT_DATE" https://gitlab.freedesktop.org/mesa/piglit.git . && \
186    git checkout ${KNOWN_GOOD_PIGLIT} && \
187    git log --oneline -n 1 && \
188    cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=Release . && \
189    make -j$(nproc) install >/dev/null && \
190    rm -rf /usr/local/lib/piglit/generated_tests/spec/arb_vertex_attrib_64bit && \
191    rm -rf /usr/local/lib/piglit/generated_tests/spec/glsl-4.20 && \
192    rm -rf /piglit
193    [ "$?" = "0" ] || exit 1
194popd
195
196
197