diff --git a/.github/workflows/release-auto.yml b/.github/workflows/release-auto.yml index 76a8f9f7..797f92db 100644 --- a/.github/workflows/release-auto.yml +++ b/.github/workflows/release-auto.yml @@ -198,18 +198,20 @@ jobs: linux_cross: false macos_cross: false - # NOTE: aarch64-pc-windows-msvc deliberately not in the - # matrix today. cargo-xwin + ring 0.17.x has a known - # incompatibility on linux-cross-to-arm64-windows: cc-rs - # selects plain `clang` (not `clang-cl`) for the aarch64 - # MSVC target despite identical `CC_=clang-cl` env - # vars working for the x86_64 lane. Ring's `curve25519.c` - # compile then fails at clang receiving `/imsvc ` - # (clang-cl-style include flags) and rejecting them. Adding - # this back blocks on either: ring 0.18+ with arm-msvc - # cross-fix; a cc-rs version bump that respects target env - # for arm64; or fbuild switching off `rustls-tls` (drops - # ring). Tracked in soldr#1006 Lane 2. + # aarch64-pc-windows-msvc re-enabled via soldr#1012 PR 6. + # The ring 0.17.x oversight (build.rs:563 hardcodes + # `c.compiler("clang")` for aarch64-windows-msvc, overriding + # whatever `CC_aarch64_pc_windows_msvc=clang-cl` says) is now + # sidestepped by soldr-clang-shim (soldr#1015) which routes + # plain `clang` to clang-cl when --target=*-pc-windows-msvc. + # `soldr build` (soldr#1013 / soldr#1016) installs the shim + # on PATH for any MSVC target, so ring's compile lands on + # clang-cl regardless of ring's hardcoded override. + - target: aarch64-pc-windows-msvc + runner: ubuntu-latest + binary_ext: ".exe" + linux_cross: false + macos_cross: false uses: ./.github/workflows/template_native_build.yml with: diff --git a/.github/workflows/template_native_build.yml b/.github/workflows/template_native_build.yml index dcbc9c5a..affb0f0d 100644 --- a/.github/workflows/template_native_build.yml +++ b/.github/workflows/template_native_build.yml @@ -72,17 +72,15 @@ jobs: - name: Setup soldr id: setup-soldr - # v0.9.62 defaults to soldr 0.7.51 — predates the `soldr prepare` - # builtin (added 0.7.54). v0.9.63 ships with 0.7.59 as the default - # which is what the mac-cross-from-linux lane needs to fetch the - # Apple SDK. Bump in one place so the whole template benefits. + # Bumped from 0.7.59 → 0.7.63 to pull soldr#1012 PRs 1+4+5+6: + # `soldr build` blessed verb, soldr-clang-shim binary, and + # Commands::Build blessed-cross-compile prep. Required for + # the aarch64-pc-windows-msvc lane re-added in this PR to + # sidestep the ring 0.17.x build.rs:563 oversight via the + # clang shim. uses: zackees/setup-soldr@v0.9.63 with: - # Pin the soldr version explicitly so a future bump of the - # action's default doesn't silently change build behavior in - # this template. 0.7.59 is the latest PyPI/npm/GH-Releases - # release at time of authoring (next release will be 0.7.60). - version: "0.7.59" + version: "0.7.63" cache: true build-cache: true target-cache: true @@ -200,7 +198,16 @@ jobs: -p fbuild-cli \ -p fbuild-daemon elif [ "${{ runner.os }}" = "Linux" ] && [[ "${{ inputs.target }}" == *-pc-windows-msvc ]]; then - cargo xwin build --release --target ${{ inputs.target }} \ + # Blessed Linux→Windows MSVC path (soldr#1012 PR 6). + # `soldr build` installs the soldr-clang-shim ahead of + # system clang on PATH so ring's hardcoded + # `c.compiler("clang")` (build.rs:563) routes to clang-cl + # for aarch64-windows-msvc. For x64 the shim is harmless + # passthrough. cargo-xwin is still installed (handles + # SDK download); soldr build delegates to cargo-xwin via + # internal env vars when the catalogue xwin-cache row is + # absent for the target arch. + soldr build --release --target ${{ inputs.target }} \ -p fbuild-cli \ -p fbuild-daemon elif [[ "${{ inputs.target }}" == *-unknown-linux-musl ]]; then