Skip to content

fix(ci): pin vendored OpenSSL to Strawberry Perl on the Windows test lane#6171

Merged
houko merged 3 commits into
mainfrom
fix-windows-openssl-perl
Jun 17, 2026
Merged

fix(ci): pin vendored OpenSSL to Strawberry Perl on the Windows test lane#6171
houko merged 3 commits into
mainfrom
fix-windows-openssl-perl

Conversation

@houko

@houko houko commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Problem

main CI is red: both Test / Windows shards fail with exit code 101 (run 27696315168). The build aborts compiling vendored openssl-sys:

warning: [email protected]: configuring OpenSSL build: 'perl' reported failure with exit code: 2
error: failed to run custom build command for `openssl-sys v0.9.117`
  BEGIN failed--compilation aborted at /usr/share/perl5/core_perl/Params/Check.pm line 6.
  Compilation failed in require at /usr/share/perl5/core_perl/IPC/Cmd.pm line 59.

Root cause

#6163 added a Windows-gated vendored openssl-sys (so webauthn-rs links) on the assumption that "both Windows runner images already ship the Perl the build requires". That holds only outside Git Bash.

The Test / Windows job runs cargo nextest under shell: bash, which prepends the MSYS toolchain to PATH. openssl-src shells out to whichever perl is first on PATH, so it picks Git Bash's /usr/share/perl5/core_perl instead of the runner's Strawberry Perl. That Perl cannot configure OpenSSL's VC-WIN64A target — its IPC::Cmd / Params::Check modules fail to compile and ./Configure aborts.

#6163's own CI never caught this: the Windows test lane is push / merge_group only (ci.yml:888) and does not run on PRs, so the break surfaced only after merge to main.

Fix

Set OPENSSL_SRC_PERL on the test step to the runner's Windows-native Strawberry Perl. This is openssl-src's documented Perl override (precedence: OPENSSL_SRC_PERL > PERL > bare perl), added precisely for this case in openssl-src-rs#45.

env:
  OPENSSL_SRC_PERL: C:/Strawberry/perl/bin/perl.exe
  • NASM is not the blocker. openssl-src runs where nasm and adds no-asm when it is missing; the failing ./Configure args carried no no-asm, so nasm was already detected on the runner.
  • Release Windows jobs need no change. Their cargo build step (release.yml, release-cli.yml) runs under the default pwsh, where the system PATH resolves perl to Strawberry directly; the bash steps there are packaging/upload only and compile nothing. release-desktop.yml builds via tauri-action, also not under bash.

Verification

  • python3 -c "import yaml; yaml.safe_load(open('.github/workflows/ci.yml'))" — valid YAML.
  • Strawberry Perl path confirmed against GitHub's windows-latest image (C:\strawberry\perl\bin\perl.exe; Windows paths are case-insensitive).
  • Final confirmation is the Test / Windows lane on this branch's CI run — it is push-triggered, so it exercises the changed step directly.

Refs #6161.

…lane

#6163 added a Windows-gated vendored `openssl-sys` so `webauthn-rs` links, on the assumption the runner's bundled Perl would build it. That assumption only holds outside Git Bash.

The `Test / Windows` job runs `cargo nextest` under `shell: bash`, which prepends the MSYS toolchain to `PATH`, so `openssl-src` resolves `perl` to Git Bash's `/usr/share/perl5/core_perl` instead of Strawberry Perl. That Perl cannot configure OpenSSL's `VC-WIN64A` build — its `IPC::Cmd` / `Params::Check` modules fail to compile and `./Configure` aborts, failing both shards with exit code 101.

#6163's own CI never caught this because the Windows test lane is main-push-only and does not run on PRs, so the break only surfaced after merge to `main`.

Set `OPENSSL_SRC_PERL` (openssl-src's documented Perl override, ahead of `PERL` and the bare `perl` fallback) to the runner's Windows-native `C:/Strawberry/perl/bin/perl.exe` on the test step. NASM is unaffected — the failing Configure args carried no `no-asm`, so the runner's `nasm` was already detected.

The release Windows jobs need no change: their `cargo build` step runs under the default `pwsh`, where the system `PATH` resolves `perl` to Strawberry directly.

Refs #6161.
@github-actions github-actions Bot added area/docs Documentation and guides area/ci CI/CD and build tooling size/S 10-49 lines changed labels Jun 17, 2026
@houko
houko enabled auto-merge (squash) June 17, 2026 15:04
@houko
houko merged commit 988a268 into main Jun 17, 2026
31 checks passed
@houko
houko deleted the fix-windows-openssl-perl branch June 17, 2026 15:28
houko added a commit that referenced this pull request Jun 23, 2026
…top (#6285)

CHANGELOG.md had two `## [Unreleased]` sections: one buried between released version sections (it predates #6281, which then added a duplicate at the top). The release tooling reads only the first [Unreleased] and silently drops the rest, so ~150 stranded entries were never reaching release notes; the duplicate header also tripped the `## [Unreleased]` guard, blocking every CHANGELOG-touching commit (e.g. #5988).

Consolidate both blocks into a single [Unreleased] at the top, merging same-named `###` subsections (collapsed 10 redundant subsection headers). Every bullet is preserved verbatim — verified that the multiset of non-header content lines is byte-identical before/after. Drop the two entries already published in released sections: #6272 (in [2026.6.22]) and #6171 (in [2026.6.17]).

Co-authored-by: Evan <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/ci CI/CD and build tooling area/docs Documentation and guides size/S 10-49 lines changed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants