77 lines
3.8 KiB
Markdown
77 lines
3.8 KiB
Markdown
# Windows build environment, 2026-10-28
|
|
|
|
## Scope
|
|
|
|
The operator explicitly authorized installing the Windows build environment.
|
|
MSYS2 was installed at `C:\msys64` through the `MSYS2.MSYS2` winget package
|
|
(installer version 20260927). The MSYS2 base was updated, including restarting
|
|
the shell after the core runtime update. No controller interaction or packaged
|
|
desktop acceptance was performed as part of this setup.
|
|
|
|
The source was fetched with `scripts/prepare_rayforge_build.ps1` and verified
|
|
against Rayforge commit `c28918c87f8273dd1d244f5a057addc192807fa5`.
|
|
The pinned upstream `scripts/win/win_setup.sh` was reviewed and explicitly run
|
|
in a UCRT64 shell. Repository scripts still do not install a toolchain
|
|
implicitly.
|
|
|
|
## Installed runtime
|
|
|
|
- Python 3.14.9
|
|
- GTK 4.24.1 and Libadwaita 1.10.0
|
|
- GCC 16.2.0 and Rust 1.99.1
|
|
- PyInstaller 6.22.3 and NSIS 3.13
|
|
- Raygeo 1.66.0 and Raydriver 0.3.0, compiled locally
|
|
- Cairo 1.18.4-4, selected by the pinned upstream setup script
|
|
|
|
The setup installs the upstream system-package set and its Python dependencies.
|
|
Run shell-based setup and build commands with `MSYSTEM=UCRT64` and
|
|
`CHERE_INVOKING=1`; run them from the repository root to preserve the working
|
|
directory. Source and outputs remain in the ignored `.build` cache.
|
|
|
|
## Observations and validation
|
|
|
|
- The 152 repository unit tests and public-repository guard passed before
|
|
installation using a writable temporary directory.
|
|
- The consolidated `run_m1_no_device_acceptance.py` report passed using the
|
|
newly installed UCRT64 Python and the pinned Rayforge checkout.
|
|
- Direct imports succeeded for GTK4, Libadwaita, Raygeo, Raydriver, Vtracer,
|
|
Zeroconf, OpenCV, NumPy, SciPy, PyMuPDF and PyVips. This is an import check,
|
|
not a successful desktop interaction test.
|
|
- `pip check` exited with status 1, reporting that the Raygeo and Raydriver
|
|
distributions are not supported on this platform. Both locally compiled
|
|
modules imported successfully; the metadata/platform warning remains
|
|
unresolved and must not be represented as a clean dependency check.
|
|
- VIPS warned that its HEIF and ImageMagick modules could not load. Coverage
|
|
of these image formats has not been established.
|
|
- PyInstaller warned about missing `scipy.special._cdflib`; successful bundle
|
|
creation alone does not establish coverage of that module.
|
|
|
|
The first package download hit a connection reset and succeeded on retry.
|
|
The first Python wheel-build batch ran out of disk space while building
|
|
Zeroconf. Temporary build cleanup allowed the automatic retry to complete.
|
|
The new installation's downloaded pacman package cache was subsequently
|
|
removed; installed packages were retained. Allow substantial temporary disk
|
|
headroom beyond the roughly 5 GiB system-package installed-size estimate.
|
|
|
|
## Produced checkpoint
|
|
|
|
`scripts/build_rayforge_windows_checkpoint.ps1` completed successfully using
|
|
the pinned source and staged no-device addon. Outputs under `.build/artifacts/`:
|
|
|
|
- `rayforge-vpirateray-c28918c87f82.zip`: 354,161,221 bytes,
|
|
SHA-256 `8640244f54aebe5d043f33db2949842fa9cb5e14e74dd75ec91af4f6873f274c`
|
|
- `rayforge-vpirateray-c28918c87f82-installer.exe`: 258,711,163 bytes,
|
|
SHA-256 `a74620b3869803c755a9ffc20c35772e57ea2fef62bcf323ac971ae4a2aa8d5a`
|
|
- `Rayforge-LICENSE.txt` and `rayforge-windows-checkpoint.json`
|
|
|
|
The non-executing checkpoint verifier passed, including the exact 12-file
|
|
addon set, ZIP path checks, license notices and artifact hashes. Its local
|
|
report is `rayforge-windows-verification.json`. Binaries and local reports
|
|
remain outside version control. No packaged application was launched.
|
|
|
|
## Next gate
|
|
|
|
Prepare the checksummed acceptance kit from the passing verification report
|
|
and checkpoint manifest, then complete the isolated no-device desktop checklist described
|
|
in `m1-no-device-acceptance.md`. Neither setup nor automated acceptance closes
|
|
the manual packaged-app gate or authorizes hardware access.
|