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