17ec681f3Smrg# Native Windows GitLab CI builds 27ec681f3Smrg 37ec681f3SmrgUnlike Linux, Windows cannot reuse the freedesktop ci-templates as they exist 47ec681f3Smrgas we do not have Podman, Skopeo, or even Docker-in-Docker builds available 57ec681f3Smrgunder Windows. 67ec681f3Smrg 77ec681f3SmrgWe still reuse the same model: build a base container with the core operating 87ec681f3Smrgsystem and infrequently-changed build dependencies, then execute Mesa builds 97ec681f3Smrgonly inside that base container. This is open-coded in PowerShell scripts. 107ec681f3Smrg 117ec681f3Smrg## Base container build 127ec681f3Smrg 137ec681f3SmrgThe base container build job executes the `mesa_container.ps1` script which 147ec681f3Smrgreproduces the ci-templates behaviour. It looks for the registry image in 157ec681f3Smrgthe user's namespace, and exits if found. If not found, it tries to copy 167ec681f3Smrgthe same image tag from the upstream Mesa repository. If that is not found, 177ec681f3Smrgthe image is rebuilt inside the user's namespace. 187ec681f3Smrg 197ec681f3SmrgThe rebuild executes `docker build` which calls `mesa_deps.ps1` inside the 207ec681f3Smrgcontainer to fetch and install all build dependencies. This includes Visual 217ec681f3SmrgStudio Community Edition (downloaded from Microsoft, under the license which 227ec681f3Smrgallows use by open-source projects), other build tools from Chocolatey, and 237ec681f3Smrgfinally Meson and Python dependencies from PyPI. 247ec681f3Smrg 257ec681f3SmrgThis job is executed inside a Windows shell environment directly inside the 267ec681f3Smrghost, without Docker. 277ec681f3Smrg 287ec681f3Smrg## Mesa build 297ec681f3Smrg 307ec681f3SmrgThe Mesa build runs inside the base container, executing `mesa_build.ps1`. 317ec681f3SmrgThis simply compiles Mesa using Meson and Ninja, executing the build and 327ec681f3Smrgunit tests. Currently, no build artifacts are captured. 33