Compare commits

...
15 Commits
Author SHA1 Message Date
Benoit Daloze f269373437 Test the last 3.4 preview in CI 2024-10-07 20:33:19 +02:00
ruby-builder-bot 784fcda67f Add ruby-3.4.0-preview2 2024-10-07 20:20:58 +02:00
Benoit Daloze f6e05710ec Update README.md 2024-10-05 20:53:31 +02:00
Benoit Daloze 207a39969b Move the link to the list together with other text about builds 2024-10-05 20:51:36 +02:00
Samuel Williams 086ffb1a20 Update the dist/index.js. 2024-10-05 20:46:21 +02:00
Samuel Williams 27ceac8081 Add asan to the test matrix. 2024-10-05 20:46:21 +02:00
Samuel Williams aac0c64812 Add asan as a head version of Ruby. 2024-10-05 20:46:21 +02:00
Samuel Williams 727fd4feab Update ruby-builder-versions.json 2024-10-05 20:46:21 +02:00
Stavros Ntentos 79c01b8847 README.md: Mention link to supported Ruby versions for GitHub-hosted runners
Fixes https://github.com/ruby/setup-ruby/issues/650

Signed-off-by: Stavros Ntentos <133706+stdedos@users.noreply.github.com>
2024-10-02 22:26:31 +02:00
Benoit Daloze c04af2bb72 Replace macos-release by (parseInt(os.version()) - 9)
* That way we don't need to update that dependency to work with newer macOS releases.
2024-09-25 22:01:07 +02:00
Benoit Daloze 17f5c914a0 Add support for macos-15 and all future macos runners
* Fixes https://github.com/ruby/setup-ruby/issues/647
2024-09-25 22:00:58 +02:00
Benoit Daloze 5496baa6db Update macos-release to 3.3.0 so it recognizes macos-15 2024-09-25 21:40:23 +02:00
Benoit Daloze 0ec4904dc7 Better error for TruffleRuby on Windows
* Fixes https://github.com/ruby/setup-ruby/issues/619
2024-09-25 21:02:29 +02:00
ruby-builder-bot f321cf5a4d Add truffleruby-24.1.0,truffleruby+graalvm-24.1.0 2024-09-17 16:56:52 +02:00
MSP-Greg 6af8267b44 README.md - Windows - clarify installed packages, 2022 vs 2019 2024-09-16 22:18:39 +02:00
8 changed files with 198 additions and 170 deletions
+19 -9
View File
@@ -17,9 +17,9 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: [ ubuntu-20.04, ubuntu-22.04, ubuntu-24.04, macos-12, macos-13, macos-14, windows-2019, windows-2022 ] os: [ ubuntu-20.04, ubuntu-22.04, ubuntu-24.04, macos-12, macos-13, macos-14, macos-15, windows-2019, windows-2022 ]
ruby: [ 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, '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', '3.4', ruby-head,
jruby, jruby-head, jruby, jruby-head,
truffleruby, truffleruby-head, truffleruby, truffleruby-head,
truffleruby+graalvm, truffleruby+graalvm-head truffleruby+graalvm, truffleruby+graalvm-head
@@ -30,12 +30,13 @@ jobs:
- { os: windows-2022, ruby: mingw } - { os: windows-2022, ruby: mingw }
- { os: windows-2022, ruby: mswin } - { os: windows-2022, ruby: mswin }
- { os: windows-2022, ruby: ucrt } - { os: windows-2022, ruby: ucrt }
- { os: ubuntu-24.04, ruby: asan }
exclude: exclude:
# https://github.com/ruby/setup-ruby/issues/496 # https://github.com/ruby/setup-ruby/issues/496
- { os: ubuntu-22.04, ruby: '2.2' } - { os: ubuntu-22.04, ruby: '2.2' }
- { os: ubuntu-24.04, ruby: '1.9' } - { os: ubuntu-24.04, ruby: '1.9' }
- { os: ubuntu-24.04, ruby: '2.2' } - { os: ubuntu-24.04, ruby: '2.2' }
# These old Rubies fail to compile on macos-14 (macOS 14, arm64), which is used for ruby/ruby-builder # These old Rubies fail to compile on macOS arm64
- { os: macos-14, ruby: '1.9' } - { os: macos-14, ruby: '1.9' }
- { os: macos-14, ruby: '2.0' } - { os: macos-14, ruby: '2.0' }
- { os: macos-14, ruby: '2.1' } - { os: macos-14, ruby: '2.1' }
@@ -43,18 +44,27 @@ jobs:
- { os: macos-14, ruby: '2.3' } - { os: macos-14, ruby: '2.3' }
- { os: macos-14, ruby: '2.4' } - { os: macos-14, ruby: '2.4' }
- { os: macos-14, ruby: '2.5' } - { os: macos-14, ruby: '2.5' }
# Windows - { os: macos-15, ruby: '1.9' }
- { os: macos-15, ruby: '2.0' }
- { os: macos-15, ruby: '2.1' }
- { os: macos-15, ruby: '2.2' }
- { os: macos-15, ruby: '2.3' }
- { os: macos-15, ruby: '2.4' }
- { os: macos-15, ruby: '2.5' }
# Windows (note: previews are not available on Windows)
- { os: windows-2019, ruby: '1.9' } - { os: windows-2019, ruby: '1.9' }
- { os: windows-2019, ruby: debug }
- { os: windows-2019, ruby: truffleruby }
- { os: windows-2019, ruby: truffleruby-head }
- { os: windows-2019, ruby: truffleruby+graalvm }
- { os: windows-2019, ruby: truffleruby+graalvm-head }
- { os: windows-2022, ruby: '1.9' } - { os: windows-2022, ruby: '1.9' }
- { os: windows-2019, ruby: '3.4.0-preview2' }
- { os: windows-2022, ruby: '3.4.0-preview2' }
- { os: windows-2019, ruby: debug }
- { os: windows-2022, ruby: debug } - { os: windows-2022, ruby: debug }
- { os: windows-2019, ruby: truffleruby }
- { os: windows-2022, ruby: truffleruby } - { os: windows-2022, ruby: truffleruby }
- { os: windows-2019, ruby: truffleruby-head }
- { os: windows-2022, ruby: truffleruby-head } - { os: windows-2022, ruby: truffleruby-head }
- { os: windows-2019, ruby: truffleruby+graalvm }
- { os: windows-2022, ruby: truffleruby+graalvm } - { os: windows-2022, ruby: truffleruby+graalvm }
- { os: windows-2019, ruby: truffleruby+graalvm-head }
- { os: windows-2022, ruby: truffleruby+graalvm-head } - { os: windows-2022, ruby: truffleruby+graalvm-head }
name: ${{ matrix.os }} ${{ matrix.ruby }} name: ${{ matrix.os }} ${{ matrix.ruby }}
+8 -7
View File
@@ -15,10 +15,10 @@ This action currently supports these versions of MRI, JRuby and TruffleRuby:
| Interpreter | Versions | | Interpreter | Versions |
| ----------- | -------- | | ----------- | -------- |
| `ruby` | 1.9.3, 2.0.0, 2.1.9, 2.2, all versions from 2.3.0 until 3.4.0-preview1, head, debug, mingw, mswin, ucrt | | `ruby` | 1.9.3, 2.0.0, 2.1.9, 2.2, all versions from 2.3.0 until 3.4.0-preview2, head, debug, mingw, mswin, ucrt |
| `jruby` | 9.1.17.0 - 9.4.8.0, head | | `jruby` | 9.1.17.0 - 9.4.8.0, head |
| `truffleruby` | 19.3.0 - 24.0.2, head | | `truffleruby` | 19.3.0 - 24.1.0, head |
| `truffleruby+graalvm` | 21.2.0 - 24.0.2, head | | `truffleruby+graalvm` | 21.2.0 - 24.1.0, head |
`ruby-debug` is the same as `ruby-head` but with assertions enabled (`-DRUBY_DEBUG=1`). `ruby-debug` is the same as `ruby-head` but with assertions enabled (`-DRUBY_DEBUG=1`).
@@ -51,10 +51,10 @@ and on Windows by [RubyInstaller2](https://github.com/oneclick/rubyinstaller2).
The `mingw`, `ucrt` and `mswin` builds are generated by [ruby-loco](https://github.com/MSP-Greg/ruby-loco). The `mingw`, `ucrt` and `mswin` builds are generated by [ruby-loco](https://github.com/MSP-Greg/ruby-loco).
`ruby-head` is generated by [ruby-dev-builder](https://github.com/ruby/ruby-dev-builder), `ruby-head` is generated by [ruby-dev-builder](https://github.com/ruby/ruby-dev-builder),
`jruby-head` is generated by [jruby-dev-builder](https://github.com/ruby/jruby-dev-builder), `jruby-head` is generated by [jruby-dev-builder](https://github.com/ruby/jruby-dev-builder),
`truffleruby-head` is generated by [truffleruby-dev-builder](https://github.com/ruby/truffleruby-dev-builder) `truffleruby-head` and `truffleruby+graalvm-head` are generated by [truffleruby-dev-builder](https://github.com/ruby/truffleruby-dev-builder).
and `truffleruby+graalvm` is generated by [graalvm-ce-dev-builds](https://github.com/graalvm/graalvm-ce-dev-builds). The full list of available Ruby versions can be seen in [ruby-builder-versions.json](ruby-builder-versions.json) for Ubuntu and macOS
The full list of available Ruby versions can be seen in [ruby-builder-versions.json](ruby-builder-versions.json) (although some combinations are not available, see [the full list](https://github.com/ruby/ruby-builder/releases/tag/toolcache))
for Ubuntu and macOS and in [windows-versions.json](windows-versions.json) for Windows. and in [windows-versions.json](windows-versions.json) for Windows.
## Usage ## Usage
@@ -233,6 +233,7 @@ It is recommended to first get your build working on Ubuntu and macOS before try
* For Ruby < 2.4, the DevKit MSYS tools are installed and prepended to the `Path`. * For Ruby < 2.4, the DevKit MSYS tools are installed and prepended to the `Path`.
* Use JRuby 9.2.20+ on Windows (older versions have [bugs](https://github.com/ruby/setup-ruby/issues/18#issuecomment-889072695)). * Use JRuby 9.2.20+ on Windows (older versions have [bugs](https://github.com/ruby/setup-ruby/issues/18#issuecomment-889072695)).
* JRuby on Windows has multiple issues ([jruby/jruby#7106](https://github.com/jruby/jruby/issues/7106), [jruby/jruby#7182](https://github.com/jruby/jruby/issues/7182)). * JRuby on Windows has multiple issues ([jruby/jruby#7106](https://github.com/jruby/jruby/issues/7106), [jruby/jruby#7182](https://github.com/jruby/jruby/issues/7182)).
* When compiling extension code, note that the packages required to build Ruby are included when using Windows 2022, but that Windows 2019 does not include all of them, and may require installing package(s). This can be done with [setup-ruby-pkgs](https://github.com/ruby/setup-ruby-pkgs) or via MSYS2's pacman. These packages may be required when installing or updating Ruby std-lib extension gems.
## Versioning ## Versioning
+61 -31
View File
@@ -8,7 +8,6 @@ const core = require('@actions/core')
const tc = require('@actions/tool-cache') const tc = require('@actions/tool-cache')
const { performance } = require('perf_hooks') const { performance } = require('perf_hooks')
const linuxOSInfo = require('linux-os-info') const linuxOSInfo = require('linux-os-info')
import macosRelease from 'macos-release'
export const windows = (os.platform() === 'win32') export const windows = (os.platform() === 'win32')
// Extract to SSD on Windows, see https://github.com/ruby/setup-ruby/pull/14 // Extract to SSD on Windows, see https://github.com/ruby/setup-ruby/pull/14
@@ -67,7 +66,7 @@ export async function time(name, block) {
} }
export function isHeadVersion(rubyVersion) { export function isHeadVersion(rubyVersion) {
return ['head', 'debug', 'mingw', 'mswin', 'ucrt'].includes(rubyVersion) return ['head', 'debug', 'mingw', 'mswin', 'ucrt', 'asan'].includes(rubyVersion)
} }
export function isStableVersion(engine, rubyVersion) { export function isStableVersion(engine, rubyVersion) {
@@ -162,73 +161,105 @@ export async function hashFile(file) {
return hash.digest('hex') return hash.digest('hex')
} }
// macos is not listed explicitly, see below
const GitHubHostedPlatforms = [ const GitHubHostedPlatforms = [
'ubuntu-20.04-x64', 'ubuntu-20.04-x64',
'ubuntu-22.04-x64', 'ubuntu-22.04-x64',
'ubuntu-24.04-x64', 'ubuntu-24.04-x64',
'macos-12-x64',
'macos-13-x64',
'macos-13-arm64',
'macos-14-x64',
'macos-14-arm64',
'windows-2019-x64', 'windows-2019-x64',
'windows-2022-x64', 'windows-2022-x64',
] ]
// Precisely: whether we have builds for that platform and there are GitHub-hosted runners to test it
function isSupportedPlatform() {
const platform = getOSName()
switch (platform) {
case 'ubuntu':
return GitHubHostedPlatforms.includes(getOSNameVersionArch())
case 'macos':
// See https://github.com/ruby/ruby-builder/blob/master/README.md#naming
// 13 on arm64 because of old macos-arm-oss runners
return (os.arch() === 'x64' && parseInt(getOSVersion()) >= 12) ||
(os.arch() === 'arm64' && parseInt(getOSVersion()) >= 13)
case 'windows':
return GitHubHostedPlatforms.includes(getOSNameVersionArch())
}
}
// Actually a self-hosted runner for which the OS and OS version does not correspond to a GitHub-hosted runner image, // Actually a self-hosted runner for which the OS and OS version does not correspond to a GitHub-hosted runner image,
export function isSelfHostedRunner() { export function isSelfHostedRunner() {
if (inputs.selfHosted === undefined) { if (inputs.selfHosted === undefined) {
throw new Error('inputs.selfHosted should have been already set') throw new Error('inputs.selfHosted should have been already set')
} }
return inputs.selfHosted === 'true' || return inputs.selfHosted === 'true' || !isSupportedPlatform()
!GitHubHostedPlatforms.includes(getOSNameVersionArch())
} }
export function selfHostedRunnerReason() { export function selfHostedRunnerReason() {
if (inputs.selfHosted === 'true') { if (inputs.selfHosted === 'true') {
return 'the self-hosted input was set' return 'the self-hosted input was set'
} else if (!GitHubHostedPlatforms.includes(getOSNameVersionArch())) { } else if (!isSupportedPlatform()) {
return 'the platform does not match a GitHub-hosted runner image (or that image is deprecated and no longer supported)' return 'the platform does not match a GitHub-hosted runner image (or that image is deprecated and no longer supported)'
} else { } else {
return 'unknown reason' return 'unknown reason'
} }
} }
let osNameVersion = undefined let osName = undefined
let osVersion = undefined
export function getOSNameVersion() { export function getOSName() {
if (osNameVersion !== undefined) { if (osName !== undefined) {
return osNameVersion return osName
} }
const platform = os.platform() const platform = os.platform()
let osName
let osVersion
if (platform === 'linux') { if (platform === 'linux') {
const info = linuxOSInfo({mode: 'sync'}) const info = linuxOSInfo({mode: 'sync'})
osName = info.id osName = info.id
osVersion = info.version_id
} else if (platform === 'darwin') { } else if (platform === 'darwin') {
osName = 'macos' osName = 'macos'
osVersion = macosRelease().version
} else if (platform === 'win32') { } else if (platform === 'win32') {
osName = 'windows' osName = 'windows'
} else {
throw new Error(`Unknown platform ${platform}`)
}
return osName
}
export function getOSVersion() {
if (osVersion !== undefined) {
return osVersion
}
const platform = os.platform()
if (platform === 'linux') {
const info = linuxOSInfo({mode: 'sync'})
osVersion = info.version_id
} else if (platform === 'darwin') {
// See https://github.com/sindresorhus/macos-release/blob/main/index.js
const darwinVersion = parseInt(os.release().match(/^\d+/)[0])
osVersion = `${darwinVersion - 9}`
} else if (platform === 'win32') {
osVersion = findWindowsVersion() osVersion = findWindowsVersion()
} else { } else {
throw new Error(`Unknown platform ${platform}`) throw new Error(`Unknown platform ${platform}`)
} }
osNameVersion = `${osName}-${osVersion}` return osVersion
return osNameVersion }
export function getOSNameVersion() {
return `${getOSName()}-${getOSVersion()}`
} }
export function getOSNameVersionArch() { export function getOSNameVersionArch() {
return `${getOSNameVersion()}-${os.arch()}` return `${getOSName()}-${getOSVersion()}-${os.arch()}`
} }
function findWindowsVersion() { function findWindowsVersion() {
const version = os.version(); const version = os.version()
const match = version.match(/^Windows Server (\d+) Datacenter/) const match = version.match(/^Windows Server (\d+) Datacenter/)
if (match) { if (match) {
return match[1] return match[1]
@@ -261,15 +292,14 @@ export function getRunnerToolCache() {
// Rubies prebuilt by this action embed this path rather than using $RUNNER_TOOL_CACHE // Rubies prebuilt by this action embed this path rather than using $RUNNER_TOOL_CACHE
function getDefaultToolCachePath() { function getDefaultToolCachePath() {
const platform = getOSNameVersion() const platform = getOSName()
if (platform.startsWith('ubuntu-')) { switch (platform) {
return '/opt/hostedtoolcache' case 'ubuntu':
} else if (platform.startsWith('macos-')) { return '/opt/hostedtoolcache'
return '/Users/runner/hostedtoolcache' case 'macos':
} else if (platform.startsWith('windows-')) { return '/Users/runner/hostedtoolcache'
return 'C:\\hostedtoolcache\\windows' case 'windows':
} else { return 'C:\\hostedtoolcache\\windows'
throw new Error('Unknown platform')
} }
} }
Generated Vendored
+104 -113
View File
@@ -17,7 +17,7 @@ const path = __nccwpck_require__(1017)
const core = __nccwpck_require__(2186) const core = __nccwpck_require__(2186)
const exec = __nccwpck_require__(1514) const exec = __nccwpck_require__(1514)
const cache = __nccwpck_require__(7799) const cache = __nccwpck_require__(7799)
const common = __nccwpck_require__(3143) const common = __nccwpck_require__(4717)
const DEFAULT_CACHE_VERSION = '0' const DEFAULT_CACHE_VERSION = '0'
@@ -280,95 +280,53 @@ async function computeBaseKey(platform, engine, version, lockFile, cacheVersion)
/***/ }), /***/ }),
/***/ 3143: /***/ 4717:
/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { /***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => {
"use strict"; "use strict";
// ESM COMPAT FLAG
__nccwpck_require__.r(__webpack_exports__); __nccwpck_require__.r(__webpack_exports__);
/* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
// EXPORTS /* harmony export */ "windows": () => (/* binding */ windows),
__nccwpck_require__.d(__webpack_exports__, { /* harmony export */ "drive": () => (/* binding */ drive),
"createToolCacheCompleteFile": () => (/* binding */ createToolCacheCompleteFile), /* harmony export */ "inputs": () => (/* binding */ inputs),
"drive": () => (/* binding */ drive), /* harmony export */ "partition": () => (/* binding */ partition),
"floatVersion": () => (/* binding */ floatVersion), /* harmony export */ "measure": () => (/* binding */ measure),
"getOSNameVersion": () => (/* binding */ getOSNameVersion), /* harmony export */ "time": () => (/* binding */ time),
"getOSNameVersionArch": () => (/* binding */ getOSNameVersionArch), /* harmony export */ "isHeadVersion": () => (/* binding */ isHeadVersion),
"getRunnerToolCache": () => (/* binding */ getRunnerToolCache), /* harmony export */ "isStableVersion": () => (/* binding */ isStableVersion),
"getToolCachePath": () => (/* binding */ getToolCachePath), /* harmony export */ "hasBundlerDefaultGem": () => (/* binding */ hasBundlerDefaultGem),
"getToolCacheRubyPrefix": () => (/* binding */ getToolCacheRubyPrefix), /* harmony export */ "isBundler1Default": () => (/* binding */ isBundler1Default),
"hasBundlerDefaultGem": () => (/* binding */ hasBundlerDefaultGem), /* harmony export */ "isBundler2Default": () => (/* binding */ isBundler2Default),
"hashFile": () => (/* binding */ hashFile), /* harmony export */ "isBundler2dot2Default": () => (/* binding */ isBundler2dot2Default),
"inputs": () => (/* binding */ inputs), /* harmony export */ "targetRubyVersion": () => (/* binding */ targetRubyVersion),
"isBundler1Default": () => (/* binding */ isBundler1Default), /* harmony export */ "floatVersion": () => (/* binding */ floatVersion),
"isBundler2Default": () => (/* binding */ isBundler2Default), /* harmony export */ "hashFile": () => (/* binding */ hashFile),
"isBundler2dot2Default": () => (/* binding */ isBundler2dot2Default), /* harmony export */ "isSelfHostedRunner": () => (/* binding */ isSelfHostedRunner),
"isHeadVersion": () => (/* binding */ isHeadVersion), /* harmony export */ "selfHostedRunnerReason": () => (/* binding */ selfHostedRunnerReason),
"isSelfHostedRunner": () => (/* binding */ isSelfHostedRunner), /* harmony export */ "getOSName": () => (/* binding */ getOSName),
"isStableVersion": () => (/* binding */ isStableVersion), /* harmony export */ "getOSVersion": () => (/* binding */ getOSVersion),
"measure": () => (/* binding */ measure), /* harmony export */ "getOSNameVersion": () => (/* binding */ getOSNameVersion),
"partition": () => (/* binding */ partition), /* harmony export */ "getOSNameVersionArch": () => (/* binding */ getOSNameVersionArch),
"selfHostedRunnerReason": () => (/* binding */ selfHostedRunnerReason), /* harmony export */ "shouldUseToolCache": () => (/* binding */ shouldUseToolCache),
"setupPath": () => (/* binding */ setupPath), /* harmony export */ "getToolCachePath": () => (/* binding */ getToolCachePath),
"shouldUseToolCache": () => (/* binding */ shouldUseToolCache), /* harmony export */ "getRunnerToolCache": () => (/* binding */ getRunnerToolCache),
"targetRubyVersion": () => (/* binding */ targetRubyVersion), /* harmony export */ "toolCacheFind": () => (/* binding */ toolCacheFind),
"time": () => (/* binding */ time), /* harmony export */ "getToolCacheRubyPrefix": () => (/* binding */ getToolCacheRubyPrefix),
"toolCacheCompleteFile": () => (/* binding */ toolCacheCompleteFile), /* harmony export */ "toolCacheCompleteFile": () => (/* binding */ toolCacheCompleteFile),
"toolCacheFind": () => (/* binding */ toolCacheFind), /* harmony export */ "createToolCacheCompleteFile": () => (/* binding */ createToolCacheCompleteFile),
"win2nix": () => (/* binding */ win2nix), /* harmony export */ "win2nix": () => (/* binding */ win2nix),
"windows": () => (/* binding */ windows) /* harmony export */ "setupPath": () => (/* binding */ setupPath)
}); /* harmony export */ });
;// CONCATENATED MODULE: external "node:os"
const external_node_os_namespaceObject = require("node:os");
;// CONCATENATED MODULE: ./node_modules/macos-release/index.js
const nameMap = new Map([
[23, ['Sonoma', '14']],
[22, ['Ventura', '13']],
[21, ['Monterey', '12']],
[20, ['Big Sur', '11']],
[19, ['Catalina', '10.15']],
[18, ['Mojave', '10.14']],
[17, ['High Sierra', '10.13']],
[16, ['Sierra', '10.12']],
[15, ['El Capitan', '10.11']],
[14, ['Yosemite', '10.10']],
[13, ['Mavericks', '10.9']],
[12, ['Mountain Lion', '10.8']],
[11, ['Lion', '10.7']],
[10, ['Snow Leopard', '10.6']],
[9, ['Leopard', '10.5']],
[8, ['Tiger', '10.4']],
[7, ['Panther', '10.3']],
[6, ['Jaguar', '10.2']],
[5, ['Puma', '10.1']],
]);
function macosRelease(release) {
release = Number((release || external_node_os_namespaceObject.release()).split('.')[0]);
const [name, version] = nameMap.get(release) || ['Unknown', ''];
return {
name,
version,
};
}
;// CONCATENATED MODULE: ./common.js
const os = __nccwpck_require__(2037) const os = __nccwpck_require__(2037)
const path = __nccwpck_require__(1017) const path = __nccwpck_require__(1017)
const fs = __nccwpck_require__(7147) const fs = __nccwpck_require__(7147)
const util = __nccwpck_require__(3837) const util = __nccwpck_require__(3837)
const stream = __nccwpck_require__(2781) const stream = __nccwpck_require__(2781)
const common_crypto = __nccwpck_require__(6113) const crypto = __nccwpck_require__(6113)
const core = __nccwpck_require__(2186) const core = __nccwpck_require__(2186)
const tc = __nccwpck_require__(7784) const tc = __nccwpck_require__(7784)
const { performance } = __nccwpck_require__(4074) const { performance } = __nccwpck_require__(4074)
const linuxOSInfo = __nccwpck_require__(8487) const linuxOSInfo = __nccwpck_require__(8487)
;
const windows = (os.platform() === 'win32') const windows = (os.platform() === 'win32')
// Extract to SSD on Windows, see https://github.com/ruby/setup-ruby/pull/14 // Extract to SSD on Windows, see https://github.com/ruby/setup-ruby/pull/14
@@ -427,7 +385,7 @@ async function time(name, block) {
} }
function isHeadVersion(rubyVersion) { function isHeadVersion(rubyVersion) {
return ['head', 'debug', 'mingw', 'mswin', 'ucrt'].includes(rubyVersion) return ['head', 'debug', 'mingw', 'mswin', 'ucrt', 'asan'].includes(rubyVersion)
} }
function isStableVersion(engine, rubyVersion) { function isStableVersion(engine, rubyVersion) {
@@ -516,79 +474,111 @@ function floatVersion(rubyVersion) {
async function hashFile(file) { async function hashFile(file) {
// See https://github.com/actions/runner/blob/master/src/Misc/expressionFunc/hashFiles/src/hashFiles.ts // See https://github.com/actions/runner/blob/master/src/Misc/expressionFunc/hashFiles/src/hashFiles.ts
const hash = common_crypto.createHash('sha256') const hash = crypto.createHash('sha256')
const pipeline = util.promisify(stream.pipeline) const pipeline = util.promisify(stream.pipeline)
await pipeline(fs.createReadStream(file), hash) await pipeline(fs.createReadStream(file), hash)
return hash.digest('hex') return hash.digest('hex')
} }
// macos is not listed explicitly, see below
const GitHubHostedPlatforms = [ const GitHubHostedPlatforms = [
'ubuntu-20.04-x64', 'ubuntu-20.04-x64',
'ubuntu-22.04-x64', 'ubuntu-22.04-x64',
'ubuntu-24.04-x64', 'ubuntu-24.04-x64',
'macos-12-x64',
'macos-13-x64',
'macos-13-arm64',
'macos-14-x64',
'macos-14-arm64',
'windows-2019-x64', 'windows-2019-x64',
'windows-2022-x64', 'windows-2022-x64',
] ]
// Precisely: whether we have builds for that platform and there are GitHub-hosted runners to test it
function isSupportedPlatform() {
const platform = getOSName()
switch (platform) {
case 'ubuntu':
return GitHubHostedPlatforms.includes(getOSNameVersionArch())
case 'macos':
// See https://github.com/ruby/ruby-builder/blob/master/README.md#naming
// 13 on arm64 because of old macos-arm-oss runners
return (os.arch() === 'x64' && parseInt(getOSVersion()) >= 12) ||
(os.arch() === 'arm64' && parseInt(getOSVersion()) >= 13)
case 'windows':
return GitHubHostedPlatforms.includes(getOSNameVersionArch())
}
}
// Actually a self-hosted runner for which the OS and OS version does not correspond to a GitHub-hosted runner image, // Actually a self-hosted runner for which the OS and OS version does not correspond to a GitHub-hosted runner image,
function isSelfHostedRunner() { function isSelfHostedRunner() {
if (inputs.selfHosted === undefined) { if (inputs.selfHosted === undefined) {
throw new Error('inputs.selfHosted should have been already set') throw new Error('inputs.selfHosted should have been already set')
} }
return inputs.selfHosted === 'true' || return inputs.selfHosted === 'true' || !isSupportedPlatform()
!GitHubHostedPlatforms.includes(getOSNameVersionArch())
} }
function selfHostedRunnerReason() { function selfHostedRunnerReason() {
if (inputs.selfHosted === 'true') { if (inputs.selfHosted === 'true') {
return 'the self-hosted input was set' return 'the self-hosted input was set'
} else if (!GitHubHostedPlatforms.includes(getOSNameVersionArch())) { } else if (!isSupportedPlatform()) {
return 'the platform does not match a GitHub-hosted runner image (or that image is deprecated and no longer supported)' return 'the platform does not match a GitHub-hosted runner image (or that image is deprecated and no longer supported)'
} else { } else {
return 'unknown reason' return 'unknown reason'
} }
} }
let osNameVersion = undefined let osName = undefined
let osVersion = undefined
function getOSNameVersion() { function getOSName() {
if (osNameVersion !== undefined) { if (osName !== undefined) {
return osNameVersion return osName
} }
const platform = os.platform() const platform = os.platform()
let osName
let osVersion
if (platform === 'linux') { if (platform === 'linux') {
const info = linuxOSInfo({mode: 'sync'}) const info = linuxOSInfo({mode: 'sync'})
osName = info.id osName = info.id
osVersion = info.version_id
} else if (platform === 'darwin') { } else if (platform === 'darwin') {
osName = 'macos' osName = 'macos'
osVersion = macosRelease().version
} else if (platform === 'win32') { } else if (platform === 'win32') {
osName = 'windows' osName = 'windows'
} else {
throw new Error(`Unknown platform ${platform}`)
}
return osName
}
function getOSVersion() {
if (osVersion !== undefined) {
return osVersion
}
const platform = os.platform()
if (platform === 'linux') {
const info = linuxOSInfo({mode: 'sync'})
osVersion = info.version_id
} else if (platform === 'darwin') {
// See https://github.com/sindresorhus/macos-release/blob/main/index.js
const darwinVersion = parseInt(os.release().match(/^\d+/)[0])
osVersion = `${darwinVersion - 9}`
} else if (platform === 'win32') {
osVersion = findWindowsVersion() osVersion = findWindowsVersion()
} else { } else {
throw new Error(`Unknown platform ${platform}`) throw new Error(`Unknown platform ${platform}`)
} }
osNameVersion = `${osName}-${osVersion}` return osVersion
return osNameVersion }
function getOSNameVersion() {
return `${getOSName()}-${getOSVersion()}`
} }
function getOSNameVersionArch() { function getOSNameVersionArch() {
return `${getOSNameVersion()}-${os.arch()}` return `${getOSName()}-${getOSVersion()}-${os.arch()}`
} }
function findWindowsVersion() { function findWindowsVersion() {
const version = os.version(); const version = os.version()
const match = version.match(/^Windows Server (\d+) Datacenter/) const match = version.match(/^Windows Server (\d+) Datacenter/)
if (match) { if (match) {
return match[1] return match[1]
@@ -621,15 +611,14 @@ function getRunnerToolCache() {
// Rubies prebuilt by this action embed this path rather than using $RUNNER_TOOL_CACHE // Rubies prebuilt by this action embed this path rather than using $RUNNER_TOOL_CACHE
function getDefaultToolCachePath() { function getDefaultToolCachePath() {
const platform = getOSNameVersion() const platform = getOSName()
if (platform.startsWith('ubuntu-')) { switch (platform) {
return '/opt/hostedtoolcache' case 'ubuntu':
} else if (platform.startsWith('macos-')) { return '/opt/hostedtoolcache'
return '/Users/runner/hostedtoolcache' case 'macos':
} else if (platform.startsWith('windows-')) { return '/Users/runner/hostedtoolcache'
return 'C:\\hostedtoolcache\\windows' case 'windows':
} else { return 'C:\\hostedtoolcache\\windows'
throw new Error('Unknown platform')
} }
} }
@@ -64961,7 +64950,7 @@ const core = __nccwpck_require__(2186)
const exec = __nccwpck_require__(1514) const exec = __nccwpck_require__(1514)
const io = __nccwpck_require__(7436) const io = __nccwpck_require__(7436)
const tc = __nccwpck_require__(7784) const tc = __nccwpck_require__(7784)
const common = __nccwpck_require__(3143) const common = __nccwpck_require__(4717)
const rubyBuilderVersions = __nccwpck_require__(5959) const rubyBuilderVersions = __nccwpck_require__(5959)
const builderReleaseTag = 'toolcache' const builderReleaseTag = 'toolcache'
@@ -65090,7 +65079,7 @@ __nccwpck_require__.r(__webpack_exports__);
/* harmony export */ __nccwpck_require__.d(__webpack_exports__, { /* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
/* harmony export */ "rubygemsUpdate": () => (/* binding */ rubygemsUpdate) /* harmony export */ "rubygemsUpdate": () => (/* binding */ rubygemsUpdate)
/* harmony export */ }); /* harmony export */ });
const common = __nccwpck_require__(3143) const common = __nccwpck_require__(4717)
const path = __nccwpck_require__(1017) const path = __nccwpck_require__(1017)
const exec = __nccwpck_require__(1514) const exec = __nccwpck_require__(1514)
const semver = __nccwpck_require__(1383) const semver = __nccwpck_require__(1383)
@@ -65175,7 +65164,7 @@ const core = __nccwpck_require__(2186)
const exec = __nccwpck_require__(1514) const exec = __nccwpck_require__(1514)
const io = __nccwpck_require__(7436) const io = __nccwpck_require__(7436)
const tc = __nccwpck_require__(7784) const tc = __nccwpck_require__(7784)
const common = __nccwpck_require__(3143) const common = __nccwpck_require__(4717)
const rubyInstallerVersions = __nccwpck_require__(6459) const rubyInstallerVersions = __nccwpck_require__(6459)
const drive = common.drive const drive = common.drive
@@ -65645,7 +65634,7 @@ module.exports = JSON.parse('[[[0,44],"disallowed_STD3_valid"],[[45,46],"valid"]
/***/ ((module) => { /***/ ((module) => {
"use strict"; "use strict";
module.exports = JSON.parse('{"ruby":["1.9.3-p551","2.0.0-p648","2.1.9","2.2.10","2.3.0","2.3.1","2.3.2","2.3.3","2.3.4","2.3.5","2.3.6","2.3.7","2.3.8","2.4.0","2.4.1","2.4.2","2.4.3","2.4.4","2.4.5","2.4.6","2.4.7","2.4.9","2.4.10","2.5.0","2.5.1","2.5.2","2.5.3","2.5.4","2.5.5","2.5.6","2.5.7","2.5.8","2.5.9","2.6.0","2.6.1","2.6.2","2.6.3","2.6.4","2.6.5","2.6.6","2.6.7","2.6.8","2.6.9","2.6.10","2.7.0","2.7.1","2.7.2","2.7.3","2.7.4","2.7.5","2.7.6","2.7.7","2.7.8","3.0.0-preview1","3.0.0-preview2","3.0.0-rc1","3.0.0","3.0.1","3.0.2","3.0.3","3.0.4","3.0.5","3.0.6","3.0.7","3.1.0-preview1","3.1.0","3.1.1","3.1.2","3.1.3","3.1.4","3.1.5","3.1.6","3.2.0-preview1","3.2.0-preview2","3.2.0-preview3","3.2.0-rc1","3.2.0","3.2.1","3.2.2","3.2.3","3.2.4","3.2.5","3.3.0-preview1","3.3.0-preview2","3.3.0-preview3","3.3.0-rc1","3.3.0","3.3.1","3.3.2","3.3.3","3.3.4","3.3.5","3.4.0-preview1","head","debug"],"jruby":["9.1.17.0","9.2.9.0","9.2.10.0","9.2.11.0","9.2.11.1","9.2.12.0","9.2.13.0","9.2.14.0","9.2.15.0","9.2.16.0","9.2.17.0","9.2.18.0","9.2.19.0","9.2.20.0","9.2.20.1","9.2.21.0","9.3.0.0","9.3.1.0","9.3.2.0","9.3.3.0","9.3.4.0","9.3.6.0","9.3.7.0","9.3.8.0","9.3.9.0","9.3.10.0","9.3.11.0","9.3.13.0","9.3.14.0","9.3.15.0","9.4.0.0","9.4.1.0","9.4.2.0","9.4.3.0","9.4.4.0","9.4.5.0","9.4.6.0","9.4.7.0","9.4.8.0","head"],"truffleruby":["19.3.0","19.3.1","20.0.0","20.1.0","20.2.0","20.3.0","21.0.0","21.1.0","21.2.0","21.2.0.1","21.3.0","22.0.0.2","22.1.0","22.2.0","22.3.0","22.3.1","23.0.0-preview1","23.0.0","23.1.0","23.1.1","23.1.2","24.0.0","24.0.1","24.0.2","head"],"truffleruby+graalvm":["21.2.0","21.3.0","22.0.0.2","22.1.0","22.2.0","22.3.0","22.3.1","23.0.0-preview1","23.0.0","23.1.0","23.1.1","23.1.2","24.0.0","24.0.1","24.0.2","head"]}'); module.exports = JSON.parse('{"ruby":["1.9.3-p551","2.0.0-p648","2.1.9","2.2.10","2.3.0","2.3.1","2.3.2","2.3.3","2.3.4","2.3.5","2.3.6","2.3.7","2.3.8","2.4.0","2.4.1","2.4.2","2.4.3","2.4.4","2.4.5","2.4.6","2.4.7","2.4.9","2.4.10","2.5.0","2.5.1","2.5.2","2.5.3","2.5.4","2.5.5","2.5.6","2.5.7","2.5.8","2.5.9","2.6.0","2.6.1","2.6.2","2.6.3","2.6.4","2.6.5","2.6.6","2.6.7","2.6.8","2.6.9","2.6.10","2.7.0","2.7.1","2.7.2","2.7.3","2.7.4","2.7.5","2.7.6","2.7.7","2.7.8","3.0.0-preview1","3.0.0-preview2","3.0.0-rc1","3.0.0","3.0.1","3.0.2","3.0.3","3.0.4","3.0.5","3.0.6","3.0.7","3.1.0-preview1","3.1.0","3.1.1","3.1.2","3.1.3","3.1.4","3.1.5","3.1.6","3.2.0-preview1","3.2.0-preview2","3.2.0-preview3","3.2.0-rc1","3.2.0","3.2.1","3.2.2","3.2.3","3.2.4","3.2.5","3.3.0-preview1","3.3.0-preview2","3.3.0-preview3","3.3.0-rc1","3.3.0","3.3.1","3.3.2","3.3.3","3.3.4","3.3.5","3.4.0-preview1","3.4.0-preview2","head","debug","asan"],"jruby":["9.1.17.0","9.2.9.0","9.2.10.0","9.2.11.0","9.2.11.1","9.2.12.0","9.2.13.0","9.2.14.0","9.2.15.0","9.2.16.0","9.2.17.0","9.2.18.0","9.2.19.0","9.2.20.0","9.2.20.1","9.2.21.0","9.3.0.0","9.3.1.0","9.3.2.0","9.3.3.0","9.3.4.0","9.3.6.0","9.3.7.0","9.3.8.0","9.3.9.0","9.3.10.0","9.3.11.0","9.3.13.0","9.3.14.0","9.3.15.0","9.4.0.0","9.4.1.0","9.4.2.0","9.4.3.0","9.4.4.0","9.4.5.0","9.4.6.0","9.4.7.0","9.4.8.0","head"],"truffleruby":["19.3.0","19.3.1","20.0.0","20.1.0","20.2.0","20.3.0","21.0.0","21.1.0","21.2.0","21.2.0.1","21.3.0","22.0.0.2","22.1.0","22.2.0","22.3.0","22.3.1","23.0.0-preview1","23.0.0","23.1.0","23.1.1","23.1.2","24.0.0","24.0.1","24.0.2","24.1.0","head"],"truffleruby+graalvm":["21.2.0","21.3.0","22.0.0.2","22.1.0","22.2.0","22.3.0","22.3.1","23.0.0-preview1","23.0.0","23.1.0","23.1.1","23.1.2","24.0.0","24.0.1","24.0.2","24.1.0","head"]}');
/***/ }), /***/ }),
@@ -65737,7 +65726,7 @@ const fs = __nccwpck_require__(7147)
const path = __nccwpck_require__(1017) const path = __nccwpck_require__(1017)
const core = __nccwpck_require__(2186) const core = __nccwpck_require__(2186)
const exec = __nccwpck_require__(1514) const exec = __nccwpck_require__(1514)
const common = __nccwpck_require__(3143) const common = __nccwpck_require__(4717)
const rubygems = __nccwpck_require__(160) const rubygems = __nccwpck_require__(160)
const bundler = __nccwpck_require__(1641) const bundler = __nccwpck_require__(1641)
@@ -65924,6 +65913,8 @@ function validateRubyEngineAndVersion(platform, engineVersions, engine, parsedVe
- { os: macos-13, ruby: '2.5' } - { os: macos-13, ruby: '2.5' }
But of course you should consider dropping support for these long-EOL Rubies, which cannot even be built on recent macOS machines.`) But of course you should consider dropping support for these long-EOL Rubies, which cannot even be built on recent macOS machines.`)
} else if (engine === 'truffleruby' && platform.startsWith('windows')) {
throw new Error('TruffleRuby does not currently support Windows.')
} }
return version return version
+2
View File
@@ -190,6 +190,8 @@ function validateRubyEngineAndVersion(platform, engineVersions, engine, parsedVe
- { os: macos-13, ruby: '2.5' } - { os: macos-13, ruby: '2.5' }
But of course you should consider dropping support for these long-EOL Rubies, which cannot even be built on recent macOS machines.`) But of course you should consider dropping support for these long-EOL Rubies, which cannot even be built on recent macOS machines.`)
} else if (engine === 'truffleruby' && platform.startsWith('windows')) {
throw new Error('TruffleRuby does not currently support Windows.')
} }
return version return version
-1
View File
@@ -28,7 +28,6 @@
"@actions/io": "^1.1.2", "@actions/io": "^1.1.2",
"@actions/tool-cache": "^2", "@actions/tool-cache": "^2",
"linux-os-info": "^2.0.0", "linux-os-info": "^2.0.0",
"macos-release": "^3.1.0",
"semver": "^7.3.7" "semver": "^7.3.7"
}, },
"devDependencies": { "devDependencies": {
+4 -4
View File
@@ -13,8 +13,8 @@
"3.1.0-preview1", "3.1.0", "3.1.1", "3.1.2", "3.1.3", "3.1.4", "3.1.5", "3.1.6", "3.1.0-preview1", "3.1.0", "3.1.1", "3.1.2", "3.1.3", "3.1.4", "3.1.5", "3.1.6",
"3.2.0-preview1", "3.2.0-preview2", "3.2.0-preview3", "3.2.0-rc1", "3.2.0", "3.2.1", "3.2.2", "3.2.3", "3.2.4", "3.2.5", "3.2.0-preview1", "3.2.0-preview2", "3.2.0-preview3", "3.2.0-rc1", "3.2.0", "3.2.1", "3.2.2", "3.2.3", "3.2.4", "3.2.5",
"3.3.0-preview1", "3.3.0-preview2", "3.3.0-preview3", "3.3.0-rc1", "3.3.0", "3.3.1", "3.3.2", "3.3.3", "3.3.4", "3.3.5", "3.3.0-preview1", "3.3.0-preview2", "3.3.0-preview3", "3.3.0-rc1", "3.3.0", "3.3.1", "3.3.2", "3.3.3", "3.3.4", "3.3.5",
"3.4.0-preview1", "3.4.0-preview1", "3.4.0-preview2",
"head", "debug" "head", "debug", "asan"
], ],
"jruby": [ "jruby": [
"9.1.17.0", "9.1.17.0",
@@ -29,14 +29,14 @@
"21.0.0", "21.1.0", "21.2.0", "21.2.0.1", "21.3.0", "21.0.0", "21.1.0", "21.2.0", "21.2.0.1", "21.3.0",
"22.0.0.2", "22.1.0", "22.2.0", "22.3.0", "22.3.1", "22.0.0.2", "22.1.0", "22.2.0", "22.3.0", "22.3.1",
"23.0.0-preview1", "23.0.0", "23.1.0", "23.1.1", "23.1.2", "23.0.0-preview1", "23.0.0", "23.1.0", "23.1.1", "23.1.2",
"24.0.0", "24.0.1", "24.0.2", "24.0.0", "24.0.1", "24.0.2", "24.1.0",
"head" "head"
], ],
"truffleruby+graalvm": [ "truffleruby+graalvm": [
"21.2.0", "21.3.0", "21.2.0", "21.3.0",
"22.0.0.2", "22.1.0", "22.2.0", "22.3.0", "22.3.1", "22.0.0.2", "22.1.0", "22.2.0", "22.3.0", "22.3.1",
"23.0.0-preview1", "23.0.0", "23.1.0", "23.1.1", "23.1.2", "23.0.0-preview1", "23.0.0", "23.1.0", "23.1.1", "23.1.2",
"24.0.0", "24.0.1", "24.0.2", "24.0.0", "24.0.1", "24.0.2", "24.1.0",
"head" "head"
] ]
} }
Generated
-5
View File
@@ -281,11 +281,6 @@ lru-cache@^6.0.0:
dependencies: dependencies:
yallist "^4.0.0" yallist "^4.0.0"
macos-release@^3.1.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-3.2.0.tgz#dcee82b6a4932971b1538dbf6f3aabc4a903b613"
integrity sha512-fSErXALFNsnowREYZ49XCdOHF8wOPWuFOGQrAhP7x5J/BqQv+B02cNsTykGpDgRVx43EKg++6ANmTaGTtW+hUA==
mime-db@1.52.0: mime-db@1.52.0:
version "1.52.0" version "1.52.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"