@@ -297,7 +297,13 @@ jobs:
297297 # claim: a package build has no reason to build a test suite, and
298298 # doing so made the whole leg depend on whether upstream's tests
299299 # happen to be portable this release.
300- ninja -j"$(nproc)" qemu-system-x86_64
300+ # ⚠️ `.exe`, AND OMITTING IT IS NOT A WARNING BUT A HARD STOP:
301+ #
302+ # ninja: error: unknown target 'qemu-system-x86_64'
303+ #
304+ # The Unix legs name the target without a suffix and this one with,
305+ # because meson names the target after the file it produces.
306+ ninja -j"$(nproc)" qemu-system-x86_64.exe
301307 meson install --no-rebuild
302308
303309 # ── The check that the artifact is an emulator, not a file ────────────
@@ -419,6 +425,23 @@ jobs:
419425 echo "(the DLL closure is measured in the packaging step, not here)" ;;
420426 esac
421427
428+ # ⭐ WHAT IS ACTUALLY BIG, BECAUSE STRIPPING ANSWERED LESS THAN
429+ # EXPECTED. Measured on linux-x64: the emulator went 78.7 MB → 27.0
430+ # MB, and the whole prefix went 392 MB → 343 MB. So roughly 316 MB is
431+ # not the emulator at all, and a payload that tarred this prefix would
432+ # ship it. The index's asset budget is a per-connection upload rate
433+ # measured at 0.012 MB/s into the CN mirror, with no multipart and no
434+ # resume — so what a payload SELECTS matters more here than what it
435+ # strips.
436+ #
437+ # Listed rather than pruned: which of these an emulator actually needs
438+ # at run time is a question for the descriptor, and answering it by
439+ # deleting directories until something breaks is how a payload ends up
440+ # missing a firmware blob on somebody else's machine.
441+ echo "── the ten largest things under the prefix ──"
442+ du -sh out/* 2>/dev/null | sort -rh | head -10
443+ du -sh out/share/* 2>/dev/null | sort -rh | head -10
444+
422445 - uses : actions/upload-artifact@v4
423446 with :
424447 name : qemu-system-x86_64-${{ matrix.label }}
0 commit comments