Compare commits

..
35 Commits
Author SHA1 Message Date
ruby-builder-bot f41e084df8 Add truffleruby-24.2.1,truffleruby+graalvm-24.2.1 2025-04-30 21:13:17 +02:00
Benoit Daloze afda160499 Improve exclude reasons 2025-04-26 12:52:51 +02:00
Benoit Daloze e69d1ea5ec Update README example 2025-04-26 12:52:44 +02:00
なつき dffc446db9 Support windows-11-arm 2025-04-26 12:43:27 +02:00
Benoit Daloze 2e007403fc Remove support for ubuntu-20.04
* It's gone: https://github.com/actions/runner-images/issues/11101
2025-04-24 20:45:25 +02:00
Benoit Daloze 72002957a7 Update to Rails 7.2 and 8 in tests
* Rails <= 6 has a known issue with logger and the workaround causes CI failures:
  https://github.com/ruby/setup-ruby/actions/runs/14641011806/job/41083255632
2025-04-24 16:28:30 +02:00
Benoit Daloze bc1d550354 Update testFixedBundlerVersionForOldRuby to 2.3 since 2.2 is known to be broken with recent C compilers
* See https://github.com/ruby/setup-ruby/issues/496
2025-04-24 13:55:27 +02:00
Benoit Daloze bcde69c47c Update README.md 2025-04-18 18:54:39 +08:00
Benoit Daloze eedae55b0a Make it clear not all combinations are supported 2025-04-18 18:51:02 +08:00
ruby-builder-bot ca041f971d Add jruby-10.0.0.0 2025-04-18 16:52:02 +08:00
ruby-builder-bot 1eb8bd2dc1 Add ruby-3.5.0-preview1 2025-04-18 16:36:32 +08:00
Benoit Daloze fc67f6de0a Update remaining 20.04 tests to 22.04 2025-04-18 16:35:22 +08:00
Benoit Daloze 5ea2b47b47 Stop testing on ubuntu-20.04 since it's gone 2025-04-18 15:49:38 +08:00
ruby-builder-bot fb404b9557 Update CRuby releases on Windows 2025-04-17 21:24:18 +08:00
ruby-builder-bot d8d83c3960 Add ruby-3.4.3 2025-04-15 12:08:53 +08:00
Hiroshi SHIBATA e5ac7b085f Merge pull request #737 from ruby-builder-bot/windows
Update CRuby releases on Windows
2025-04-14 09:12:29 +09:00
Hiroshi SHIBATA cad744e24a Merge pull request #736 from ruby-builder-bot/ruby-3.3.8
Add ruby-3.3.8
2025-04-14 09:11:49 +09:00
ruby-builder-bot ba79f3f74f Update CRuby releases on Windows 2025-04-10 19:00:37 +00:00
ruby-builder-bot e9454362e9 Add ruby-3.3.8 2025-04-09 19:09:47 +00:00
ruby-builder-bot 354a1ad156 Update CRuby releases on Windows 2025-03-27 11:06:56 +01:00
ruby-builder-bot 7886c66535 Add ruby-3.1.7,ruby-3.2.8 2025-03-26 10:27:57 +01:00
ruby-builder-bot 1a615958ad Add truffleruby-24.2.0,truffleruby+graalvm-24.2.0 2025-03-18 14:16:45 +01:00
Benoit Daloze 922ebc4c52 Use $JAVA_HOME/bin/java for the check 2025-03-15 12:36:12 +01:00
Charles Oliver Nutter 6c79f721fa Test successful JRuby start without using launcher
Native launcher appears to hang on GHA when the JDK version is too
old for JRuby 10. This bypasses it and should be a bit lighter. It
will also avoid any variability in the launcher used, since Unixes
and Windows already use different executables.
2025-03-13 20:32:49 +01:00
Charles Oliver Nutter e17c5ea7eb Handle exec error
Apparently this exec errors when the subprocess fails rather than
returning an error code. This causes the whole setup process to
terminate. This patch catches the error and uses that to indicate
failure to launch.
2025-03-13 20:32:49 +01:00
Charles Oliver Nutter f0a4d6bddd Switch JAVA_HOME to 21 for JRuby (#721)
* JRuby 10 requires Java 21. Since the previous default was 17 and all JRuby releases should work fine on 21, we do this for all JRuby installs.
* Implements #718
2025-03-12 21:19:38 +01:00
Benoit Daloze bbda85882f Fix .tool-versions and mise.toml tests 2025-03-11 12:24:54 +01:00
Benoit Daloze 30755d8bf4 Cleanup matching for .tool-versions and mise and add tests for .ruby-version and .tool-versions 2025-03-11 12:16:17 +01:00
Karibash 28233a011b bugfix: Fix bug that version cannot be parsed in .tool-versions 2025-03-11 11:59:59 +01:00
Joel Tannas 277ba2a127 deal with multiple versions in .tool-versions 2025-03-05 20:06:37 +01:00
Ivo Anjo 04c2e2b8e8 Expose 3.4-asan Ruby builds from ruby-dev-builder
**What does this PR do?**

This PR provides the final piece of the puzzle to fix #682: now that
ruby-dev-builder is building `3.4-asan` Rubies since
https://github.com/ruby/ruby-dev-builder/pull/15, we can make them
available for use.

**Motivation:**

At Datadog, we're using ASan builds to check for issues
[in our library](https://github.com/datadog/dd-trace-rb),
and having a `3.4-asan` build improves the experience of having
these checks be a required CI step. Using the ASan builds built from
ruby-head means our CI could break because of unrelated issues/changes
from ruby-head.

**Additional Notes:**

`yarn` was trying really hard to update a bunch of things, which
generated A LOT of diff noise. I've manually pared them down just
to the actual changes related to adding the new variant so the
diff makes a bit more sense.

**How to test the change?**

I've already tested this in
https://github.com/DataDog/dd-trace-rb/actions/runs/13392865620/job/37696781848
and it seems to be working fine!
2025-02-24 22:02:53 +01:00
Benoit Daloze 88a8155095 Make targetRubyVersion() more complete 2025-02-22 17:21:43 +01:00
Benoit Daloze 3ad45c51bf Improve script for listing versions 2025-02-22 17:11:22 +01:00
ruby-builder-bot 32110d4e31 Update CRuby releases on Windows 2025-02-15 22:53:04 +01:00
ruby-builder-bot 28d088d34a Add ruby-3.4.2 2025-02-15 14:05:01 +01:00
13 changed files with 549 additions and 179 deletions
+57 -12
View File
@@ -17,7 +17,7 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: [ ubuntu-20.04, ubuntu-22.04, ubuntu-24.04, ubuntu-22.04-arm, ubuntu-24.04-arm, macos-13, macos-14, macos-15, windows-2019, windows-2022, windows-2025 ] os: [ ubuntu-22.04, ubuntu-24.04, ubuntu-22.04-arm, ubuntu-24.04-arm, macos-13, macos-14, macos-15, windows-2019, windows-2022, windows-2025, windows-11-arm ]
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', '3.4', 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,
@@ -34,6 +34,7 @@ jobs:
- { os: windows-2025, ruby: mswin } - { os: windows-2025, ruby: mswin }
- { os: windows-2025, ruby: ucrt } - { os: windows-2025, ruby: ucrt }
- { os: ubuntu-24.04, ruby: asan } - { os: ubuntu-24.04, ruby: asan }
- { os: ubuntu-24.04, ruby: 3.4-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' }
@@ -63,25 +64,44 @@ jobs:
- { os: ubuntu-24.04-arm, ruby: '2.0' } - { os: ubuntu-24.04-arm, ruby: '2.0' }
- { os: ubuntu-24.04-arm, ruby: '2.1' } - { os: ubuntu-24.04-arm, ruby: '2.1' }
- { os: ubuntu-24.04-arm, ruby: '2.2' } - { os: ubuntu-24.04-arm, ruby: '2.2' }
# Windows (note: previews are not available on Windows) # RubyInstaller windows-arm64 builds only exist for Ruby 3.4+
- { os: windows-11-arm, ruby: '2.0' }
- { os: windows-11-arm, ruby: '2.1' }
- { os: windows-11-arm, ruby: '2.2' }
- { os: windows-11-arm, ruby: '2.3' }
- { os: windows-11-arm, ruby: '2.4' }
- { os: windows-11-arm, ruby: '2.5' }
- { os: windows-11-arm, ruby: '2.6' }
- { os: windows-11-arm, ruby: '2.7' }
- { os: windows-11-arm, ruby: '3.0' }
- { os: windows-11-arm, ruby: '3.1' }
- { os: windows-11-arm, ruby: '3.2' }
- { os: windows-11-arm, ruby: '3.3' }
# https://github.com/ruby/jruby-dev-builder/pull/14#issuecomment-2829841247
- { os: windows-11-arm, ruby: jruby }
- { os: windows-11-arm, ruby: jruby-head }
# RubyInstaller has no 64-bit builds of 1.9 on Windows
- { os: windows-2019, ruby: '1.9' } - { os: windows-2019, ruby: '1.9' }
- { os: windows-2022, ruby: '1.9' } - { os: windows-2022, ruby: '1.9' }
- { os: windows-2025, ruby: '1.9' } - { os: windows-2025, ruby: '1.9' }
- { os: windows-2019, ruby: debug } - { os: windows-11-arm, ruby: '1.9' }
- { os: windows-2022, ruby: debug } # TruffleRuby does not support Windows
- { os: windows-2025, ruby: debug }
- { os: windows-2019, ruby: truffleruby } - { os: windows-2019, ruby: truffleruby }
- { os: windows-2022, ruby: truffleruby } - { os: windows-2022, ruby: truffleruby }
- { os: windows-2025, ruby: truffleruby } - { os: windows-2025, ruby: truffleruby }
- { os: windows-11-arm, ruby: truffleruby }
- { os: windows-2019, ruby: truffleruby-head } - { os: windows-2019, ruby: truffleruby-head }
- { os: windows-2022, ruby: truffleruby-head } - { os: windows-2022, ruby: truffleruby-head }
- { os: windows-2025, ruby: truffleruby-head } - { os: windows-2025, ruby: truffleruby-head }
- { os: windows-11-arm, ruby: truffleruby-head }
- { os: windows-2019, ruby: truffleruby+graalvm } - { os: windows-2019, ruby: truffleruby+graalvm }
- { os: windows-2022, ruby: truffleruby+graalvm } - { os: windows-2022, ruby: truffleruby+graalvm }
- { os: windows-2025, ruby: truffleruby+graalvm } - { os: windows-2025, ruby: truffleruby+graalvm }
- { os: windows-11-arm, ruby: truffleruby+graalvm }
- { os: windows-2019, ruby: truffleruby+graalvm-head } - { os: windows-2019, ruby: truffleruby+graalvm-head }
- { os: windows-2022, ruby: truffleruby+graalvm-head } - { os: windows-2022, ruby: truffleruby+graalvm-head }
- { os: windows-2025, ruby: truffleruby+graalvm-head } - { os: windows-2025, ruby: truffleruby+graalvm-head }
- { os: windows-11-arm, ruby: truffleruby+graalvm-head }
name: ${{ matrix.os }} ${{ matrix.ruby }} name: ${{ matrix.os }} ${{ matrix.ruby }}
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
@@ -189,6 +209,33 @@ jobs:
if: startsWith(matrix.os, 'windows') && matrix.ruby == 'jruby' if: startsWith(matrix.os, 'windows') && matrix.ruby == 'jruby'
run: gem install sassc run: gem install sassc
testDotRubyVersion:
name: "Test .ruby-version"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: echo "ruby-3.4.0" > .ruby-version
- uses: ./
- run: ruby -v | grep -F "ruby 3.4.0"
testToolVersions:
name: "Test .tool-versions"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: echo -e "nodejs 16.0.0\nruby 3.4.0" > .tool-versions
- uses: ./
- run: ruby -v | grep -F "ruby 3.4.0"
testMise:
name: "Test mise.toml"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: echo -e "[tools]\nnode = '18'\nruby = '3.4.0'" > mise.toml
- uses: ./
- run: ruby -v | grep -F "ruby 3.4.0"
testNoGemfile: testNoGemfile:
name: "Test with no Gemfile" name: "Test with no Gemfile"
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -258,12 +305,12 @@ jobs:
testFixedBundlerVersionForOldRuby: testFixedBundlerVersionForOldRuby:
name: "Test bundler: 1.x for old Ruby" name: "Test bundler: 1.x for old Ruby"
runs-on: ubuntu-20.04 runs-on: ubuntu-22.04
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: ./ - uses: ./
with: with:
ruby-version: '2.2' ruby-version: '2.3'
bundler: 1.16.6 bundler: 1.16.6
- run: bundle --version | grep -F "1.16.6" # And not 1.17.x from ~> 1 - run: bundle --version | grep -F "1.16.6" # And not 1.17.x from ~> 1
@@ -341,7 +388,7 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
gemfile: [ rails5, rails6 ] gemfile: [ rails7, rails8 ]
name: "Test with ${{ matrix.gemfile }} gemfile" name: "Test with ${{ matrix.gemfile }} gemfile"
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
@@ -350,11 +397,9 @@ jobs:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: ./ - uses: ./
with: with:
ruby-version: '2.6' ruby-version: '3.2'
bundler-cache: true bundler-cache: true
- run: bundle exec rails --version - run: bundle exec rails --version
env:
RUBYOPT: '-rlogger' # Rails 6 is missing a require 'logger' in active_support/logger_thread_safe_level.rb
testTruffleRubyNokogiri: testTruffleRubyNokogiri:
name: "Test installing a Gemfile with nokogiri on TruffleRuby" name: "Test installing a Gemfile with nokogiri on TruffleRuby"
@@ -383,7 +428,7 @@ jobs:
run: ruby -e "abort if File.exist?('C:/msys64/mingw64/bin/gcc.exe')" run: ruby -e "abort if File.exist?('C:/msys64/mingw64/bin/gcc.exe')"
lint: lint:
runs-on: ubuntu-20.04 runs-on: ubuntu-22.04
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- run: yarn install - run: yarn install
+15 -10
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.1, 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.5.0-preview1, head, debug, mingw, mswin, ucrt |
| `jruby` | 9.1.17.0 - 9.4.12.0, head | | `jruby` | 9.1.17.0 - 10.0.0.0, head |
| `truffleruby` | 19.3.0 - 24.1.2, head | | `truffleruby` | 19.3.0 - 24.2.1, head |
| `truffleruby+graalvm` | 21.2.0 - 24.1.2, head | | `truffleruby+graalvm` | 21.2.0 - 24.2.1, 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`).
@@ -26,6 +26,9 @@ This action currently supports these versions of MRI, JRuby and TruffleRuby:
Native extensions are automatically compiled with AddressSanitizer when using `ruby-asan`. Native extensions are automatically compiled with AddressSanitizer when using `ruby-asan`.
`ruby-asan` is currently only available on `ubuntu-24.04`. `ruby-asan` is currently only available on `ubuntu-24.04`.
`ruby-3.4-asan` is similar to `ruby-asan` but built from the latest stable 3.4 release tag.
Like `ruby-asan`, it's currently only available on `ubuntu-24.04`.
Regarding Windows ruby master builds, `mingw` is a MSYS2/MinGW build, `head` & `ucrt` are MSYS2/UCRT64 Regarding Windows ruby master builds, `mingw` is a MSYS2/MinGW build, `head` & `ucrt` are MSYS2/UCRT64
builds, and `mswin` is a MSVC/VS 2022 build. builds, and `mswin` is a MSVC/VS 2022 build.
@@ -46,9 +49,14 @@ The action works on these [GitHub-hosted runners](https://docs.github.com/en/act
| Operating System | Supported | | Operating System | Supported |
| ---------------- | --------- | | ---------------- | --------- |
| Ubuntu | `ubuntu-20.04`, `ubuntu-22.04`, `ubuntu-24.04`, `ubuntu-22.04-arm`, `ubuntu-24.04-arm` | | Ubuntu | `ubuntu-22.04`, `ubuntu-24.04`, `ubuntu-22.04-arm`, `ubuntu-24.04-arm` |
| macOS | `macos-13` and newer versions | | macOS | `macos-13` and newer versions |
| Windows | `windows-2019`, `windows-2022` | | Windows | `windows-2019`, `windows-2022`, `windows-2025`, `windows-11-arm` |
Not all combinations of runner images and versions are supported.
The list of available Ruby versions can be seen in [ruby-builder-versions.json](ruby-builder-versions.json) for Ubuntu and macOS
(although some combinations are not available, see [the full list](https://github.com/ruby/ruby-builder/releases/tag/toolcache))
and in [windows-versions.json](windows-versions.json) for Windows.
The prebuilt releases are generated by [ruby-builder](https://github.com/ruby/ruby-builder) The prebuilt releases are generated by [ruby-builder](https://github.com/ruby/ruby-builder)
and on Windows by [RubyInstaller2](https://github.com/oneclick/rubyinstaller2). and on Windows by [RubyInstaller2](https://github.com/oneclick/rubyinstaller2).
@@ -56,9 +64,6 @@ The `mingw`, `ucrt` and `mswin` builds are generated by [ruby-loco](https://gith
`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` and `truffleruby+graalvm-head` are 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).
The full list of available Ruby versions can be seen in [ruby-builder-versions.json](ruby-builder-versions.json) for Ubuntu and macOS
(although some combinations are not available, see [the full list](https://github.com/ruby/ruby-builder/releases/tag/toolcache))
and in [windows-versions.json](windows-versions.json) for Windows.
## Usage ## Usage
@@ -114,7 +119,7 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
gemfile: [ rails5, rails6 ] gemfile: [ rails7, rails8 ]
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps env: # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile
+46 -4
View File
@@ -6,6 +6,7 @@ const stream = require('stream')
const crypto = require('crypto') const crypto = require('crypto')
const core = require('@actions/core') const core = require('@actions/core')
const tc = require('@actions/tool-cache') const tc = require('@actions/tool-cache')
const exec = require('@actions/exec')
const { performance } = require('perf_hooks') const { performance } = require('perf_hooks')
const linuxOSInfo = require('linux-os-info') const linuxOSInfo = require('linux-os-info')
@@ -66,7 +67,8 @@ export async function time(name, block) {
} }
export function isHeadVersion(rubyVersion) { export function isHeadVersion(rubyVersion) {
return ['head', 'debug', 'mingw', 'mswin', 'ucrt', 'asan'].includes(rubyVersion) // 3.4-asan counts as "head" because the version cannot be selected -- you can only get whatever's latest
return ['head', 'debug', 'mingw', 'mswin', 'ucrt', 'asan', '3.4-asan'].includes(rubyVersion)
} }
export function isStableVersion(engine, rubyVersion) { export function isStableVersion(engine, rubyVersion) {
@@ -128,6 +130,8 @@ export function targetRubyVersion(engine, rubyVersion) {
return 2.5 return 2.5
} else if (version === 9.3) { } else if (version === 9.3) {
return 2.6 return 2.6
} else if (version === 9.4) {
return 3.1
} }
} else if (engine.startsWith('truffleruby')) { } else if (engine.startsWith('truffleruby')) {
if (version < 21.0) { if (version < 21.0) {
@@ -136,6 +140,10 @@ export function targetRubyVersion(engine, rubyVersion) {
return 2.7 return 2.7
} else if (version < 23.0) { } else if (version < 23.0) {
return 3.0 return 3.0
} else if (version < 23.1) {
return 3.1
} else if (version < 24.2) {
return 3.2
} }
} }
@@ -163,7 +171,6 @@ export async function hashFile(file) {
// macos is not listed explicitly, see below // macos is not listed explicitly, see below
const GitHubHostedPlatforms = [ const GitHubHostedPlatforms = [
'ubuntu-20.04-x64',
'ubuntu-22.04-x64', 'ubuntu-22.04-x64',
'ubuntu-22.04-arm64', 'ubuntu-22.04-arm64',
'ubuntu-24.04-x64', 'ubuntu-24.04-x64',
@@ -171,6 +178,7 @@ const GitHubHostedPlatforms = [
'windows-2019-x64', 'windows-2019-x64',
'windows-2022-x64', 'windows-2022-x64',
'windows-2025-x64', 'windows-2025-x64',
'windows-11-arm64'
] ]
// Precisely: whether we have builds for that platform and there are GitHub-hosted runners to test it // Precisely: whether we have builds for that platform and there are GitHub-hosted runners to test it
@@ -263,7 +271,7 @@ export function getOSNameVersionArch() {
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|Enterprise)/)
if (match) { if (match) {
return match[1] return match[1]
} else { } else {
@@ -379,7 +387,9 @@ export function setupPath(newPathEntries) {
const windowsToolchain = core.getInput('windows-toolchain') const windowsToolchain = core.getInput('windows-toolchain')
if (windows && windowsToolchain !== 'none') { if (windows && windowsToolchain !== 'none') {
// main Ruby dll determines whether mingw or ucrt build // main Ruby dll determines whether mingw or ucrt build
msys2Type = rubyIsUCRT(newPathEntries[0]) ? 'ucrt64' : 'mingw64' msys2Type = os.arch() === 'arm64'
? 'clangarm64'
: rubyIsUCRT(newPathEntries[0]) ? 'ucrt64' : 'mingw64'
// add MSYS2 in path for all Rubies on Windows, as it provides a better bash shell and a native toolchain // add MSYS2 in path for all Rubies on Windows, as it provides a better bash shell and a native toolchain
const msys2 = [`C:\\msys64\\${msys2Type}\\bin`, 'C:\\msys64\\usr\\bin'] const msys2 = [`C:\\msys64\\${msys2Type}\\bin`, 'C:\\msys64\\usr\\bin']
@@ -396,3 +406,35 @@ export function setupPath(newPathEntries) {
core.addPath(newPath.join(path.delimiter)) core.addPath(newPath.join(path.delimiter))
return msys2Type return msys2Type
} }
export async function setupJavaHome(rubyPrefix) {
await measure("Modifying JAVA_HOME for JRuby", async () => {
console.log("attempting to run with existing JAVA_HOME")
const javaHome = process.env['JAVA_HOME']
let java = javaHome ? path.join(javaHome, 'bin/java') : 'java'
let ret = await exec.exec(java, ['-jar', path.join(rubyPrefix, 'lib/jruby.jar'), '--version'], {ignoreReturnCode: true})
if (ret === 0) {
console.log("JRuby successfully starts, using existing JAVA_HOME")
} else {
console.log("JRuby failed to start, try Java 21 envs")
let arch = os.arch()
if (arch === "x64" || os.platform() !== "darwin") {
arch = "X64"
}
let newHomeVar = `JAVA_HOME_21_${arch}`
let newHome = process.env[newHomeVar]
if (newHome === "undefined") {
throw new Error(`JAVA_HOME is not Java 21+ needed for JRuby and \$${newHomeVar} is not defined`)
}
console.log(`Setting JAVA_HOME to ${newHomeVar} path ${newHome}`)
core.exportVariable("JAVA_HOME", newHome)
}
})
}
Generated Vendored
+83 -25
View File
File diff suppressed because one or more lines are too long
@@ -1,3 +1,3 @@
source "https://rubygems.org" source "https://rubygems.org"
gem "rails", "~> 5.2.0" gem "rails", "~> 7.2.0"
@@ -1,3 +1,3 @@
source "https://rubygems.org" source "https://rubygems.org"
gem "rails", "~> 6.0.0" gem "rails", "~> 8.0.0"
+27 -12
View File
@@ -9,25 +9,40 @@ entries = YAML.load(Net::HTTP.get(URI(url)), symbolize_names: true)
versions = entries.select { |entry| versions = entries.select { |entry|
entry[:filetype] == 'rubyinstaller7z' and entry[:filetype] == 'rubyinstaller7z' and
entry[:name].include?('(x64)') entry[:name].include?('(x64)') || entry[:name].include?('(arm)')
}.group_by { |entry| }.group_by { |entry|
entry[:name][/Ruby (\d+\.\d+\.\d+)/, 1] entry[:name][/Ruby (\d+\.\d+\.\d+)/, 1]
}.map { |version, builds| }.map { |version, builds_by_version|
unless builds.sort_by { |build| build[:name] } == builds.reverse builds = builds_by_version.group_by { |entry|
raise "not sorted as expected for #{version}" entry[:name][/\((x64|arm)\)/, 1]
end }.map { |arch, builds_by_arch|
[version, builds.first] arch = 'arm64' if arch == 'arm'
unless builds_by_arch.sort_by { |build| build[:name] } == builds_by_arch.reverse
raise "not sorted as expected for #{version}"
end
[arch, builds_by_arch.first[:href]]
}.sort_by { |arch, builds|
arch
}.to_h
[version, builds]
}.sort_by { |version, entry| }.sort_by { |version, entry|
Gem::Version.new(version) Gem::Version.new(version)
}.select { |version, entry| }.select { |version, entry|
min_requirements.any? { |req| req.satisfied_by?(Gem::Version.new(version)) } min_requirements.any? { |req| req.satisfied_by?(Gem::Version.new(version)) }
}.map { |version, entry|
[version, entry[:href]]
}.to_h }.to_h
versions['head'] = 'https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-head-x64.7z' versions['head'] = {
versions['mingw'] = 'https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mingw.7z' 'arm64': 'https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-head-arm.7z',
versions['mswin'] = 'https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mswin.7z' 'x64': 'https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-head-x64.7z'
versions['ucrt'] = 'https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-ucrt.7z' }
versions['mingw'] = {
'x64': 'https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mingw.7z'
}
versions['mswin'] = {
'x64': 'https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mswin.7z'
}
versions['ucrt'] = {
'x64': 'https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-ucrt.7z'
}
File.binwrite 'windows-versions.json', "#{JSON.pretty_generate(versions)}\n" File.binwrite 'windows-versions.json', "#{JSON.pretty_generate(versions)}\n"
+6 -4
View File
@@ -129,13 +129,15 @@ function parseRubyEngineAndVersion(rubyVersion) {
console.log(`Using ${rubyVersion} as input from file .ruby-version`) console.log(`Using ${rubyVersion} as input from file .ruby-version`)
} else if (rubyVersion === '.tool-versions') { // Read from .tool-versions } else if (rubyVersion === '.tool-versions') { // Read from .tool-versions
const toolVersions = fs.readFileSync('.tool-versions', 'utf8').trim() const toolVersions = fs.readFileSync('.tool-versions', 'utf8').trim()
const rubyLine = toolVersions.split(/\r?\n/).filter(e => /^ruby\s/.test(e))[0] const regexp = /^ruby\s+(\S+)/
rubyVersion = rubyLine.match(/^ruby\s+(.+)$/)[1] const rubyLine = toolVersions.split(/\r?\n/).filter(e => regexp.test(e))[0]
rubyVersion = rubyLine.match(regexp)[1]
console.log(`Using ${rubyVersion} as input from file .tool-versions`) console.log(`Using ${rubyVersion} as input from file .tool-versions`)
} else if (rubyVersion === 'mise.toml') { // Read from mise.toml } else if (rubyVersion === 'mise.toml') { // Read from mise.toml
const toolVersions = fs.readFileSync('mise.toml', 'utf8').trim() const toolVersions = fs.readFileSync('mise.toml', 'utf8').trim()
const rubyLine = toolVersions.split(/\r?\n/).filter(e => /^ruby\s*=\s*/.test(e))[0] const regexp = /^ruby\s*=\s*['"](.+)['"]$/
rubyVersion = rubyLine.match(/^ruby\s*=\s*['"](.+)['"]$/)[1] const rubyLine = toolVersions.split(/\r?\n/).filter(e => regexp.test(e))[0]
rubyVersion = rubyLine.match(regexp)[1]
console.log(`Using ${rubyVersion} as input from file mise.toml`) console.log(`Using ${rubyVersion} as input from file mise.toml`)
} }
+9 -7
View File
@@ -10,17 +10,19 @@
"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.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", "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.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.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.7",
"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.6", "3.2.7", "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.6", "3.2.7", "3.2.8",
"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.6", "3.3.7", "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.6", "3.3.7", "3.3.8",
"3.4.0-preview1", "3.4.0-preview2", "3.4.0-rc1", "3.4.0", "3.4.1", "3.4.0-preview1", "3.4.0-preview2", "3.4.0-rc1", "3.4.0", "3.4.1", "3.4.2", "3.4.3",
"head", "debug", "asan" "3.5.0-preview1",
"head", "debug", "asan", "3.4-asan"
], ],
"jruby": [ "jruby": [
"9.1.17.0", "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.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.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", "9.4.9.0", "9.4.10.0", "9.4.11.0", "9.4.12.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", "9.4.9.0", "9.4.10.0", "9.4.11.0", "9.4.12.0",
"10.0.0.0",
"head" "head"
], ],
"truffleruby": [ "truffleruby": [
@@ -29,14 +31,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.1.0", "24.1.1", "24.1.2", "24.0.0", "24.0.1", "24.0.2", "24.1.0", "24.1.1", "24.1.2", "24.2.0", "24.2.1",
"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.1.0", "24.1.1", "24.1.2", "24.0.0", "24.0.1", "24.0.2", "24.1.0", "24.1.1", "24.1.2", "24.2.0", "24.2.1",
"head" "head"
] ]
} }
+11 -2
View File
@@ -54,6 +54,11 @@ export async function install(platform, engine, version) {
await downloadAndExtract(platform, engine, version, rubyPrefix) await downloadAndExtract(platform, engine, version, rubyPrefix)
} }
// Ensure JRuby has minimum Java version to run
if (engine === "jruby") {
await common.setupJavaHome(rubyPrefix)
}
return rubyPrefix return rubyPrefix
} }
@@ -92,8 +97,12 @@ async function downloadAndExtract(platform, engine, version, rubyPrefix) {
function getDownloadURL(platform, engine, version) { function getDownloadURL(platform, engine, version) {
let builderPlatform = null let builderPlatform = null
if (platform.startsWith('windows-') && os.arch() === 'x64') { if (platform.startsWith('windows-')) {
builderPlatform = 'windows-latest' if (os.arch() === 'x64') {
builderPlatform = 'windows-latest'
} else if (os.arch() === 'arm64') {
builderPlatform = 'windows-arm64'
}
} else if (platform.startsWith('macos-')) { } else if (platform.startsWith('macos-')) {
if (os.arch() === 'x64') { if (os.arch() === 'x64') {
builderPlatform = 'macos-latest' builderPlatform = 'macos-latest'
+21 -10
View File
@@ -2,21 +2,32 @@ require 'json'
hash = File.read('ruby-builder-versions.json') hash = File.read('ruby-builder-versions.json')
versions = JSON.load(hash).transform_keys(&:to_sym) versions = JSON.load(hash).transform_keys(&:to_sym)
by_minor = versions[:ruby].group_by { |v| v[/^\d\.\d/] } ONLY_LATEST_PATCH = ENV['ONLY_LATEST_PATCH']
by_minor.each_pair do |minor, versions| def filter(versions)
puts versions.map { |v| "ruby-#{v}" }.join(', ') if minor versions -= %w[head]
if ONLY_LATEST_PATCH
versions = versions.group_by { |v| v[/^\d+\.\d+/] }.map { _2.last }
end
versions
end
if ONLY_LATEST_PATCH
puts filter(versions[:ruby]).map { |v| "ruby-#{v}" }.join(', ')
else
by_minor = versions[:ruby].group_by { |v| v[/^\d+\.\d+/] }
by_minor.each_pair do |minor, versions|
puts versions.map { |v| "ruby-#{v}" }.join(', ') if minor
end
end end
puts puts
puts (versions[:truffleruby] - %w[head]).map { |v| "truffleruby-#{v}" }.join(', ') puts filter(versions[:truffleruby]).map { |v| "truffleruby-#{v}" }.join(', ')
puts puts
puts (versions[:"truffleruby+graalvm"] - %w[head]).map { |v| "truffleruby+graalvm-#{v}" }.join(', ') puts filter(versions[:"truffleruby+graalvm"]).map { |v| "truffleruby+graalvm-#{v}" }.join(', ')
puts puts
puts (versions[:jruby] - %w[head]).map { |v| "jruby-#{v}" }.join(', ') puts filter(versions[:jruby]).map { |v| "jruby-#{v}" }.join(', ')
puts "For Windows:"
(versions[:jruby] - %w[head]).each do |v| puts filter(versions[:jruby]).join(', ')
puts "- { os: windows-latest, jruby-version: #{v}, ruby: jruby-#{v} }"
end
+256 -79
View File
@@ -1,81 +1,258 @@
{ {
"2.0.0": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.0.0-p648/ruby-2.0.0-p648-x64-mingw32.7z", "2.0.0": {
"2.1.9": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.1.9/ruby-2.1.9-x64-mingw32.7z", "x64": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.0.0-p648/ruby-2.0.0-p648-x64-mingw32.7z"
"2.2.6": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.2.6/ruby-2.2.6-x64-mingw32.7z", },
"2.3.0": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.3.0/ruby-2.3.0-x64-mingw32.7z", "2.1.9": {
"2.3.1": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.3.1/ruby-2.3.1-x64-mingw32.7z", "x64": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.1.9/ruby-2.1.9-x64-mingw32.7z"
"2.3.3": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.3.3/ruby-2.3.3-x64-mingw32.7z", },
"2.4.1": "https://github.com/oneclick/rubyinstaller2/releases/download/2.4.1-2/rubyinstaller-2.4.1-2-x64.7z", "2.2.6": {
"2.4.2": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.4.2-2/rubyinstaller-2.4.2-2-x64.7z", "x64": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.2.6/ruby-2.2.6-x64-mingw32.7z"
"2.4.3": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.4.3-2/rubyinstaller-2.4.3-2-x64.7z", },
"2.4.4": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.4.4-2/rubyinstaller-2.4.4-2-x64.7z", "2.3.0": {
"2.4.5": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.4.5-1/rubyinstaller-2.4.5-1-x64.7z", "x64": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.3.0/ruby-2.3.0-x64-mingw32.7z"
"2.4.6": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.4.6-1/rubyinstaller-2.4.6-1-x64.7z", },
"2.4.7": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.4.7-1/rubyinstaller-2.4.7-1-x64.7z", "2.3.1": {
"2.4.9": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.4.9-1/rubyinstaller-2.4.9-1-x64.7z", "x64": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.3.1/ruby-2.3.1-x64-mingw32.7z"
"2.4.10": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.4.10-1/rubyinstaller-2.4.10-1-x64.7z", },
"2.5.0": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.5.0-2/rubyinstaller-2.5.0-2-x64.7z", "2.3.3": {
"2.5.1": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.5.1-2/rubyinstaller-2.5.1-2-x64.7z", "x64": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.3.3/ruby-2.3.3-x64-mingw32.7z"
"2.5.3": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.5.3-1/rubyinstaller-2.5.3-1-x64.7z", },
"2.5.5": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.5.5-1/rubyinstaller-2.5.5-1-x64.7z", "2.4.1": {
"2.5.6": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.5.6-1/rubyinstaller-2.5.6-1-x64.7z", "x64": "https://github.com/oneclick/rubyinstaller2/releases/download/2.4.1-2/rubyinstaller-2.4.1-2-x64.7z"
"2.5.7": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.5.7-1/rubyinstaller-2.5.7-1-x64.7z", },
"2.5.8": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.5.8-2/rubyinstaller-2.5.8-2-x64.7z", "2.4.2": {
"2.5.9": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.5.9-1/rubyinstaller-2.5.9-1-x64.7z", "x64": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.4.2-2/rubyinstaller-2.4.2-2-x64.7z"
"2.6.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.0-1/rubyinstaller-2.6.0-1-x64.7z", },
"2.6.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.1-1/rubyinstaller-2.6.1-1-x64.7z", "2.4.3": {
"2.6.2": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.2-1/rubyinstaller-2.6.2-1-x64.7z", "x64": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.4.3-2/rubyinstaller-2.4.3-2-x64.7z"
"2.6.3": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.3-1/rubyinstaller-2.6.3-1-x64.7z", },
"2.6.4": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.4-1/rubyinstaller-2.6.4-1-x64.7z", "2.4.4": {
"2.6.5": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.5-1/rubyinstaller-2.6.5-1-x64.7z", "x64": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.4.4-2/rubyinstaller-2.4.4-2-x64.7z"
"2.6.6": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.6-2/rubyinstaller-2.6.6-2-x64.7z", },
"2.6.7": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.7-1/rubyinstaller-2.6.7-1-x64.7z", "2.4.5": {
"2.6.8": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.8-1/rubyinstaller-2.6.8-1-x64.7z", "x64": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.4.5-1/rubyinstaller-2.4.5-1-x64.7z"
"2.6.9": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.9-1/rubyinstaller-2.6.9-1-x64.7z", },
"2.6.10": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.10-1/rubyinstaller-2.6.10-1-x64.7z", "2.4.6": {
"2.7.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.0-1/rubyinstaller-2.7.0-1-x64.7z", "x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.4.6-1/rubyinstaller-2.4.6-1-x64.7z"
"2.7.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.1-1/rubyinstaller-2.7.1-1-x64.7z", },
"2.7.2": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.2-1/rubyinstaller-2.7.2-1-x64.7z", "2.4.7": {
"2.7.3": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.3-1/rubyinstaller-2.7.3-1-x64.7z", "x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.4.7-1/rubyinstaller-2.4.7-1-x64.7z"
"2.7.4": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.4-1/rubyinstaller-2.7.4-1-x64.7z", },
"2.7.5": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.5-1/rubyinstaller-2.7.5-1-x64.7z", "2.4.9": {
"2.7.6": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.6-1/rubyinstaller-2.7.6-1-x64.7z", "x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.4.9-1/rubyinstaller-2.4.9-1-x64.7z"
"2.7.7": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.7-1/rubyinstaller-2.7.7-1-x64.7z", },
"2.7.8": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.8-1/rubyinstaller-2.7.8-1-x64.7z", "2.4.10": {
"3.0.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.0-1/rubyinstaller-3.0.0-1-x64.7z", "x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.4.10-1/rubyinstaller-2.4.10-1-x64.7z"
"3.0.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.1-1/rubyinstaller-3.0.1-1-x64.7z", },
"3.0.2": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.2-1/rubyinstaller-3.0.2-1-x64.7z", "2.5.0": {
"3.0.3": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.3-1/rubyinstaller-3.0.3-1-x64.7z", "x64": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.5.0-2/rubyinstaller-2.5.0-2-x64.7z"
"3.0.4": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.4-1/rubyinstaller-3.0.4-1-x64.7z", },
"3.0.5": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.5-1/rubyinstaller-3.0.5-1-x64.7z", "2.5.1": {
"3.0.6": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.6-1/rubyinstaller-3.0.6-1-x64.7z", "x64": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.5.1-2/rubyinstaller-2.5.1-2-x64.7z"
"3.0.7": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.7-1/rubyinstaller-3.0.7-1-x64.7z", },
"3.1.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.0-1/rubyinstaller-3.1.0-1-x64.7z", "2.5.3": {
"3.1.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.1-1/rubyinstaller-3.1.1-1-x64.7z", "x64": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.5.3-1/rubyinstaller-2.5.3-1-x64.7z"
"3.1.2": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.2-1/rubyinstaller-3.1.2-1-x64.7z", },
"3.1.3": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.3-1/rubyinstaller-3.1.3-1-x64.7z", "2.5.5": {
"3.1.4": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.4-1/rubyinstaller-3.1.4-1-x64.7z", "x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.5.5-1/rubyinstaller-2.5.5-1-x64.7z"
"3.1.5": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.5-1/rubyinstaller-3.1.5-1-x64.7z", },
"3.1.6": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.6-1/rubyinstaller-3.1.6-1-x64.7z", "2.5.6": {
"3.2.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.0-1/rubyinstaller-3.2.0-1-x64.7z", "x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.5.6-1/rubyinstaller-2.5.6-1-x64.7z"
"3.2.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.1-1/rubyinstaller-3.2.1-1-x64.7z", },
"3.2.2": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.2-1/rubyinstaller-3.2.2-1-x64.7z", "2.5.7": {
"3.2.3": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.3-1/rubyinstaller-3.2.3-1-x64.7z", "x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.5.7-1/rubyinstaller-2.5.7-1-x64.7z"
"3.2.4": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.4-1/rubyinstaller-3.2.4-1-x64.7z", },
"3.2.5": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.5-1/rubyinstaller-3.2.5-1-x64.7z", "2.5.8": {
"3.2.6": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.6-1/rubyinstaller-3.2.6-1-x64.7z", "x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.5.8-2/rubyinstaller-2.5.8-2-x64.7z"
"3.2.7": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.7-1/rubyinstaller-3.2.7-1-x64.7z", },
"3.3.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.0-1/rubyinstaller-3.3.0-1-x64.7z", "2.5.9": {
"3.3.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.1-1/rubyinstaller-3.3.1-1-x64.7z", "x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.5.9-1/rubyinstaller-2.5.9-1-x64.7z"
"3.3.2": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.2-1/rubyinstaller-3.3.2-1-x64.7z", },
"3.3.3": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.3-1/rubyinstaller-3.3.3-1-x64.7z", "2.6.0": {
"3.3.4": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.4-1/rubyinstaller-3.3.4-1-x64.7z", "x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.0-1/rubyinstaller-2.6.0-1-x64.7z"
"3.3.5": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.5-1/rubyinstaller-3.3.5-1-x64.7z", },
"3.3.6": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.6-2/rubyinstaller-3.3.6-2-x64.7z", "2.6.1": {
"3.3.7": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.7-1/rubyinstaller-3.3.7-1-x64.7z", "x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.1-1/rubyinstaller-2.6.1-1-x64.7z"
"3.4.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.1-2/rubyinstaller-3.4.1-2-x64.7z", },
"head": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-head-x64.7z", "2.6.2": {
"mingw": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mingw.7z", "x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.2-1/rubyinstaller-2.6.2-1-x64.7z"
"mswin": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mswin.7z", },
"ucrt": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-ucrt.7z" "2.6.3": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.3-1/rubyinstaller-2.6.3-1-x64.7z"
},
"2.6.4": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.4-1/rubyinstaller-2.6.4-1-x64.7z"
},
"2.6.5": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.5-1/rubyinstaller-2.6.5-1-x64.7z"
},
"2.6.6": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.6-2/rubyinstaller-2.6.6-2-x64.7z"
},
"2.6.7": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.7-1/rubyinstaller-2.6.7-1-x64.7z"
},
"2.6.8": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.8-1/rubyinstaller-2.6.8-1-x64.7z"
},
"2.6.9": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.9-1/rubyinstaller-2.6.9-1-x64.7z"
},
"2.6.10": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.10-1/rubyinstaller-2.6.10-1-x64.7z"
},
"2.7.0": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.0-1/rubyinstaller-2.7.0-1-x64.7z"
},
"2.7.1": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.1-1/rubyinstaller-2.7.1-1-x64.7z"
},
"2.7.2": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.2-1/rubyinstaller-2.7.2-1-x64.7z"
},
"2.7.3": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.3-1/rubyinstaller-2.7.3-1-x64.7z"
},
"2.7.4": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.4-1/rubyinstaller-2.7.4-1-x64.7z"
},
"2.7.5": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.5-1/rubyinstaller-2.7.5-1-x64.7z"
},
"2.7.6": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.6-1/rubyinstaller-2.7.6-1-x64.7z"
},
"2.7.7": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.7-1/rubyinstaller-2.7.7-1-x64.7z"
},
"2.7.8": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.8-1/rubyinstaller-2.7.8-1-x64.7z"
},
"3.0.0": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.0-1/rubyinstaller-3.0.0-1-x64.7z"
},
"3.0.1": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.1-1/rubyinstaller-3.0.1-1-x64.7z"
},
"3.0.2": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.2-1/rubyinstaller-3.0.2-1-x64.7z"
},
"3.0.3": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.3-1/rubyinstaller-3.0.3-1-x64.7z"
},
"3.0.4": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.4-1/rubyinstaller-3.0.4-1-x64.7z"
},
"3.0.5": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.5-1/rubyinstaller-3.0.5-1-x64.7z"
},
"3.0.6": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.6-1/rubyinstaller-3.0.6-1-x64.7z"
},
"3.0.7": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.7-1/rubyinstaller-3.0.7-1-x64.7z"
},
"3.1.0": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.0-1/rubyinstaller-3.1.0-1-x64.7z"
},
"3.1.1": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.1-1/rubyinstaller-3.1.1-1-x64.7z"
},
"3.1.2": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.2-1/rubyinstaller-3.1.2-1-x64.7z"
},
"3.1.3": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.3-1/rubyinstaller-3.1.3-1-x64.7z"
},
"3.1.4": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.4-1/rubyinstaller-3.1.4-1-x64.7z"
},
"3.1.5": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.5-1/rubyinstaller-3.1.5-1-x64.7z"
},
"3.1.6": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.6-1/rubyinstaller-3.1.6-1-x64.7z"
},
"3.1.7": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.7-1/rubyinstaller-3.1.7-1-x64.7z"
},
"3.2.0": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.0-1/rubyinstaller-3.2.0-1-x64.7z"
},
"3.2.1": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.1-1/rubyinstaller-3.2.1-1-x64.7z"
},
"3.2.2": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.2-1/rubyinstaller-3.2.2-1-x64.7z"
},
"3.2.3": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.3-1/rubyinstaller-3.2.3-1-x64.7z"
},
"3.2.4": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.4-1/rubyinstaller-3.2.4-1-x64.7z"
},
"3.2.5": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.5-1/rubyinstaller-3.2.5-1-x64.7z"
},
"3.2.6": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.6-1/rubyinstaller-3.2.6-1-x64.7z"
},
"3.2.7": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.7-1/rubyinstaller-3.2.7-1-x64.7z"
},
"3.2.8": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.8-1/rubyinstaller-3.2.8-1-x64.7z"
},
"3.3.0": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.0-1/rubyinstaller-3.3.0-1-x64.7z"
},
"3.3.1": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.1-1/rubyinstaller-3.3.1-1-x64.7z"
},
"3.3.2": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.2-1/rubyinstaller-3.3.2-1-x64.7z"
},
"3.3.3": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.3-1/rubyinstaller-3.3.3-1-x64.7z"
},
"3.3.4": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.4-1/rubyinstaller-3.3.4-1-x64.7z"
},
"3.3.5": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.5-1/rubyinstaller-3.3.5-1-x64.7z"
},
"3.3.6": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.6-2/rubyinstaller-3.3.6-2-x64.7z"
},
"3.3.7": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.7-1/rubyinstaller-3.3.7-1-x64.7z"
},
"3.3.8": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.8-1/rubyinstaller-3.3.8-1-x64.7z"
},
"3.4.1": {
"arm64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.1-2/rubyinstaller-3.4.1-2-arm.7z",
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.1-2/rubyinstaller-3.4.1-2-x64.7z"
},
"3.4.2": {
"arm64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.2-1/rubyinstaller-3.4.2-1-arm.7z",
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.2-1/rubyinstaller-3.4.2-1-x64.7z"
},
"3.4.3": {
"arm64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.3-1/rubyinstaller-3.4.3-1-arm.7z",
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.3-1/rubyinstaller-3.4.3-1-x64.7z"
},
"head": {
"arm64": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-head-arm.7z",
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-head-x64.7z"
},
"mingw": {
"x64": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mingw.7z"
},
"mswin": {
"x64": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mswin.7z"
},
"ucrt": {
"x64": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-ucrt.7z"
}
} }
+16 -12
View File
@@ -4,6 +4,7 @@
// OpenSSL version detection is needed in installGCCTools and installJRubyTools // OpenSSL version detection is needed in installGCCTools and installJRubyTools
const fs = require('fs') const fs = require('fs')
const os = require('os')
const path = require('path') const path = require('path')
const cp = require('child_process') const cp = require('child_process')
const core = require('@actions/core') const core = require('@actions/core')
@@ -17,16 +18,18 @@ const drive = common.drive
const msys2GCCReleaseURI = 'https://github.com/ruby/setup-msys2-gcc/releases/download' const msys2GCCReleaseURI = 'https://github.com/ruby/setup-msys2-gcc/releases/download'
const msys2BasePath = process.env['GHCUP_MSYS2'] const msys2BasePath = process.env['GHCUP_MSYS2'] || 'C:\\msys64'
const vcPkgBasePath = process.env['VCPKG_INSTALLATION_ROOT'] const vcPkgBasePath = process.env['VCPKG_INSTALLATION_ROOT']
// needed for Ruby 2.0-2.3, cert file used by Git for Windows // needed for Ruby 2.0-2.3, cert file used by Git for Windows
let certFile = 'C:\\Program Files\\Git\\mingw64\\etc\\ssl\\cert.pem' const certFile = [
if (!fs.existsSync(certFile)) { 'C:\\Program Files\\Git\\mingw64\\etc\\ssl\\cert.pem',
certFile = 'C:\\Program Files\\Git\\mingw64\\ssl\\cert.pem' 'C:\\Program Files\\Git\\mingw64\\ssl\\cert.pem',
if (!fs.existsSync(certFile)) { 'C:\\Program Files\\Git\\clangarm64\\etc\\ssl\\cert.pem',
throw new Error("Cannot find Git's cert file") 'C:\\Program Files\\Git\\clangarm64\\ssl\\cert.pem'
} ].find(file => fs.existsSync(file))
if (certFile === undefined) {
throw new Error("Cannot find Git's cert file")
} }
// location & path for old RubyInstaller DevKit (MSYS1), used with Ruby 2.0-2.3 // location & path for old RubyInstaller DevKit (MSYS1), used with Ruby 2.0-2.3
@@ -35,14 +38,14 @@ const msysPathEntries = [`${msys1}\\mingw\\x86_64-w64-mingw32\\bin`, `${msys1}\\
export function getAvailableVersions(platform, engine) { export function getAvailableVersions(platform, engine) {
if (engine === 'ruby') { if (engine === 'ruby') {
return Object.keys(rubyInstallerVersions) return Object.keys(rubyInstallerVersions).filter(version => os.arch() in rubyInstallerVersions[version])
} else { } else {
return undefined return undefined
} }
} }
export async function install(platform, engine, version) { export async function install(platform, engine, version) {
const url = rubyInstallerVersions[version] const url = rubyInstallerVersions[version][os.arch()]
// The windows-2016 and windows-2019 images have MSYS2 build tools (C:/msys64/usr) // The windows-2016 and windows-2019 images have MSYS2 build tools (C:/msys64/usr)
// and MinGW build tools installed. The windows-2022 image has neither. // and MinGW build tools installed. The windows-2022 image has neither.
@@ -129,7 +132,9 @@ async function installGCCTools(type, version) {
// A subset of the MSYS2 base-devel group // A subset of the MSYS2 base-devel group
async function installMSYS2Tools() { async function installMSYS2Tools() {
const downloadPath = await common.measure(`Downloading msys2 build tools`, async () => { const downloadPath = await common.measure(`Downloading msys2 build tools`, async () => {
let url = `${msys2GCCReleaseURI}/msys2-gcc-pkgs/msys2.7z` const suffix = os.arch() === 'arm64' ? '-arm64' : ''
let url = `${msys2GCCReleaseURI}/msys2-gcc-pkgs/msys2${suffix}.7z`
console.log(url) console.log(url)
return await tc.downloadTool(url) return await tc.downloadTool(url)
}) })
@@ -146,8 +151,7 @@ async function installMSYS2Tools() {
// windows-2022 and later images // windows-2022 and later images
export async function installJRubyTools() { export async function installJRubyTools() {
await installMSYS2Tools() await installMSYS2Tools()
// Will need to add OpenSSL version detection when JRuby uses OpenSSL 3.0 ? await installGCCTools(os.arch() === 'arm64' ? 'clangarm64' : 'mingw64', '3.4')
await installGCCTools('mingw64', '2.7')
} }
// Install vcpkg files needed to build mswin Ruby // Install vcpkg files needed to build mswin Ruby