Skip to content

Merge v4-beta into v4 (2026-06-03)#178

Open
xnacly wants to merge 2 commits into
v4from
merge-2026-06-03
Open

Merge v4-beta into v4 (2026-06-03)#178
xnacly wants to merge 2 commits into
v4from
merge-2026-06-03

Conversation

@xnacly
Copy link
Copy Markdown
Member

@xnacly xnacly commented Jun 3, 2026

Fast-forward merge of v4-beta into v4. Includes PR #177 (Setup MSVC Dev Cmd step on Windows runners in node-matrix workflows).

Automated branch created by 0-merge-beta.yaml; the PR step in that workflow failed with "Resource not accessible by integration" so opening manually.

Greptile Summary

This PR fast-forwards v4-beta into v4, bringing in PR #177 which adds a "Setup MSVC Dev Cmd" step to both node-matrix.yaml and node-matrix-pnpm.yaml. The step activates the MSVC developer environment on Windows runners so that subsequent native C/C++ compilation steps (e.g. pip wheel against a setuptools sdist) can locate cl.exe and the SDK headers.

  • Adds an identical Setup MSVC Dev Cmd step to both node-matrix workflow files, guarded by if: runner.os == 'Windows', using the repo-internal setup-msvc-dev-cmd action (which in turn pins ilammy/msvc-dev-cmd to a specific commit hash).
  • The arch input is derived from matrix.arch: arm64 maps to arm64 and everything else falls back to amd64, which correctly covers the amd64/arm64 values used in the default matrix definition.
  • The step is inserted before ccache configuration and Node.js environment setup, ensuring the MSVC toolchain is available for all native build steps that follow.

Confidence Score: 5/5

The change is a focused, additive Windows-only step with a clear conditional guard, no impact on non-Windows runners, and no modifications to existing logic.

Both workflows receive identical, well-scoped additions. The underlying action pins ilammy/msvc-dev-cmd to a specific commit hash, the arch mapping covers all matrix values actually in use (amd64 and arm64), and placement before ccache/node preparation is correct. No existing steps are modified.

No files require special attention.

Important Files Changed

Filename Overview
.github/workflows/node-matrix.yaml Adds a "Setup MSVC Dev Cmd" step (Windows-only) before ccache/node preparation; arch mapping correctly handles the amd64/arm64 values defined in the default matrix.
.github/workflows/node-matrix-pnpm.yaml Mirrors the identical MSVC Dev Cmd step addition from node-matrix.yaml; inserted at the correct position (after macOS pipx install, before ccache).

Sequence Diagram

sequenceDiagram
    participant Runner as Windows Runner
    participant MSVC as setup-msvc-dev-cmd@v4
    participant ilammy as ilammy/msvc-dev-cmd (pinned)
    participant ccache as Configure ccache
    participant node as Node / pnpm prepare
    participant build as Native C/C++ build steps

    Runner->>MSVC: "if runner.os == 'Windows'"
    MSVC->>ilammy: "arch = (matrix.arch == 'arm64' ? 'arm64' : 'amd64')"
    ilammy-->>Runner: vcvarsall.bat sourced (cl.exe, SDK headers on PATH)
    Runner->>ccache: Configure ccache (if enabled)
    Runner->>node: Prepare Node environment
    Runner->>build: pip wheel / native extensions (cl.exe available)
Loading

Reviews (1): Last reviewed commit: "Merge pull request #177 from milaborator..." | Re-trigger Greptile

xnacly added 2 commits June 3, 2026 15:19
Add a `Setup MSVC Dev Cmd` step (a thin wrapper around
`ilammy/msvc-dev-cmd` via the shared `setup-msvc-dev-cmd` action)
to the prebuild job's step list on both reusable workflows:

  - node-matrix.yaml
  - node-matrix-pnpm.yaml

Gated by `if: runner.os == 'Windows'`, so it is a no-op on Linux
and macOS runners.

Background: the runenv-python-3 repo's freesasa addition (PR #88)
exposed that the prebuild matrix on Windows ships VS 2022 Build
Tools but never activates them in the job shell. setuptools'
distutils therefore fails to find `cl.exe` when `pip wheel`
compiles a C extension from sdist, even though the headers and
linker libs are on disk. Running the vcvars activation here means
every downstream consumer of these reusable workflows gets a
ready-to-build Windows env without having to roll their own
activation (the runenv-python-3 PR initially did this in the
builder; that code is now reverted in favour of this).

The action also exports `DISTUTILS_USE_SDK=1`, which tells
setuptools' MSVC compiler shim to skip its own VS lookup and
trust the env vars already in scope (`INCLUDE` / `LIB` /
`LIBPATH` / `PATH`).

`arch` is mapped from the matrix's `amd64` / `arm64` values to
vcvarsall's expected `amd64` / `arm64` args.

Pattern mirrors the existing usage in milaboratory/pframes-rs
(`.github/actions/setup-agent/action.yml`).
…node-matrix

MILAB-6205: activate vcvars on Windows runners in node-matrix workflows
xnacly added a commit to platforma-open/runenv-python-3 that referenced this pull request Jun 3, 2026
milaboratory/github-ci#177 added a `Setup MSVC Dev Cmd` step to the
node-matrix reusable workflows and was merged to v4-beta. The
v4-beta -> v4 promotion (milaboratory/github-ci#178) is still open,
so a build referencing `@v4` still hits the old workflow without
MSVC activation.

Per the team's convention (branch from v4-beta, experiment in
v4-beta, validate downstream against v4-beta, then merge v4-beta
to v4 and revert downstream pin), switch the reusable workflow
reference to `@v4-beta` for the duration of this PR. Will be
reverted to `@v4` once #178 merges.

`context/init@v4` reference is left untouched, the action is
unchanged on v4 (only the reusable workflow YAML was modified).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants