From b1c3bf6751e12d073806fbe09e247d5e7271c392 Mon Sep 17 00:00:00 2001 From: Benoit Daloze Date: Wed, 11 Oct 2023 17:19:46 +0200 Subject: [PATCH 1/3] Rename getVirtualEnvironmentName() to getOSNameVersion() for clarity --- common.js | 16 ++++++++-------- dist/index.js | 23 +++++++++++++---------- index.js | 4 +++- 3 files changed, 24 insertions(+), 19 deletions(-) diff --git a/common.js b/common.js index af2cf63bb..6f63f49cf 100644 --- a/common.js +++ b/common.js @@ -192,11 +192,11 @@ export function selfHostedRunnerReason() { } } -let virtualEnvironmentName = undefined +let osNameVersion = undefined -export function getVirtualEnvironmentName() { - if (virtualEnvironmentName !== undefined) { - return virtualEnvironmentName +export function getOSNameVersion() { + if (osNameVersion !== undefined) { + return osNameVersion } const platform = os.platform() @@ -216,12 +216,12 @@ export function getVirtualEnvironmentName() { throw new Error(`Unknown platform ${platform}`) } - virtualEnvironmentName = `${osName}-${osVersion}` - return virtualEnvironmentName + osNameVersion = `${osName}-${osVersion}` + return osNameVersion } export function getOSNameVersionArch() { - return `${getVirtualEnvironmentName()}-${os.arch()}` + return `${getOSNameVersion()}-${os.arch()}` } function findWindowsVersion() { @@ -258,7 +258,7 @@ export function getRunnerToolCache() { // Rubies prebuilt by this action embed this path rather than using $RUNNER_TOOL_CACHE function getDefaultToolCachePath() { - const platform = getVirtualEnvironmentName() + const platform = getOSNameVersion() if (platform.startsWith('ubuntu-')) { return '/opt/hostedtoolcache' } else if (platform.startsWith('macos-')) { diff --git a/dist/index.js b/dist/index.js index 728353204..70fc65cf7 100644 --- a/dist/index.js +++ b/dist/index.js @@ -292,11 +292,11 @@ __nccwpck_require__.d(__webpack_exports__, { "createToolCacheCompleteFile": () => (/* binding */ createToolCacheCompleteFile), "drive": () => (/* binding */ drive), "floatVersion": () => (/* binding */ floatVersion), + "getOSNameVersion": () => (/* binding */ getOSNameVersion), "getOSNameVersionArch": () => (/* binding */ getOSNameVersionArch), "getRunnerToolCache": () => (/* binding */ getRunnerToolCache), "getToolCachePath": () => (/* binding */ getToolCachePath), "getToolCacheRubyPrefix": () => (/* binding */ getToolCacheRubyPrefix), - "getVirtualEnvironmentName": () => (/* binding */ getVirtualEnvironmentName), "hasBundlerDefaultGem": () => (/* binding */ hasBundlerDefaultGem), "hashFile": () => (/* binding */ hashFile), "inputs": () => (/* binding */ inputs), @@ -552,11 +552,11 @@ function selfHostedRunnerReason() { } } -let virtualEnvironmentName = undefined +let osNameVersion = undefined -function getVirtualEnvironmentName() { - if (virtualEnvironmentName !== undefined) { - return virtualEnvironmentName +function getOSNameVersion() { + if (osNameVersion !== undefined) { + return osNameVersion } const platform = os.platform() @@ -576,12 +576,12 @@ function getVirtualEnvironmentName() { throw new Error(`Unknown platform ${platform}`) } - virtualEnvironmentName = `${osName}-${osVersion}` - return virtualEnvironmentName + osNameVersion = `${osName}-${osVersion}` + return osNameVersion } function getOSNameVersionArch() { - return `${getVirtualEnvironmentName()}-${os.arch()}` + return `${getOSNameVersion()}-${os.arch()}` } function findWindowsVersion() { @@ -618,7 +618,7 @@ function getRunnerToolCache() { // Rubies prebuilt by this action embed this path rather than using $RUNNER_TOOL_CACHE function getDefaultToolCachePath() { - const platform = getVirtualEnvironmentName() + const platform = getOSNameVersion() if (platform.startsWith('ubuntu-')) { return '/opt/hostedtoolcache' } else if (platform.startsWith('macos-')) { @@ -65690,6 +65690,9 @@ __nccwpck_require__.r(__webpack_exports__); /* harmony export */ "run": () => (/* binding */ run), /* harmony export */ "setupRuby": () => (/* binding */ setupRuby) /* harmony export */ }); +/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(3143); + + const os = __nccwpck_require__(2037) const fs = __nccwpck_require__(7147) const path = __nccwpck_require__(1017) @@ -65736,7 +65739,7 @@ async function setupRuby(options = {}) { process.chdir(inputs['working-directory']) - const platform = common.getVirtualEnvironmentName() + const platform = common.getOSNameVersion() const [engine, parsedVersion] = parseRubyEngineAndVersion(inputs['ruby-version']) let installer diff --git a/index.js b/index.js index cf3421c6e..f34b281dc 100644 --- a/index.js +++ b/index.js @@ -1,3 +1,5 @@ +import {getOSNameVersion} from "./common"; + const os = require('os') const fs = require('fs') const path = require('path') @@ -44,7 +46,7 @@ export async function setupRuby(options = {}) { process.chdir(inputs['working-directory']) - const platform = common.getVirtualEnvironmentName() + const platform = common.getOSNameVersion() const [engine, parsedVersion] = parseRubyEngineAndVersion(inputs['ruby-version']) let installer From f887fb3d0edd6f4f174c5165d312d1da6371b9b8 Mon Sep 17 00:00:00 2001 From: Benoit Daloze Date: Wed, 11 Oct 2023 18:27:39 +0200 Subject: [PATCH 2/3] Update versions-strings-for-builder.rb --- versions-strings-for-builder.rb | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/versions-strings-for-builder.rb b/versions-strings-for-builder.rb index 72762cef5..6a5000c28 100644 --- a/versions-strings-for-builder.rb +++ b/versions-strings-for-builder.rb @@ -4,15 +4,18 @@ by_minor = versions[:ruby].group_by { |v| v[/^\d\.\d/] } -(1..7).each do |minor| - p by_minor["2.#{minor}"].map { |v| "ruby-#{v}" } +by_minor.each_pair do |minor, versions| + puts versions.map { |v| "ruby-#{v}" }.join(', ') if minor end puts -p (versions[:truffleruby] - %w[head]).map { |v| "truffleruby-#{v}" } +puts (versions[:truffleruby] - %w[head]).map { |v| "truffleruby-#{v}" }.join(', ') puts -p (versions[:jruby] - %w[head]).map { |v| "jruby-#{v}" } +puts (versions[:"truffleruby+graalvm"] - %w[head]).map { |v| "truffleruby+graalvm-#{v}" }.join(', ') + +puts +puts (versions[:jruby] - %w[head]).map { |v| "jruby-#{v}" }.join(', ') (versions[:jruby] - %w[head]).each do |v| puts "- { os: windows-latest, jruby-version: #{v}, ruby: jruby-#{v} }" From 5cfe23c062c0aac352e765b1b7cc12ea5255ccc4 Mon Sep 17 00:00:00 2001 From: Benoit Daloze Date: Wed, 11 Oct 2023 17:21:51 +0200 Subject: [PATCH 3/3] Add support for macos-13-arm64 GitHub runners --- .github/workflows/test.yml | 19 +++++++++++++++++-- README.md | 2 +- common.js | 3 ++- dist/index.js | 11 ++++++++--- ruby-builder.js | 8 ++++++-- 5 files changed, 34 insertions(+), 9 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 381c7b08b..8aca63cdc 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -17,7 +17,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ ubuntu-20.04, ubuntu-22.04, macos-11, macos-12, macos-13, windows-2019, windows-2022 ] + os: [ ubuntu-20.04, ubuntu-22.04, macos-11, macos-12, macos-13, macos-arm-oss, windows-2019, windows-2022 ] ruby: [ '1.9', '2.0', '2.1', '2.2', '2.3', '2.4', '2.5', '2.6', '2.7', '3.0', '3.1', '3.2', '3.3', ruby-head, jruby, jruby-head, @@ -31,7 +31,22 @@ jobs: - { os: windows-2022, ruby: mswin } - { os: windows-2022, ruby: ucrt } exclude: - - { os: ubuntu-22.04, ruby: '2.2' } # https://github.com/ruby/setup-ruby/issues/496 + # https://github.com/ruby/setup-ruby/issues/496 + - { os: ubuntu-22.04, ruby: '2.2' } + # Too old, fails to compile on macos-arm-oss + - { os: macos-arm-oss, ruby: '1.9' } + - { os: macos-arm-oss, ruby: '2.0' } + - { os: macos-arm-oss, ruby: '2.1' } + - { os: macos-arm-oss, ruby: '2.2' } + - { os: macos-arm-oss, ruby: '2.3' } + - { os: macos-arm-oss, ruby: '2.4' } + - { os: macos-arm-oss, ruby: '2.5' } + # Fails to compile on macos-arm-oss, https://github.com/ruby/setup-ruby/pull/494#issuecomment-1758099885 + - { os: macos-arm-oss, ruby: '3.1' } + # No Java available yet on macos-arm-oss images + - { os: macos-arm-oss, ruby: 'jruby' } + - { os: macos-arm-oss, ruby: 'jruby-head' } + # Windows - { os: windows-2019, ruby: '1.9' } - { os: windows-2019, ruby: '3.3' } - { os: windows-2019, ruby: debug } diff --git a/README.md b/README.md index 58e2e56ea..2578674e4 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ The action works on these [GitHub-hosted runners](https://docs.github.com/en/act | Operating System | Supported | | ---------------- | --------- | | Ubuntu | `ubuntu-20.04`, `ubuntu-22.04` | -| macOS | `macos-11`, `macos-12`, `macos-13` | +| macOS | `macos-11`, `macos-12`, `macos-13`, `macos-13-xlarge` (arm64) | | Windows | `windows-2019`, `windows-2022` | The prebuilt releases are generated by [ruby-builder](https://github.com/ruby/ruby-builder) diff --git a/common.js b/common.js index 6f63f49cf..0ba132033 100644 --- a/common.js +++ b/common.js @@ -168,6 +168,7 @@ const GitHubHostedPlatforms = [ 'macos-11-x64', 'macos-12-x64', 'macos-13-x64', + 'macos-13-arm64', 'windows-2019-x64', 'windows-2022-x64', ] @@ -243,7 +244,7 @@ export function getToolCachePath() { return getRunnerToolCache() } else { // Rubies prebuilt by this action embed this path rather than using $RUNNER_TOOL_CACHE - // so use that path is not isSelfHostedRunner() + // so use that path if not isSelfHostedRunner() return getDefaultToolCachePath() } } diff --git a/dist/index.js b/dist/index.js index 70fc65cf7..c32f1b40a 100644 --- a/dist/index.js +++ b/dist/index.js @@ -528,6 +528,7 @@ const GitHubHostedPlatforms = [ 'macos-11-x64', 'macos-12-x64', 'macos-13-x64', + 'macos-13-arm64', 'windows-2019-x64', 'windows-2022-x64', ] @@ -603,7 +604,7 @@ function getToolCachePath() { return getRunnerToolCache() } else { // Rubies prebuilt by this action embed this path rather than using $RUNNER_TOOL_CACHE - // so use that path is not isSelfHostedRunner() + // so use that path if not isSelfHostedRunner() return getDefaultToolCachePath() } } @@ -65053,10 +65054,14 @@ async function downloadAndExtract(platform, engine, version, rubyPrefix) { function getDownloadURL(platform, engine, version) { let builderPlatform = platform - if (platform.startsWith('windows-')) { + if (platform.startsWith('windows-') && os.arch() === 'x64') { builderPlatform = 'windows-latest' } else if (platform.startsWith('macos-')) { - builderPlatform = 'macos-latest' + if (os.arch() === 'x64') { + builderPlatform = 'macos-latest' + } else if (os.arch() === 'arm64') { + builderPlatform = 'macos-13-arm64' + } } if (common.isHeadVersion(version)) { diff --git a/ruby-builder.js b/ruby-builder.js index 8e7f46665..b71483aa0 100644 --- a/ruby-builder.js +++ b/ruby-builder.js @@ -101,10 +101,14 @@ async function downloadAndExtract(platform, engine, version, rubyPrefix) { function getDownloadURL(platform, engine, version) { let builderPlatform = platform - if (platform.startsWith('windows-')) { + if (platform.startsWith('windows-') && os.arch() === 'x64') { builderPlatform = 'windows-latest' } else if (platform.startsWith('macos-')) { - builderPlatform = 'macos-latest' + if (os.arch() === 'x64') { + builderPlatform = 'macos-latest' + } else if (os.arch() === 'arm64') { + builderPlatform = 'macos-13-arm64' + } } if (common.isHeadVersion(version)) {