From ac527542c6455f195bf521f1ea1cea9b2c549994 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Halber?= Date: Mon, 4 May 2026 12:09:45 -0700 Subject: [PATCH 1/3] chore: x-compile aarch64 bt.exe on windows amd64 azure artifact signing doesn't support running on aarch64, need to check if cross compilation is possible --- .github/workflows/release-canary.yml | 6 ++++++ .github/workflows/release.yml | 6 ++++++ dist-workspace.toml | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release-canary.yml b/.github/workflows/release-canary.yml index 4a414b9..35b42fc 100644 --- a/.github/workflows/release-canary.yml +++ b/.github/workflows/release-canary.yml @@ -160,6 +160,12 @@ jobs: - name: Install dependencies run: ${{ matrix.packages_install }} + - name: Set up MSVC cross-compilation for Windows ARM64 + if: ${{ contains(matrix.targets, 'aarch64-pc-windows-msvc') }} + uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0 + with: + arch: amd64_arm64 + - name: Build artifacts shell: bash run: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 199bf57..bb530b7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -146,6 +146,12 @@ jobs: - name: Install dependencies run: ${{ matrix.packages_install }} + - name: Set up MSVC cross-compilation for Windows ARM64 + if: ${{ contains(matrix.targets, 'aarch64-pc-windows-msvc') }} + uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0 + with: + arch: amd64_arm64 + - name: Configure SSL.com signing env if: ${{ runner.os == 'Windows' && env.HAS_SSLDOTCOM_SIGNING == 'true' && !fromJson(needs.plan.outputs.val).announcement_is_prerelease }} shell: bash diff --git a/dist-workspace.toml b/dist-workspace.toml index 8179675..a5763a8 100644 --- a/dist-workspace.toml +++ b/dist-workspace.toml @@ -29,4 +29,4 @@ windows-archive = ".zip" install-success-msg = "" [dist.github-custom-runners] -aarch64-pc-windows-msvc = "windows-11-arm" +aarch64-pc-windows-msvc = "windows-2022" From ea69f42f71cde034b511437b9700343b0b5b8ddd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Halber?= Date: Mon, 4 May 2026 13:29:20 -0700 Subject: [PATCH 2/3] fix: git shadows link.exe on aarch64 xcompiled on amd64 --- .github/workflows/release-canary.yml | 7 +++++++ .github/workflows/release.yml | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/.github/workflows/release-canary.yml b/.github/workflows/release-canary.yml index 35b42fc..cd64da0 100644 --- a/.github/workflows/release-canary.yml +++ b/.github/workflows/release-canary.yml @@ -166,6 +166,13 @@ jobs: with: arch: amd64_arm64 + - name: Remove Git usr/bin from PATH (prevents Git link.exe shadowing MSVC link.exe) + if: ${{ contains(matrix.targets, 'aarch64-pc-windows-msvc') }} + shell: pwsh + run: | + $clean = $env:PATH -split ';' | Where-Object { $_ -ine 'C:\Program Files\Git\usr\bin' } + "PATH=$($clean -join ';')" >> $env:GITHUB_ENV + - name: Build artifacts shell: bash run: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bb530b7..724c3eb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -152,6 +152,13 @@ jobs: with: arch: amd64_arm64 + - name: Remove Git usr/bin from PATH (prevents Git link.exe shadowing MSVC link.exe) + if: ${{ contains(matrix.targets, 'aarch64-pc-windows-msvc') }} + shell: pwsh + run: | + $clean = $env:PATH -split ';' | Where-Object { $_ -ine 'C:\Program Files\Git\usr\bin' } + "PATH=$($clean -join ';')" >> $env:GITHUB_ENV + - name: Configure SSL.com signing env if: ${{ runner.os == 'Windows' && env.HAS_SSLDOTCOM_SIGNING == 'true' && !fromJson(needs.plan.outputs.val).announcement_is_prerelease }} shell: bash From 8a765bc0d8dc1466e098c8ade7b8af202a53d159 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Halber?= Date: Mon, 4 May 2026 13:41:26 -0700 Subject: [PATCH 3/3] fix: set correct link.exe path --- .github/workflows/release-canary.yml | 6 +++--- .github/workflows/release.yml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release-canary.yml b/.github/workflows/release-canary.yml index cd64da0..51e0d09 100644 --- a/.github/workflows/release-canary.yml +++ b/.github/workflows/release-canary.yml @@ -166,12 +166,12 @@ jobs: with: arch: amd64_arm64 - - name: Remove Git usr/bin from PATH (prevents Git link.exe shadowing MSVC link.exe) + - name: Set MSVC ARM64 linker for cargo cross-compilation if: ${{ contains(matrix.targets, 'aarch64-pc-windows-msvc') }} shell: pwsh run: | - $clean = $env:PATH -split ';' | Where-Object { $_ -ine 'C:\Program Files\Git\usr\bin' } - "PATH=$($clean -join ';')" >> $env:GITHUB_ENV + $link = (Get-Command link.exe -ErrorAction Stop).Source + "CARGO_TARGET_AARCH64_PC_WINDOWS_MSVC_LINKER=$link" >> $env:GITHUB_ENV - name: Build artifacts shell: bash diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 724c3eb..ee43fe1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -152,12 +152,12 @@ jobs: with: arch: amd64_arm64 - - name: Remove Git usr/bin from PATH (prevents Git link.exe shadowing MSVC link.exe) + - name: Set MSVC ARM64 linker for cargo cross-compilation if: ${{ contains(matrix.targets, 'aarch64-pc-windows-msvc') }} shell: pwsh run: | - $clean = $env:PATH -split ';' | Where-Object { $_ -ine 'C:\Program Files\Git\usr\bin' } - "PATH=$($clean -join ';')" >> $env:GITHUB_ENV + $link = (Get-Command link.exe -ErrorAction Stop).Source + "CARGO_TARGET_AARCH64_PC_WINDOWS_MSVC_LINKER=$link" >> $env:GITHUB_ENV - name: Configure SSL.com signing env if: ${{ runner.os == 'Windows' && env.HAS_SSLDOTCOM_SIGNING == 'true' && !fromJson(needs.plan.outputs.val).announcement_is_prerelease }}