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