From aa29a6a7e8f48b8f7d1b427c92ee6d0e7dc9d55d Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Sun, 17 May 2026 09:17:33 +0900 Subject: [PATCH 1/5] Revert GH-17002 - Skip Windows 11 ARM CI for now commit:ba43e07c12093273e46630c55e93c7491dbbd372. - Unlock uutils-coreutils version commit:ded07a7d929dea4457e1c5c1466f34e7f5a8cd46. --- .github/workflows/windows.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index b00f6d0452c242..d2c8feac988e7c 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -33,10 +33,9 @@ jobs: test_task: check - os: 2025-vs2026 test_task: test-bundled-gems - # TODO: Debug why Windows 11 ARM is failing to build on CI - # - os: 11-arm - # test_task: 'btest test-basic test-tool' # check and test-spec are broken yet. - # target: arm64 + - os: 11-arm + test_task: 'btest test-basic test-tool' # check and test-spec are broken yet. + target: arm64 fail-fast: false runs-on: windows-${{ matrix.os }} @@ -84,7 +83,8 @@ jobs: Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser iwr -useb get.scoop.sh | iex Join-Path (Resolve-Path ~).Path "scoop\shims" >> $Env:GITHUB_PATH - scoop install vcpkg uutils-coreutils + scoop install vcpkg + scoop install uutils-coreutils@0.5.0 shell: pwsh - name: Restore vcpkg artifact From da1bc2829194f6d326654f2bf620f6ec9db5e493 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Sun, 17 May 2026 03:39:43 +0900 Subject: [PATCH 2/5] windows: Extract new env lines by pwsh Stop using uutils-coreutils that fails to install on the arm64-windows runner. --- .github/workflows/windows.yml | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index d2c8feac988e7c..0d31e36588cbf6 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -84,7 +84,6 @@ jobs: iwr -useb get.scoop.sh | iex Join-Path (Resolve-Path ~).Path "scoop\shims" >> $Env:GITHUB_PATH scoop install vcpkg - scoop install uutils-coreutils@0.5.0 shell: pwsh - name: Restore vcpkg artifact @@ -112,11 +111,7 @@ jobs: # %TEMP% is inconsistent with %TMP% and test-all expects they are consistent. # https://github.com/actions/virtual-environments/issues/712#issuecomment-613004302 run: | - ::- Using sort.exe located in the same directory as comm.exe - ::- should probably work just fine. - for %%I in (comm.exe) do set "sort=%%~dp$PATH:I\sort.exe" - - set | "%sort%" > old.env + set > old.env call ..\src\win32\vssetup.cmd ^ -arch=${{ matrix.target || 'amd64' }} ^ ${{ matrix.vcvars && '-vcvars_ver=' || '' }}${{ matrix.vcvars }} @@ -126,9 +121,17 @@ jobs: set MAKEFLAGS=l set /a TEST_JOBS=(15 * %NUMBER_OF_PROCESSORS% / 10) > nul set RUBY_OPT_DIR=%GITHUB_WORKSPACE:\=/%/src/vcpkg_installed/%VCPKG_DEFAULT_TRIPLET% - set | "%sort%" > new.env - comm -13 old.env new.env >> %GITHUB_ENV% + set > new.env + + - name: update env + shell: pwsh + run: | + $old = (Get-Content old.env); $new = (Get-Content new.env) del *.env + Compare-Object $old $new | + Where-Object { $_.SideIndicator -eq '=>' } | + Select-Object -ExpandProperty InputObject | + Add-Content -Path $env:GITHUB_ENV - name: baseruby version run: ruby -v From a4a311d1bcb8d219928035dc24f5e2cf83ebc973 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Sun, 17 May 2026 04:58:41 +0900 Subject: [PATCH 3/5] windows: Skip installing vcpkg if manifest mode is already available --- .github/workflows/windows.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 0d31e36588cbf6..4a2f1509910e13 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -80,6 +80,7 @@ jobs: - name: Install tools with scoop run: | + if ((vcpkg.exe help install) -match "manifest") { exit } Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser iwr -useb get.scoop.sh | iex Join-Path (Resolve-Path ~).Path "scoop\shims" >> $Env:GITHUB_PATH From 716be73e1cde5a6456d348987d37da74bbee2c36 Mon Sep 17 00:00:00 2001 From: "NARUSE, Yui" Date: Sun, 17 May 2026 12:18:32 +0900 Subject: [PATCH 4/5] Add source_ref_or_sha --- tool/format-release | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/tool/format-release b/tool/format-release index 8bb61542433fb2..d02154df1f967f 100755 --- a/tool/format-release +++ b/tool/format-release @@ -51,7 +51,7 @@ eom # SHA1: 21f62c369661a2ab1b521fd2fa8191a4273e12a1 # SHA256: 97cea8aa63dfa250ba6902b658a7aa066daf817b22f82b7ee28f44aec7c2e394 # SHA512: 1e2042324821bb4e110af7067f52891606dcfc71e640c194ab1c117f0b941550e0b3ac36ad3511214ac80c536b9e5cfaf8789eec74cf56971a832ea8fc4e6d94 - def self.parse(wwwdir, version, rubydir) + def self.parse(wwwdir, version, rubydir, source_ref_or_sha = nil) unless /\A(\d+)\.(\d+)\.(\d+)(?:-(?:preview|rc)\d+)?\z/ =~ version raise "unexpected version string '#{version}'" end @@ -75,9 +75,12 @@ eom if teeny == 0 # show diff shortstat - tag = RubyVersion.tag(version) + tag = source_ref_or_sha || RubyVersion.tag(version) prev_tag = RubyVersion.tag(RubyVersion.previous(version)) - stat = `git -C #{rubydir} diff -l0 --shortstat #{prev_tag}..#{tag}` + stat = IO.popen(["git", "-C", rubydir, "diff", "-l0", "--shortstat", "#{prev_tag}..#{tag}"], &:read) + unless $?.success? + raise "failed to diff #{prev_tag}..#{tag}" + end files_changed, insertions, deletions = stat.scan(/\d+/) end @@ -235,11 +238,12 @@ def main wwwdir = ARGV.shift version = ARGV.shift rubydir = ARGV.shift + source_ref_or_sha = ARGV.shift unless rubydir - STDERR.puts "usage: format-release " + STDERR.puts "usage: format-release [source-ref-or-sha]" exit end - Tarball.parse(wwwdir, version, rubydir) + Tarball.parse(wwwdir, version, rubydir, source_ref_or_sha) end main From 5037a32061cb697e631e117cf20f37ed5f932a19 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Sun, 17 May 2026 11:45:57 +0900 Subject: [PATCH 5/5] windows: Use the default vcpkg root --- .github/workflows/windows.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 4a2f1509910e13..c783f6ac6b2e9f 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -96,7 +96,7 @@ jobs: - name: Install libraries with vcpkg run: | - vcpkg install --vcpkg-root=%USERPROFILE%\scoop\apps\vcpkg\current + vcpkg install working-directory: src if: ${{ ! steps.restore-vcpkg.outputs.cache-hit }}