17ec681f3Smrg#!/bin/bash 27ec681f3Smrg 37ec681f3Smrgset -e 47ec681f3Smrgset -o xtrace 57ec681f3Smrg 67ec681f3Smrgexport DEBIAN_FRONTEND=noninteractive 77ec681f3Smrg 87ec681f3Smrg# Ephemeral packages (installed for this script and removed again at the end) 97ec681f3SmrgSTABLE_EPHEMERAL=" \ 107ec681f3Smrg ccache \ 117ec681f3Smrg cmake \ 127ec681f3Smrg g++ \ 137ec681f3Smrg g++-mingw-w64-i686-posix \ 147ec681f3Smrg g++-mingw-w64-x86-64-posix \ 157ec681f3Smrg glslang-tools \ 167ec681f3Smrg libgbm-dev \ 177ec681f3Smrg libgles2-mesa-dev \ 187ec681f3Smrg liblz4-dev \ 197ec681f3Smrg libpciaccess-dev \ 207ec681f3Smrg libudev-dev \ 217ec681f3Smrg libvulkan-dev \ 227ec681f3Smrg libwaffle-dev \ 237ec681f3Smrg libwayland-dev \ 247ec681f3Smrg libx11-xcb-dev \ 257ec681f3Smrg libxcb-ewmh-dev \ 267ec681f3Smrg libxcb-keysyms1-dev \ 277ec681f3Smrg libxkbcommon-dev \ 287ec681f3Smrg libxrandr-dev \ 297ec681f3Smrg libxrender-dev \ 307ec681f3Smrg libzstd-dev \ 317ec681f3Smrg meson \ 327ec681f3Smrg mingw-w64-i686-dev \ 337ec681f3Smrg mingw-w64-tools \ 347ec681f3Smrg mingw-w64-x86-64-dev \ 357ec681f3Smrg p7zip \ 367ec681f3Smrg patch \ 377ec681f3Smrg pkg-config \ 387ec681f3Smrg python3-distutils \ 397ec681f3Smrg wget \ 407ec681f3Smrg xz-utils \ 417ec681f3Smrg " 427ec681f3Smrg 437ec681f3Smrgapt-get install -y --no-remove \ 447ec681f3Smrg $STABLE_EPHEMERAL \ 457ec681f3Smrg libxcb-shm0 \ 467ec681f3Smrg python3-lxml \ 477ec681f3Smrg python3-simplejson \ 487ec681f3Smrg xinit \ 497ec681f3Smrg xserver-xorg-video-amdgpu \ 507ec681f3Smrg xserver-xorg-video-ati 517ec681f3Smrg 527ec681f3Smrg# We need multiarch for Wine 537ec681f3Smrgdpkg --add-architecture i386 547ec681f3Smrg 557ec681f3Smrgapt-get update 567ec681f3Smrg 577ec681f3Smrgapt-get install -y --no-remove \ 587ec681f3Smrg wine \ 597ec681f3Smrg wine32 \ 607ec681f3Smrg wine64 617ec681f3Smrg 627ec681f3Smrgfunction setup_wine() { 637ec681f3Smrg export WINEDEBUG="-all" 647ec681f3Smrg export WINEPREFIX="$1" 657ec681f3Smrg 667ec681f3Smrg # We don't want crash dialogs 677ec681f3Smrg cat >crashdialog.reg <<EOF 687ec681f3SmrgWindows Registry Editor Version 5.00 697ec681f3Smrg 707ec681f3Smrg[HKEY_CURRENT_USER\Software\Wine\WineDbg] 717ec681f3Smrg"ShowCrashDialog"=dword:00000000 727ec681f3Smrg 737ec681f3SmrgEOF 747ec681f3Smrg 757ec681f3Smrg # Set the wine prefix and disable the crash dialog 767ec681f3Smrg wine regedit crashdialog.reg 777ec681f3Smrg rm crashdialog.reg 787ec681f3Smrg 797ec681f3Smrg # An immediate wine command may fail with: "${WINEPREFIX}: Not a 807ec681f3Smrg # valid wine prefix." and that is just spit because of checking 817ec681f3Smrg # the existance of the system.reg file, which fails. Just giving 827ec681f3Smrg # it a bit more of time for it to be created solves the problem 837ec681f3Smrg # ... 847ec681f3Smrg while ! test -f "${WINEPREFIX}/system.reg"; do sleep 1; done 857ec681f3Smrg} 867ec681f3Smrg 877ec681f3Smrg############### Install DXVK 887ec681f3Smrg 897ec681f3SmrgDXVK_VERSION="1.8.1" 907ec681f3Smrg 917ec681f3Smrgsetup_wine "/dxvk-wine64" 927ec681f3Smrg 937ec681f3Smrgwget "https://github.com/doitsujin/dxvk/releases/download/v${DXVK_VERSION}/dxvk-${DXVK_VERSION}.tar.gz" 947ec681f3Smrgtar xzpf dxvk-"${DXVK_VERSION}".tar.gz 957ec681f3Smrgdxvk-"${DXVK_VERSION}"/setup_dxvk.sh install 967ec681f3Smrgrm -rf dxvk-"${DXVK_VERSION}" 977ec681f3Smrgrm dxvk-"${DXVK_VERSION}".tar.gz 987ec681f3Smrg 997ec681f3Smrg############### Install Windows' apitrace binaries 1007ec681f3Smrg 1017ec681f3SmrgAPITRACE_VERSION="10.0" 1027ec681f3SmrgAPITRACE_VERSION_DATE="" 1037ec681f3Smrg 1047ec681f3Smrgwget "https://github.com/apitrace/apitrace/releases/download/${APITRACE_VERSION}/apitrace-${APITRACE_VERSION}${APITRACE_VERSION_DATE}-win64.7z" 1057ec681f3Smrg7zr x "apitrace-${APITRACE_VERSION}${APITRACE_VERSION_DATE}-win64.7z" \ 1067ec681f3Smrg "apitrace-${APITRACE_VERSION}${APITRACE_VERSION_DATE}-win64/bin/apitrace.exe" \ 1077ec681f3Smrg "apitrace-${APITRACE_VERSION}${APITRACE_VERSION_DATE}-win64/bin/d3dretrace.exe" 1087ec681f3Smrgmv "apitrace-${APITRACE_VERSION}${APITRACE_VERSION_DATE}-win64" /apitrace-msvc-win64 1097ec681f3Smrgrm "apitrace-${APITRACE_VERSION}${APITRACE_VERSION_DATE}-win64.7z" 1107ec681f3Smrg 1117ec681f3Smrg# Add the apitrace path to the registry 1127ec681f3Smrgwine \ 1137ec681f3Smrg reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment" \ 1147ec681f3Smrg /v Path \ 1157ec681f3Smrg /t REG_EXPAND_SZ \ 1167ec681f3Smrg /d "C:\windows\system32;C:\windows;C:\windows\system32\wbem;Z:\apitrace-msvc-win64\bin" \ 1177ec681f3Smrg /f 1187ec681f3Smrg 1197ec681f3Smrg############### Building ... 1207ec681f3Smrg 1217ec681f3Smrg. .gitlab-ci/container/container_pre_build.sh 1227ec681f3Smrg 1237ec681f3Smrg############### Build libdrm 1247ec681f3Smrg 1257ec681f3Smrg. .gitlab-ci/container/build-libdrm.sh 1267ec681f3Smrg 1277ec681f3Smrg############### Build parallel-deqp-runner's hang-detection tool 1287ec681f3Smrg 1297ec681f3Smrg. .gitlab-ci/container/build-hang-detection.sh 1307ec681f3Smrg 1317ec681f3Smrg############### Build piglit 1327ec681f3Smrg 1337ec681f3SmrgPIGLIT_BUILD_TARGETS="piglit_replayer" . .gitlab-ci/container/build-piglit.sh 1347ec681f3Smrg 1357ec681f3Smrg############### Build Fossilize 1367ec681f3Smrg 1377ec681f3Smrg. .gitlab-ci/container/build-fossilize.sh 1387ec681f3Smrg 1397ec681f3Smrg############### Build dEQP VK 1407ec681f3Smrg 1417ec681f3Smrg. .gitlab-ci/container/build-deqp.sh 1427ec681f3Smrg 1437ec681f3Smrg############### Build gfxreconstruct 1447ec681f3Smrg 1457ec681f3Smrg. .gitlab-ci/container/build-gfxreconstruct.sh 1467ec681f3Smrg 1477ec681f3Smrg############### Build VKD3D-Proton 1487ec681f3Smrg 1497ec681f3Smrgsetup_wine "/vkd3d-proton-wine64" 1507ec681f3Smrg 1517ec681f3Smrg. .gitlab-ci/container/build-vkd3d-proton.sh 1527ec681f3Smrg 1537ec681f3Smrg############### Uninstall the build software 1547ec681f3Smrg 1557ec681f3Smrgccache --show-stats 1567ec681f3Smrg 1577ec681f3Smrgapt-get purge -y \ 1587ec681f3Smrg $STABLE_EPHEMERAL 1597ec681f3Smrg 1607ec681f3Smrgapt-get autoremove -y --purge 161