@@ -84,16 +84,21 @@ jobs:
8484 if : runner.os == 'macOS'
8585 run : |
8686 brew install ninja meson pkg-config glib pixman
87- # ⚠️ `distlib`, AND IT IS NOT AN OPTIONAL EXTRA. QEMU's `configure`
88- # builds a non-isolated virtual environment with its own `mkvenv`
89- # script, which needs `distlib` to populate it. Homebrew's Python 3.14
90- # does not carry it, and the failure is a configure-time
87+ # ⚠️ `distlib`, AND IT IS A PROPERTY OF QEMU 9.2.4 RATHER THAN OF THIS
88+ # RUNNER — MEASURED ON TWO HOSTS BEFORE IT WAS CALLED THAT.
89+ #
90+ # QEMU's `configure` builds a non-isolated virtual environment with its
91+ # own `mkvenv` script, which needs `distlib` to populate it. Neither
92+ # Homebrew's Python 3.14 nor MSYS2's carries it, and the failure is a
93+ # configure-time
9194 #
9295 # *** Ouch! ***
9396 # found no usable distlib, please install it
9497 #
9598 # twenty seconds in, which reads like a QEMU problem and is a Python
96- # packaging one.
99+ # packaging one. The first round fixed it on macOS alone, on the
100+ # reading that Homebrew was unusual; the Windows leg then reached the
101+ # same line and showed it was not.
97102 #
98103 # `--break-system-packages` because Homebrew's Python is
99104 # externally-managed (PEP 668) and refuses otherwise. On a throwaway
@@ -157,6 +162,19 @@ jobs:
157162 # `roms/` stays excluded regardless: it holds firmware SOURCE for machines
158163 # this build does not produce, and `x86_64-softmmu` takes its firmware
159164 # from the prebuilt blobs in `pc-bios/`.
165+ # The same `distlib` gap as macOS, on MSYS2's Python. Preferring the
166+ # packaged form and falling back to pip: pacman's copy is what an MSYS2
167+ # user would have, and pip is what makes the step work if that package is
168+ # ever renamed.
169+ - name : distlib (Windows / MSYS2)
170+ if : runner.os == 'Windows'
171+ shell : msys2 {0}
172+ run : |
173+ pacman -S --noconfirm --needed mingw-w64-ucrt-x86_64-python-distlib \
174+ || python3 -m pip install --break-system-packages distlib \
175+ || python3 -m pip install distlib
176+ python3 -c "import distlib; print('distlib', distlib.__version__)"
177+
160178 - name : Fetch QEMU ${{ env.QEMU_VERSION }} (Windows)
161179 if : runner.os == 'Windows'
162180 shell : msys2 {0}
0 commit comments