README.md
1# Native Windows GitLab CI builds
2
3Unlike Linux, Windows cannot reuse the freedesktop ci-templates as they exist
4as we do not have Podman, Skopeo, or even Docker-in-Docker builds available
5under Windows.
6
7We still reuse the same model: build a base container with the core operating
8system and infrequently-changed build dependencies, then execute Mesa builds
9only inside that base container. This is open-coded in PowerShell scripts.
10
11## Base container build
12
13The base container build job executes the `mesa_container.ps1` script which
14reproduces the ci-templates behaviour. It looks for the registry image in
15the user's namespace, and exits if found. If not found, it tries to copy
16the same image tag from the upstream Mesa repository. If that is not found,
17the image is rebuilt inside the user's namespace.
18
19The rebuild executes `docker build` which calls `mesa_deps.ps1` inside the
20container to fetch and install all build dependencies. This includes Visual
21Studio Community Edition (downloaded from Microsoft, under the license which
22allows use by open-source projects), other build tools from Chocolatey, and
23finally Meson and Python dependencies from PyPI.
24
25This job is executed inside a Windows shell environment directly inside the
26host, without Docker.
27
28## Mesa build
29
30The Mesa build runs inside the base container, executing `mesa_build.ps1`.
31This simply compiles Mesa using Meson and Ninja, executing the build and
32unit tests. Currently, no build artifacts are captured.
33