fix(setup): prepare native Windows ARM64 build dependencies

Source activation could not build cryptography because the setup shell
could not discover the installed OpenSSL development libraries.

Configure Visual Studio ARM64, Clang, Rust, and static OpenSSL before PM
runs. Reuse installed tools and install missing prerequisites. Select a
classic vcpkg with a ports tree and use an explicit installation root.
Report damaged shared libraries without deleting the shared installation.

Verified native PowerShell activation and deactivation on Promise, then
warm activation with no new dependency generation. Cryptography imported
with static OpenSSL. Real vcpkg checks covered installation into a path
with spaces, warm reuse, manifest mode, and damaged-package rejection.
The canonical Windows runner passed the helper and output-encoding tests.

Fresh Visual Studio and Rust installation were not exercised because
Promise already had those toolchains installed.
This commit is contained in:
ethernet
2026-09-11 13:29:45 -04:00
parent caf27c01b9
commit fffccbb2ae
4 changed files with 259 additions and 4 deletions

View File

@@ -130,10 +130,17 @@ interpreter or redirect an installed desktop app to this checkout.
### Prepare a checkout
Use an ordinary terminal outside the packaged Hermes app. Leave any existing
Python virtual environment first. On Windows, use native PowerShell with Git
and the target architecture's C++ build tools available. Dependencies without
wheels can also require Rust/Cargo and native libraries. PM does not install
those compiler toolchains. POSIX source builds have native build requirements too.
Python virtual environment first. On Windows, use native PowerShell with Git.
For ARM64, setup checks Visual Studio C++ tools, Clang, native Rust, and static
OpenSSL development libraries before PM runs. It reuses existing installations
and installs missing prerequisites. Missing Visual Studio components require
an Administrator PowerShell. OpenSSL uses vcpkg's `arm64-windows-static-md`
triplet. A damaged shared installation produces a repair error, not automatic
deletion. Compiler and OpenSSL environment variables apply only to the setup
process when you enter through `activate.ps1`.
Other platforms still require the native compiler tools and libraries needed
by dependencies without compatible wheels.
Clone the repository and select your branch before preparing dependencies: