Compare commits

...
55 Commits
Author SHA1 Message Date
ruby-builder-bot 2b019609e2 Update CRuby releases on Windows 2022-04-20 21:33:41 +02:00
David Rodríguez 7e21bdc34c Reword mention to JRuby bug to make it clear that it's now fixed 2022-04-20 14:46:14 +02:00
Soumya Ranjan Mahunt b37f0a38ea add libgmp to requirements for self-hosted runners 2022-04-17 11:53:10 +02:00
ruby-builder-bot ebaea52cb2 Add ruby-3.1.2 2022-04-12 16:48:40 +02:00
ruby-builder-bot 382b2c5e9b Add ruby-3.0.4 2022-04-12 16:42:46 +02:00
ruby-builder-bot 0d85c5bbb7 Add ruby-2.6.10 2022-04-12 16:41:27 +02:00
ruby-builder-bot b80945c764 Add ruby-2.7.6 2022-04-12 16:32:06 +02:00
Jason Frey 1a68550f2e Fix bundler: with a minor version installing the wrong version
If passed `bundler: 2.2`, setup-ruby would install bundler 2.3, because
it would generate a constraint that looks like `~> 2.2`. This
unexpectedly installs the latest of the 2.x series, but the expectation
is that it would install the latest of the 2.2.x series.

Fixes #304
2022-04-05 18:04:27 +02:00
ruby-builder-bot bd94d6a504 Add jruby-9.3.4.0 2022-03-23 21:16:51 +01:00
Cliffano Subagio b9d02e5f7e Remove ubuntu-16.04 from the list of supported Ubuntu versions. 2022-03-14 10:07:50 +01:00
Benoit Daloze 4d8ce7b87d ruby-head now sets a proper ABI version
https://bugs.ruby-lang.org/issues/18249
2022-03-03 14:59:41 +01:00
Benoit Daloze cd9d3de43b Show stacktrace if available, in addition to error message 2022-02-27 17:51:33 +01:00
Benoit Daloze 7baabd2c5d Make new-version.rb windows delegate to generate-windows-versions.rb 2022-02-20 12:27:42 +01:00
Benoit Daloze e5517072e8 Add ruby-3.1.1 on Windows 2022-02-19 12:48:52 +01:00
Benoit Daloze cca23415f7 Fix test, 3.1.1 has a newer RubyGems 2022-02-18 20:50:26 +01:00
ruby-builder-bot cb1708a42d Add ruby-3.1.1 2022-02-18 20:50:21 +01:00
Benoit Daloze 339cddd0ab Update CONTRIBUTING.md about new versions 2022-02-18 18:09:56 +01:00
Benoit Daloze 0bb302e3c3 Update @actions/cache to latest to update node-fetch to 2.6.7
* Which fixes https://github.com/advisories/GHSA-r683-j2x4-v87g
2022-02-15 12:28:15 +01:00
Benoit Daloze 359bebbc29 Use the shipped Bundler on TruffleRuby 22.0
* To workaround https://github.com/oracle/truffleruby/issues/2586
2022-01-28 13:09:27 +01:00
Benoit Daloze fabf2515e6 Allow bundler: none + bundle-cache: true to use the Bundler shipped with that Ruby + the cache 2022-01-27 20:07:26 +01:00
Benoit Daloze 51c0d59222 Simplify to 22.0.0 in README (both work) 2022-01-25 20:46:56 +01:00
ruby-builder-bot 6d62a2dcce Add truffleruby-22.0.0.2 2022-01-25 20:45:27 +01:00
Benoit Daloze 8a48a656bf Update new-version script to handle truffleruby+graalvm automatically 2022-01-25 18:58:02 +01:00
Benoit Daloze 32c0569c64 Automatically update the latest version in the README 2022-01-23 17:33:38 +01:00
ruby-builder-bot f302e4ff49 Add jruby-9.3.3.0 2022-01-23 16:39:56 +01:00
Benoit Daloze 3065f0b392 Add script to automatically add a version to ruby-builder-versions.json 2022-01-23 15:03:32 +01:00
Benoit Daloze cf617ba62d Show ruby --version
* This is particularly useful for head builds and is also reasonably
  fast for all supported Rubies.
2022-01-23 12:27:11 +01:00
Benoit Daloze c96a8640af Make version files pure-data JSON files 2022-01-23 12:16:37 +01:00
Benoit Daloze d359377deb Fix title level in README 2022-01-23 11:58:25 +01:00
Benoit Daloze 4a1b0853ab Small cleanup 2022-01-23 11:55:32 +01:00
David Rodríguez c36d5afe85 Add a note about Psych + RubyGems issue 2022-01-23 11:55:32 +01:00
David Rodríguez 8781aa98b4 Tweak rubygems input behavior
When a fixed version is passed, it should be the minimum RubyGems
version for the whole matrix, i.e., RubyGems should not be dowgraded
past the default version of the oldest Ruby in the matrix.
2022-01-23 11:55:32 +01:00
David Rodríguez 578365d08b Add a short README section about the RubyGems version 2022-01-23 11:55:32 +01:00
David Rodríguez c3f0cb18af Add a new input to optionally update RubyGems 2022-01-23 11:55:32 +01:00
Benoit Daloze 180e1d1f1c windows-2016 is deprecated and windows-2022 is now supported
* Stop testing on windows-2016 to reduce the test matrix size to something reasonable.
2022-01-13 20:27:11 +01:00
Benoit Daloze 238b81ee64 Only log if changing something 2022-01-13 20:26:04 +01:00
Benoit Daloze 8f312efe12 Fix typo 2022-01-13 19:47:00 +01:00
Benoit Daloze 26470672e5 Small cleanups 2022-01-13 19:40:03 +01:00
MSP-Greg fb94cfb62e yarn run package 2022-01-13 19:25:34 +01:00
MSP-Greg f51e04d8c5 package.json & yarn.lock - @vercel/ncc: 0.28.6 -> 0.31.1 2022-01-13 19:25:34 +01:00
MSP-Greg e9c1c1bf40 windows.js - add hasMSYS2PreInstalled constant 2022-01-13 19:25:34 +01:00
MSP-Greg 24d6deea38 Windows JRuby - install MinGW tools, typo 2022-01-13 19:25:34 +01:00
MSP-Greg 3b96304b91 windows.js - suggested changes 2022-01-13 19:25:34 +01:00
MSP-Greg 18485596cf Windows - Rename 3rd party OpenSSL SYSTEM32 dll's 2022-01-13 19:25:34 +01:00
MSP-Greg 70ec766ec5 Actions - add windows-2022 jobs 2022-01-13 19:25:34 +01:00
MSP-Greg ffd46bd1d2 Only install mingw or ucrt for new Rubies 2022-01-13 19:25:34 +01:00
MSP-Greg 480fe921a2 windows.js - update addVCVARSEnv to work with all windows images 2022-01-13 19:25:34 +01:00
MSP-Greg 4fbcf63963 Install MSYS2 tools before gcc tools, clear pacman database folder 2022-01-13 19:25:34 +01:00
MSP-Greg 66308367ad log output - all 'ing', align 2022-01-13 19:25:34 +01:00
MSP-Greg b0aab3e1cf Add ruby-loco ucrt build 2022-01-13 19:25:34 +01:00
MSP-GregandLars Kanis 23b44d8ec5 Use ridk enable to set MSYS2 ENV variables
Co-authored-by: Lars Kanis <lars@greiz-reinsdorf.de>
2022-01-13 19:25:34 +01:00
MSP-Greg 6cc535991c Actions - Add Windows-2022 with ruby-head & ruby-mingw 2022-01-13 19:25:34 +01:00
MSP-Greg 226c4cceaa Add Windows MSYS2 ucrt and Windows-2022 support 2022-01-13 19:25:34 +01:00
Benoit Daloze 4726835508 Try 'gem install --force bundler' on 3.1 Windows 2022-01-10 17:52:23 +01:00
Koichi ITO bee16c98fd Support Ruby 3.1.0 for Windows
Follow up to https://github.com/oneclick/rubyinstaller2/issues/255#issuecomment-1003266597.

This PR adds Ruby 3.1.0 to windows-version.js.
2022-01-10 17:52:23 +01:00
19 changed files with 15129 additions and 13377 deletions
+64 -10
View File
@@ -15,27 +15,26 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: [ ubuntu-18.04, ubuntu-20.04, macos-10.15, macos-11.0, windows-2016, windows-2019 ] os: [ ubuntu-18.04, ubuntu-20.04, macos-10.15, macos-11.0, windows-2019, windows-2022 ]
ruby: [ 1.9, '2.0', 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, '3.0', 3.1, ruby-head, jruby, jruby-head, truffleruby, truffleruby-head, truffleruby+graalvm, truffleruby+graalvm-head ] ruby: [ 1.9, '2.0', 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, '3.0', 3.1, ruby-head, jruby, jruby-head, truffleruby, truffleruby-head, truffleruby+graalvm, truffleruby+graalvm-head ]
include: include:
- { os: windows-2016, ruby: mingw }
- { os: windows-2019, ruby: mingw } - { os: windows-2019, ruby: mingw }
- { os: windows-2019, ruby: mswin } - { os: windows-2019, ruby: mswin }
- { os: windows-2022, ruby: mingw }
- { os: windows-2022, ruby: ucrt }
exclude: exclude:
- { os: windows-2016, ruby: 1.9 }
- { os: windows-2016, ruby: 3.1 }
- { os: windows-2016, ruby: debug }
- { os: windows-2016, ruby: truffleruby }
- { os: windows-2016, ruby: truffleruby-head }
- { os: windows-2016, ruby: truffleruby+graalvm }
- { os: windows-2016, ruby: truffleruby+graalvm-head }
- { os: windows-2019, ruby: 1.9 } - { os: windows-2019, ruby: 1.9 }
- { os: windows-2019, ruby: 3.1 }
- { os: windows-2019, ruby: debug } - { os: windows-2019, ruby: debug }
- { os: windows-2019, ruby: truffleruby } - { os: windows-2019, ruby: truffleruby }
- { os: windows-2019, ruby: truffleruby-head } - { os: windows-2019, ruby: truffleruby-head }
- { os: windows-2019, ruby: truffleruby+graalvm } - { os: windows-2019, ruby: truffleruby+graalvm }
- { os: windows-2019, ruby: truffleruby+graalvm-head } - { os: windows-2019, ruby: truffleruby+graalvm-head }
- { os: windows-2022, ruby: 1.9 }
- { os: windows-2022, ruby: debug }
- { os: windows-2022, ruby: truffleruby }
- { os: windows-2022, ruby: truffleruby-head }
- { os: windows-2022, ruby: truffleruby+graalvm }
- { os: windows-2022, ruby: truffleruby+graalvm-head }
name: ${{ matrix.os }} ${{ matrix.ruby }} name: ${{ matrix.os }} ${{ matrix.ruby }}
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
@@ -113,6 +112,61 @@ jobs:
if: startsWith(matrix.os, 'windows') && startsWith(matrix.ruby, 'jruby') if: startsWith(matrix.os, 'windows') && startsWith(matrix.ruby, 'jruby')
run: gem install sassc run: gem install sassc
testLatestRubygemsVersion:
name: "Test rubygems input set to latest upgrades the default RubyGems version"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ./
with:
ruby-version: 2.6
rubygems: latest
- run: ruby -e "exit(Gem.rubygems_version > Gem::Version.new('3.0.3'))"
testFixedRubygemsVersionUpgrades:
name: "Test rubygems input set to a fixed version upgrades RubyGems to that version if the default is older"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ./
with:
ruby-version: 2.6
rubygems: 3.2.3
- run: gem --version | grep -F "3.2.3"
testFixedRubygemsVersionNoop:
name: "Test rubygems input set to a fixed version noops if the default is newer"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ./
with:
ruby-version: 3.1.0
rubygems: 3.2.3
- run: gem --version | grep -F "3.3.3"
testMajorBundlerVersion:
name: "Test with a major Bundler version"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ./
with:
ruby-version: 2.6
bundler: 2
- run: bundle --version | grep -P "Bundler version 2\.\d+\.\d+"
testMinorBundlerVersion:
name: "Test with a minor Bundler version"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ./
with:
ruby-version: 2.6
bundler: 2.2
- run: bundle --version | grep -P "Bundler version 2\.2\.\d+"
testExactBundlerVersion: testExactBundlerVersion:
name: "Test with an exact Bundler version" name: "Test with an exact Bundler version"
runs-on: ubuntu-latest runs-on: ubuntu-latest
+2 -1
View File
@@ -22,4 +22,5 @@ $ cp pre-commit .git/hooks/pre-commit
## Adding a new Ruby version ## Adding a new Ruby version
Add the new version in `ruby-builder-versions.js`, then follow the steps above in [Regenerating dist/index.js](#regenerating-distindexjs) to update `dist/index.js`. Finally, update the "Supported Versions" section of the README if needed. This is entirely automated now since [this issue](https://github.com/ruby/setup-ruby/issues/254).
If you do not see a new version more than 24 hours after it was released feel free to file an issue.
+22 -10
View File
@@ -14,10 +14,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.1.0, head, debug, mingw, mswin | | `ruby` | 1.9.3, 2.0.0, 2.1.9, 2.2, all versions from 2.3.0 until 3.1.2, head, debug, mingw, mswin |
| `jruby` | 9.1.17.0 - 9.3.2.0, head | | `jruby` | 9.1.17.0 - 9.3.4.0, head |
| `truffleruby` | 19.3.0 - 21.3.0, head | | `truffleruby` | 19.3.0 - 22.0.0, head |
| `truffleruby+graalvm` | 21.2.0 - 21.3.0, head | | `truffleruby+graalvm` | 21.2.0 - 22.0.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`).
On Windows, `mingw` and `mswin` are `ruby-head` builds using the MSYS2/MinGW and the MSVC toolchains respectively. On Windows, `mingw` and `mswin` are `ruby-head` builds using the MSYS2/MinGW and the MSVC toolchains respectively.
@@ -39,9 +39,9 @@ The action works for all [GitHub-hosted runners](https://help.github.com/en/acti
| Operating System | Recommended | Other Supported Versions | | Operating System | Recommended | Other Supported Versions |
| ----------- | -------- | -------- | | ----------- | -------- | -------- |
| Ubuntu | `ubuntu-latest` (= `ubuntu-20.04`) | `ubuntu-18.04`, `ubuntu-16.04` | | Ubuntu | `ubuntu-latest` (= `ubuntu-20.04`) | `ubuntu-18.04` |
| macOS | `macos-latest` (= `macos-10.15`) | `macos-11.0` | | macOS | `macos-latest` (= `macos-10.15`) | `macos-11.0` |
| Windows | `windows-latest` (= `windows-2019`) | `windows-2016` | | Windows | `windows-latest` (= `windows-2019`) | `windows-2022` |
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).
@@ -50,8 +50,8 @@ and on Windows by [RubyInstaller2](https://github.com/oneclick/rubyinstaller2).
`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` is 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). 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.js](ruby-builder-versions.js) The full list of available Ruby versions can be seen in [ruby-builder-versions.json](ruby-builder-versions.json)
for Ubuntu and macOS and in [windows-versions.js](windows-versions.js) for Windows. for Ubuntu and macOS and in [windows-versions.json](windows-versions.json) for Windows.
## Usage ## Usage
@@ -139,6 +139,18 @@ and the [condition and expression syntax](https://help.github.com/en/actions/ref
The `working-directory` input can be set to resolve `.ruby-version`, `.tool-versions` and `Gemfile.lock` The `working-directory` input can be set to resolve `.ruby-version`, `.tool-versions` and `Gemfile.lock`
if they are not at the root of the repository, see [action.yml](action.yml) for details. if they are not at the root of the repository, see [action.yml](action.yml) for details.
### RubyGems
By default, the default RubyGems version that comes with each Ruby is used.
However, users can optionally customize the RubyGems version that they want by
setting the `rubygems` input.
See [action.yml](action.yml) for more details about the `rubygems` input.
If you're running into `ArgumentError: wrong number of arguments (given 4,
expected 1)` errors with a stacktrace including Psych and RubyGems entries, you
should be able to fix them by setting `rubygems: 3.0.0` or higher.
### Bundler ### Bundler
By default, if there is a `Gemfile.lock` file (or `$BUNDLE_GEMFILE.lock` or `gems.locked`) with a `BUNDLED WITH` section, By default, if there is a `Gemfile.lock` file (or `$BUNDLE_GEMFILE.lock` or `gems.locked`) with a `BUNDLED WITH` section,
@@ -213,7 +225,7 @@ It is recommended to first get your build working on Ubuntu and macOS before try
* The `PATH` contains [multiple compiler toolchains](https://github.com/ruby/setup-ruby/issues/19). Use `where.exe` to debug which tool is used. * The `PATH` contains [multiple compiler toolchains](https://github.com/ruby/setup-ruby/issues/19). Use `where.exe` to debug which tool is used.
* For Ruby ≥ 2.4, MSYS2 is prepended to the `Path`, similar to what RubyInstaller2 does. * For Ruby ≥ 2.4, MSYS2 is prepended to the `Path`, similar to what RubyInstaller2 does.
* 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`.
* JRuby on Windows has a known bug that `bundle exec rake` [fails](https://github.com/ruby/setup-ruby/issues/18). * Use JRuby 9.2.20+ on Windows (older versions have [bugs](https://github.com/ruby/setup-ruby/issues/18#issuecomment-889072695)).
## Versioning ## Versioning
@@ -235,7 +247,7 @@ if the [virtual environment](https://github.com/actions/virtual-environments) is
* Make sure to use the same operating system and version. * Make sure to use the same operating system and version.
* Set the environment variable `ImageOS` on the runner to the corresponding value on GitHub-hosted runners (e.g. `ubuntu18`/`macos1015`/`win19`). This is necessary to detect the operating system and version. * Set the environment variable `ImageOS` on the runner to the corresponding value on GitHub-hosted runners (e.g. `ubuntu18`/`macos1015`/`win19`). This is necessary to detect the operating system and version.
* Make sure to use the same version of libssl. * Make sure to use the same version of libssl.
* Make sure that the operating system has `libyaml-0` installed * Make sure that the operating system has `libyaml-0` and [`libgmp`](https://stackoverflow.com/questions/26555902/ruby-v-dyld-library-not-loaded-usr-local-lib-libgmp-10-dylib) installed
* The default tool cache directory (`/opt/hostedtoolcache` on Linux, `/Users/runner/hostedtoolcache` on macOS, * The default tool cache directory (`/opt/hostedtoolcache` on Linux, `/Users/runner/hostedtoolcache` on macOS,
`C:/hostedtoolcache/windows` on Windows) must be writable by the `runner` user. `C:/hostedtoolcache/windows` on Windows) must be writable by the `runner` user.
This is necessary since the Ruby builds embed the install path when built and cannot be moved around. This is necessary since the Ruby builds embed the install path when built and cannot be moved around.
+8 -1
View File
@@ -9,9 +9,16 @@ inputs:
description: 'Engine and version to use, see the syntax in the README. Reads from .ruby-version or .tool-versions if unset.' description: 'Engine and version to use, see the syntax in the README. Reads from .ruby-version or .tool-versions if unset.'
required: false required: false
default: 'default' default: 'default'
rubygems:
description: |
The version of RubyGems to use. Either 'default', 'latest', or a version number (e.g., 3.3.5).
For 'default', no action is taken and the version of RubyGems that comes with Ruby by default is used.
For 'latest', `gem update --system` is run to update to the latest RubyGems version.
Similarly, if a version number is given, `gem update --system <version>` is run to update to that version of RubyGems, as long as that version is newer than the one provided by default.
Defaults to 'default'.
bundler: bundler:
description: | description: |
The version of Bundler to install. Either 'none', 'latest', 'Gemfile.lock', or a version number (e.g., 1, 2, 2.1.4). The version of Bundler to install. Either 'none', 'latest', 'Gemfile.lock', or a version number (e.g., 1, 2, 2.1, 2.1.4).
For 'Gemfile.lock', the version is determined based on the BUNDLED WITH section from the file Gemfile.lock, $BUNDLE_GEMFILE.lock or gems.locked. For 'Gemfile.lock', the version is determined based on the BUNDLED WITH section from the file Gemfile.lock, $BUNDLE_GEMFILE.lock or gems.locked.
Defaults to 'Gemfile.lock' if the file exists and 'latest' otherwise. Defaults to 'Gemfile.lock' if the file exists and 'latest' otherwise.
required: false required: false
+17 -8
View File
@@ -65,13 +65,15 @@ export async function installBundler(bundlerVersionInput, lockFile, platform, ru
bundlerVersion = '2' bundlerVersion = '2'
} }
if (/^\d+/.test(bundlerVersion)) { if (/^\d+(?:\.\d+){0,2}$/.test(bundlerVersion)) {
// OK // OK - input is a 1, 2, or 3 part version number
} else { } else {
throw new Error(`Cannot parse bundler input: ${bundlerVersion}`) throw new Error(`Cannot parse bundler input: ${bundlerVersion}`)
} }
if (engine === 'ruby' && common.floatVersion(rubyVersion) <= 2.2) { const floatVersion = common.floatVersion(rubyVersion)
if (engine === 'ruby' && floatVersion <= 2.2) {
console.log('Bundler 2 requires Ruby 2.3+, using Bundler 1 on Ruby <= 2.2') console.log('Bundler 2 requires Ruby 2.3+, using Bundler 1 on Ruby <= 2.2')
bundlerVersion = '1' bundlerVersion = '1'
} else if (engine === 'ruby' && /^2\.3\.[01]/.test(rubyVersion)) { } else if (engine === 'ruby' && /^2\.3\.[01]/.test(rubyVersion)) {
@@ -82,7 +84,10 @@ export async function installBundler(bundlerVersionInput, lockFile, platform, ru
bundlerVersion = '1' bundlerVersion = '1'
} }
if (common.isHeadVersion(rubyVersion) && common.isBundler2Default(engine, rubyVersion) && bundlerVersion.startsWith('2')) { // Workaround for truffleruby 22.0 + latest Bundler, use shipped Bundler instead: https://github.com/oracle/truffleruby/issues/2586
const useShippedBundler2 = common.isHeadVersion(rubyVersion) || (engine.startsWith('truffleruby') && rubyVersion.startsWith('22.0'))
if (useShippedBundler2 && common.isBundler2Default(engine, rubyVersion) && bundlerVersion.startsWith('2')) {
// Avoid installing a newer Bundler version for head versions as it might not work. // Avoid installing a newer Bundler version for head versions as it might not work.
// For releases, even if they ship with Bundler 2 we install the latest Bundler. // For releases, even if they ship with Bundler 2 we install the latest Bundler.
console.log(`Using Bundler 2 shipped with ${engine}-${rubyVersion}`) console.log(`Using Bundler 2 shipped with ${engine}-${rubyVersion}`)
@@ -90,8 +95,13 @@ export async function installBundler(bundlerVersionInput, lockFile, platform, ru
console.log(`Using Bundler 1 shipped with ${engine}-${rubyVersion}`) console.log(`Using Bundler 1 shipped with ${engine}-${rubyVersion}`)
} else { } else {
const gem = path.join(rubyPrefix, 'bin', 'gem') const gem = path.join(rubyPrefix, 'bin', 'gem')
const bundlerVersionConstraint = /^\d+\.\d+\.\d+/.test(bundlerVersion) ? bundlerVersion : `~> ${bundlerVersion}` // Workaround for https://github.com/rubygems/rubygems/issues/5245
await exec.exec(gem, ['install', 'bundler', '-v', bundlerVersionConstraint]) const force = (platform.startsWith('windows-') && engine === 'ruby' && floatVersion >= 3.1) ? ['--force'] : []
const versionParts = [...bundlerVersion.matchAll(/\d+/g)].length
const bundlerVersionConstraint = versionParts === 3 ? bundlerVersion : `~> ${bundlerVersion}.0`
await exec.exec(gem, ['install', 'bundler', ...force, '-v', bundlerVersionConstraint])
} }
return bundlerVersion return bundlerVersion
@@ -185,8 +195,7 @@ async function computeBaseKey(platform, engine, version, lockFile, cacheVersion)
if (common.isHeadVersion(version)) { if (common.isHeadVersion(version)) {
if (engine !== 'jruby') { if (engine !== 'jruby') {
// CRuby dev versions do not change the ABI version when the ABI changes, so use the commit as the ABI version let print_abi = "print RbConfig::CONFIG['ruby_version']"
let print_abi = engine === 'ruby' ? 'print RUBY_REVISION' : "print RbConfig::CONFIG['ruby_version']"
let abi = '' let abi = ''
await exec.exec('ruby', ['-e', print_abi], { await exec.exec('ruby', ['-e', print_abi], {
silent: true, silent: true,
+14 -2
View File
@@ -48,7 +48,7 @@ export async function measure(name, block) {
} }
export function isHeadVersion(rubyVersion) { export function isHeadVersion(rubyVersion) {
return rubyVersion === 'head' || rubyVersion === 'debug' || rubyVersion === 'mingw' || rubyVersion === 'mswin' return ['head', 'debug', 'mingw', 'mswin', 'ucrt'].includes(rubyVersion)
} }
export function isStableVersion(rubyVersion) { export function isStableVersion(rubyVersion) {
@@ -155,7 +155,15 @@ export function win2nix(path) {
return path.replace(/\\/g, '/').replace(/ /g, '\\ ') return path.replace(/\\/g, '/').replace(/ /g, '\\ ')
} }
// JRuby is installed after setupPath is called, so folder doesn't exist
function rubyIsUCRT(path) {
return !!(fs.existsSync(path) &&
fs.readdirSync(path, { withFileTypes: true }).find(dirent =>
dirent.isFile() && dirent.name.match(/^x64-ucrt-ruby\d{3}\.dll$/)))
}
export function setupPath(newPathEntries) { export function setupPath(newPathEntries) {
let msys2Type = null
const envPath = windows ? 'Path' : 'PATH' const envPath = windows ? 'Path' : 'PATH'
const originalPath = process.env[envPath].split(path.delimiter) const originalPath = process.env[envPath].split(path.delimiter)
let cleanPath = originalPath.filter(entry => !/\bruby\b/i.test(entry)) let cleanPath = originalPath.filter(entry => !/\bruby\b/i.test(entry))
@@ -176,8 +184,11 @@ export function setupPath(newPathEntries) {
// Then add new path entries using core.addPath() // Then add new path entries using core.addPath()
let newPath let newPath
if (windows) { if (windows) {
// main Ruby dll determines whether mingw or ucrt build
msys2Type = 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\\mingw64\\bin', 'C:\\msys64\\usr\\bin'] const msys2 = [`C:\\msys64\\${msys2Type}\\bin`, 'C:\\msys64\\usr\\bin']
newPath = [...newPathEntries, ...msys2] newPath = [...newPathEntries, ...msys2]
} else { } else {
newPath = newPathEntries newPath = newPathEntries
@@ -189,4 +200,5 @@ export function setupPath(newPathEntries) {
core.endGroup() core.endGroup()
core.addPath(newPath.join(path.delimiter)) core.addPath(newPath.join(path.delimiter))
return msys2Type
} }
Generated Vendored
+14573 -13171
View File
File diff suppressed because one or more lines are too long
+2 -2
View File
@@ -28,6 +28,6 @@ versions = entries.select { |entry|
versions['head'] = 'https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-head-x64.7z' versions['head'] = 'https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-head-x64.7z'
versions['mingw'] = 'https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mingw.7z' versions['mingw'] = 'https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mingw.7z'
versions['mswin'] = 'https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mswin.7z' versions['mswin'] = 'https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mswin.7z'
versions['ucrt'] = 'https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-ucrt.7z'
js = "export const versions = #{JSON.pretty_generate(versions)}\n" File.binwrite 'windows-versions.json', "#{JSON.pretty_generate(versions)}\n"
File.binwrite 'windows-versions.js', js
+27 -8
View File
@@ -2,13 +2,16 @@ const os = require('os')
const fs = require('fs') const fs = require('fs')
const path = require('path') const path = require('path')
const core = require('@actions/core') const core = require('@actions/core')
const exec = require('@actions/exec')
const common = require('./common') const common = require('./common')
const rubygems = require('./rubygems')
const bundler = require('./bundler') const bundler = require('./bundler')
const windows = common.windows const windows = common.windows
const inputDefaults = { const inputDefaults = {
'ruby-version': 'default', 'ruby-version': 'default',
'rubygems': 'default',
'bundler': 'default', 'bundler': 'default',
'bundler-cache': 'true', 'bundler-cache': 'true',
'working-directory': '.', 'working-directory': '.',
@@ -20,7 +23,7 @@ export async function run() {
try { try {
await setupRuby() await setupRuby()
} catch (error) { } catch (error) {
core.setFailed(error.message) core.setFailed(error.stack)
} }
} }
@@ -51,8 +54,23 @@ export async function setupRuby(options = {}) {
createGemRC(engine, version) createGemRC(engine, version)
envPreInstall() envPreInstall()
// JRuby can use compiled extension code, so make sure gcc exists.
// As of Jan-2022, JRuby compiles against msvcrt.
if (platform.startsWith('windows') && (engine === 'jruby') &&
!fs.existsSync('C:\\msys64\\mingw64\\bin\\gcc.exe')) {
await require('./windows').installJRubyTools()
}
const rubyPrefix = await installer.install(platform, engine, version) const rubyPrefix = await installer.install(platform, engine, version)
await common.measure('Print Ruby version', async () =>
await exec.exec('ruby', ['--version']))
if (inputs['rubygems'] !== 'default') {
await common.measure('Updating RubyGems', async () =>
rubygems.rubygemsUpdate(inputs['rubygems'], rubyPrefix))
}
// When setup-ruby is used by other actions, this allows code in them to run // When setup-ruby is used by other actions, this allows code in them to run
// before 'bundle install'. Installed dependencies may require additional // before 'bundle install'. Installed dependencies may require additional
// libraries & headers, build tools, etc. // libraries & headers, build tools, etc.
@@ -60,16 +78,17 @@ export async function setupRuby(options = {}) {
await inputs['afterSetupPathHook']({ platform, rubyPrefix, engine, version }) await inputs['afterSetupPathHook']({ platform, rubyPrefix, engine, version })
} }
const [gemfile, lockFile] = bundler.detectGemfiles()
let bundlerVersion = "unknown"
if (inputs['bundler'] !== 'none') { if (inputs['bundler'] !== 'none') {
const [gemfile, lockFile] = bundler.detectGemfiles() bundlerVersion = await common.measure('Installing Bundler', async () =>
const bundlerVersion = await common.measure('Installing Bundler', async () =>
bundler.installBundler(inputs['bundler'], lockFile, platform, rubyPrefix, engine, version)) bundler.installBundler(inputs['bundler'], lockFile, platform, rubyPrefix, engine, version))
}
if (inputs['bundler-cache'] === 'true') { if (inputs['bundler-cache'] === 'true') {
await common.measure('bundle install', async () => await common.measure('bundle install', async () =>
bundler.bundleInstall(gemfile, lockFile, platform, engine, version, bundlerVersion, inputs['cache-version'])) bundler.bundleInstall(gemfile, lockFile, platform, engine, version, bundlerVersion, inputs['cache-version']))
}
} }
core.setOutput('ruby-prefix', rubyPrefix) core.setOutput('ruby-prefix', rubyPrefix)
+62
View File
@@ -0,0 +1,62 @@
engine_input, version = ARGV.fetch(0).split('-', 2)
if engine_input == 'windows'
require_relative 'generate-windows-versions'
exit
end
MATCH = case engine_input
when 'ruby', 'jruby'
/^\d+\.\d+\./
when 'truffleruby'
/^\d+\./
end
raise unless version[MATCH]
engines = [engine_input]
engines << 'truffleruby+graalvm' if engine_input == 'truffleruby'
engines.each do |engine|
puts engine
# Update ruby-builder-versions.json
file = "#{__dir__}/ruby-builder-versions.json"
lines = File.readlines(file, chomp: true)
from = lines.index { |line| line.include?(%{"#{engine}": [}) }
raise "Could not find start of #{engine}" unless from
to = from
to += 1 until lines[to].include?(']')
from += 1 # [
to -= 2 # head, ]
puts lines[from..to]
release_line = lines[from..to].find { |line|
v = line[/"([^"]+)"/, 1] and v[MATCH] == version[MATCH]
}
if release_line
append = " #{version.inspect},"
release_line << append unless release_line.end_with?(append)
else
lines.insert to+1, " #{version.inspect},"
end
File.write(file, lines.join("\n") + "\n")
# Update README.md
file = "#{__dir__}/README.md"
lines = File.readlines(file)
engine_line = lines.find { |line| line.start_with?("| `#{engine}`") }
engine_line.sub!(/(.+ (?:-|until)) (\d+(?:\.\d+)+)/) do
if Gem::Version.new(version) > Gem::Version.new($2)
"#{$1} #{version}"
else
$&
end
end
File.write(file, lines.join)
end
+3 -2
View File
@@ -26,9 +26,10 @@
"@actions/core": "^1.4.0", "@actions/core": "^1.4.0",
"@actions/exec": "^1.1.0", "@actions/exec": "^1.1.0",
"@actions/io": "^1.1.1", "@actions/io": "^1.1.1",
"@actions/tool-cache": "^1.7.1" "@actions/tool-cache": "^1.7.1",
"semver": "^6.1.0"
}, },
"devDependencies": { "devDependencies": {
"@vercel/ncc": "^0.28.6" "@vercel/ncc": "^0.31.1"
} }
} }
-36
View File
@@ -1,36 +0,0 @@
export function getVersions(platform) {
const versions = {
"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.7.0", "2.7.1", "2.7.2", "2.7.3", "2.7.4", "2.7.5",
"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.1.0-preview1", "3.1.0",
"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.3.0.0", "9.3.1.0", "9.3.2.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",
"head"
],
"truffleruby+graalvm": [
"21.2.0", "21.3.0",
"head"
]
}
return versions
}
+34
View File
@@ -0,0 +1,34 @@
{
"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",
"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.1.0-preview1", "3.1.0", "3.1.1", "3.1.2",
"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.3.0.0", "9.3.1.0", "9.3.2.0", "9.3.3.0", "9.3.4.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",
"head"
],
"truffleruby+graalvm": [
"21.2.0", "21.3.0",
"22.0.0.2",
"head"
]
}
+2 -2
View File
@@ -13,7 +13,7 @@ const releasesURL = 'https://github.com/ruby/ruby-builder/releases'
const windows = common.windows const windows = common.windows
export function getAvailableVersions(platform, engine) { export function getAvailableVersions(platform, engine) {
return rubyBuilderVersions.getVersions(platform)[engine] return rubyBuilderVersions[engine]
} }
export async function install(platform, engine, version) { export async function install(platform, engine, version) {
@@ -79,7 +79,7 @@ async function downloadAndExtract(platform, engine, version, rubyPrefix) {
return await tc.downloadTool(url) return await tc.downloadTool(url)
}) })
await common.measure('Extracting Ruby', async () => { await common.measure('Extracting Ruby', async () => {
if (windows) { if (windows) {
// Windows 2016 doesn't have system tar, use MSYS2's, it needs unix style paths // Windows 2016 doesn't have system tar, use MSYS2's, it needs unix style paths
await exec.exec('tar', ['-xz', '-C', common.win2nix(parentDir), '-f', common.win2nix(downloadPath)]) await exec.exec('tar', ['-xz', '-C', common.win2nix(parentDir), '-f', common.win2nix(downloadPath)])
+30
View File
@@ -0,0 +1,30 @@
const path = require('path')
const exec = require('@actions/exec')
const semver = require('semver')
export async function rubygemsUpdate(rubygemsVersionInput, rubyPrefix) {
const gem = path.join(rubyPrefix, 'bin', 'gem')
let gemVersion = ''
await exec.exec(gem, ['--version'], {
listeners: {
stdout: (data) => (gemVersion += data.toString()),
}
});
gemVersion = semver.coerce(gemVersion.trim())
console.log(`Default RubyGems version is ${gemVersion}`)
if (rubygemsVersionInput === 'latest') {
console.log('Updating RubyGems to latest version')
await exec.exec(gem, ['update', '--system'])
} else if (semver.gt(rubygemsVersionInput, gemVersion)) {
console.log(`Updating RubyGems to ${rubygemsVersionInput}`)
await exec.exec(gem, ['update', '--system', rubygemsVersionInput])
} else {
console.log(`Skipping RubyGems update because the given version (${rubygemsVersionInput}) is not newer than the default version (${gemVersion})`)
}
return true
}
+3 -2
View File
@@ -1,5 +1,6 @@
hash = File.read('ruby-builder-versions.js')[/\bversions = {[^}]+}/] require 'json'
versions = eval hash hash = File.read('ruby-builder-versions.json')
versions = JSON.load(hash).transform_keys(&:to_sym)
by_minor = versions[:ruby].group_by { |v| v[/^\d\.\d/] } by_minor = versions[:ruby].group_by { |v| v[/^\d\.\d/] }
@@ -1,4 +1,4 @@
export const versions = { {
"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": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.0.0-p648/ruby-2.0.0-p648-x64-mingw32.7z",
"2.1.9": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.1.9/ruby-2.1.9-x64-mingw32.7z", "2.1.9": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.1.9/ruby-2.1.9-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.2.6": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.2.6/ruby-2.2.6-x64-mingw32.7z",
@@ -32,17 +32,24 @@ export const versions = {
"2.6.7": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.7-1/rubyinstaller-2.6.7-1-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.6.8": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.8-1/rubyinstaller-2.6.8-1-x64.7z", "2.6.8": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.8-1/rubyinstaller-2.6.8-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.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.7.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.0-1/rubyinstaller-2.7.0-1-x64.7z", "2.7.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.0-1/rubyinstaller-2.7.0-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.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.7.2": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.2-1/rubyinstaller-2.7.2-1-x64.7z",
"2.7.3": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.3-1/rubyinstaller-2.7.3-1-x64.7z", "2.7.3": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.3-1/rubyinstaller-2.7.3-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.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.7.5": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.5-1/rubyinstaller-2.7.5-1-x64.7z",
"2.7.6": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.6-1/rubyinstaller-2.7.6-1-x64.7z",
"3.0.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.0-1/rubyinstaller-3.0.0-1-x64.7z", "3.0.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.0-1/rubyinstaller-3.0.0-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.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", "3.0.2": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.2-1/rubyinstaller-3.0.2-1-x64.7z",
"3.0.3": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.3-1/rubyinstaller-3.0.3-1-x64.7z", "3.0.3": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.3-1/rubyinstaller-3.0.3-1-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.1.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.0-1/rubyinstaller-3.1.0-1-x64.7z",
"3.1.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.1-1/rubyinstaller-3.1.1-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",
"head": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-head-x64.7z", "head": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-head-x64.7z",
"mingw": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mingw.7z", "mingw": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mingw.7z",
"mswin": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mswin.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"
} }
+131 -15
View File
@@ -9,16 +9,20 @@ const exec = require('@actions/exec')
const io = require('@actions/io') const io = require('@actions/io')
const tc = require('@actions/tool-cache') const tc = require('@actions/tool-cache')
const common = require('./common') const common = require('./common')
const rubyInstallerVersions = require('./windows-versions').versions const rubyInstallerVersions = require('./windows-versions.json')
const drive = common.drive const drive = common.drive
const msys2BasePath = 'C:\\msys64'
// needed for 2.0-2.3, and mswin, cert file used by Git for Windows // needed for 2.0-2.3, and mswin, cert file used by Git for Windows
const certFile = 'C:\\Program Files\\Git\\mingw64\\ssl\\cert.pem' const certFile = 'C:\\Program Files\\Git\\mingw64\\ssl\\cert.pem'
// location & path for old RubyInstaller DevKit (MSYS), Ruby 2.0-2.3 // location & path for old RubyInstaller DevKit (MSYS1), Ruby 2.0-2.3
const msys = `${drive}:\\DevKit64` const msys1 = `${drive}:\\DevKit64`
const msysPathEntries = [`${msys}\\mingw\\x86_64-w64-mingw32\\bin`, `${msys}\\mingw\\bin`, `${msys}\\bin`] const msysPathEntries = [`${msys1}\\mingw\\x86_64-w64-mingw32\\bin`, `${msys1}\\mingw\\bin`, `${msys1}\\bin`]
const virtualEnv = common.getVirtualEnvironmentName()
export function getAvailableVersions(platform, engine) { export function getAvailableVersions(platform, engine) {
if (engine === 'ruby') { if (engine === 'ruby') {
@@ -31,6 +35,10 @@ export function getAvailableVersions(platform, engine) {
export async function install(platform, engine, version) { export async function install(platform, engine, version) {
const url = rubyInstallerVersions[version] const url = rubyInstallerVersions[version]
// 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.
const hasMSYS2PreInstalled = ['windows-2019', 'windows-2016'].includes(virtualEnv)
if (!url.endsWith('.7z')) { if (!url.endsWith('.7z')) {
throw new Error(`URL should end in .7z: ${url}`) throw new Error(`URL should end in .7z: ${url}`)
} }
@@ -50,15 +58,71 @@ export async function install(platform, engine, version) {
let toolchainPaths = (version === 'mswin') ? await setupMSWin() : await setupMingw(version) let toolchainPaths = (version === 'mswin') ? await setupMSWin() : await setupMingw(version)
common.setupPath([`${rubyPrefix}\\bin`, ...toolchainPaths])
if (!inToolCache) { if (!inToolCache) {
await downloadAndExtract(engine, version, url, base, rubyPrefix); await downloadAndExtract(engine, version, url, base, rubyPrefix);
} }
const msys2Type = common.setupPath([`${rubyPrefix}\\bin`, ...toolchainPaths])
// install msys2 tools for all Ruby versions, only install mingw or ucrt for Rubies >= 2.4
if (!hasMSYS2PreInstalled) {
await installMSYS2Tools()
}
// windows 2016 and 2019 need ucrt64 installed, 2022 and future images need
// ucrt64 or mingw64 installed, depending on Ruby version
if (((msys2Type === 'ucrt64') || !hasMSYS2PreInstalled) && common.floatVersion(version) >= 2.4) {
await installGCCTools(msys2Type)
}
const ridk = `${rubyPrefix}\\bin\\ridk.cmd`
if (fs.existsSync(ridk)) {
await common.measure('Adding ridk env variables', async () => addRidkEnv(ridk))
}
return rubyPrefix return rubyPrefix
} }
// Actions windows-2022 image does not contain any mingw or ucrt build tools. Install tools for it,
// and also install ucrt tools on earlier versions, which have msys2 and mingw tools preinstalled.
async function installGCCTools(type) {
const downloadPath = await common.measure(`Downloading ${type} build tools`, async () => {
let url = `https://github.com/MSP-Greg/setup-msys2-gcc/releases/download/msys2-gcc-pkgs/${type}.7z`
console.log(url)
return await tc.downloadTool(url)
})
await common.measure(`Extracting ${type} build tools`, async () =>
// -aoa overwrite existing, -bd disable progress indicator
exec.exec('7z', ['x', downloadPath, '-aoa', '-bd', `-o${msys2BasePath}`], { silent: true }))
}
// Actions windows-2022 image does not contain any MSYS2 build tools. Install tools for it.
// A subset of the MSYS2 base-devel group
async function installMSYS2Tools() {
const downloadPath = await common.measure(`Downloading msys2 build tools`, async () => {
let url = `https://github.com/MSP-Greg/setup-msys2-gcc/releases/download/msys2-gcc-pkgs/msys2.7z`
console.log(url)
return await tc.downloadTool(url)
})
// need to remove all directories, since they may indicate old packages are installed,
// otherwise, error of "error: duplicated database entry"
fs.rmdirSync(`${msys2BasePath}\\var\\lib\\pacman\\local`, { recursive: true, force: true })
await common.measure(`Extracting msys2 build tools`, async () =>
// -aoa overwrite existing, -bd disable progress indicator
exec.exec('7z', ['x', downloadPath, '-aoa', '-bd', `-o${msys2BasePath}`], { silent: true }))
}
// Windows JRuby can install gems that require compile tools, only needed for
// windows-2022 and later images
export async function installJRubyTools() {
await installMSYS2Tools()
await installGCCTools('mingw64')
}
async function downloadAndExtract(engine, version, url, base, rubyPrefix) { async function downloadAndExtract(engine, version, url, base, rubyPrefix) {
const parentDir = path.dirname(rubyPrefix) const parentDir = path.dirname(rubyPrefix)
@@ -67,8 +131,9 @@ async function downloadAndExtract(engine, version, url, base, rubyPrefix) {
return await tc.downloadTool(url) return await tc.downloadTool(url)
}) })
await common.measure('Extracting Ruby', async () => await common.measure('Extracting Ruby', async () =>
exec.exec('7z', ['x', downloadPath, `-xr!${base}\\share\\doc`, `-o${parentDir}`], { silent: true })) // -bd disable progress indicator, -xr extract but exclude share\doc files
exec.exec('7z', ['x', downloadPath, '-bd', `-xr!${base}\\share\\doc`, `-o${parentDir}`], { silent: true }))
if (base !== path.basename(rubyPrefix)) { if (base !== path.basename(rubyPrefix)) {
await io.mv(path.join(parentDir, base), rubyPrefix) await io.mv(path.join(parentDir, base), rubyPrefix)
@@ -82,23 +147,29 @@ async function downloadAndExtract(engine, version, url, base, rubyPrefix) {
async function setupMingw(version) { async function setupMingw(version) {
core.exportVariable('MAKE', 'make.exe') core.exportVariable('MAKE', 'make.exe')
// rename these to avoid confusion when Ruby is using OpenSSL 1.0.2.
// most current extconf files look for 1.1.x dll files first, which is the version of the renamed files
if (common.floatVersion(version) <= 2.4) {
renameSystem32Dlls()
}
if (common.floatVersion(version) <= 2.3) { if (common.floatVersion(version) <= 2.3) {
core.exportVariable('SSL_CERT_FILE', certFile) core.exportVariable('SSL_CERT_FILE', certFile)
await common.measure('Installing MSYS', async () => installMSYS(version)) await common.measure('Installing MSYS1', async () => installMSYS1(version))
return msysPathEntries return msysPathEntries
} else { } else {
return [] return []
} }
} }
// Ruby 2.0, 2.1, 2.2 and 2.3 // Ruby 2.0-2.3
async function installMSYS(version) { async function installMSYS1(version) {
const url = 'https://github.com/oneclick/rubyinstaller/releases/download/devkit-4.7.2/DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe' const url = 'https://github.com/oneclick/rubyinstaller/releases/download/devkit-4.7.2/DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe'
const downloadPath = await tc.downloadTool(url) const downloadPath = await tc.downloadTool(url)
await exec.exec('7z', ['x', downloadPath, `-o${msys}`], { silent: true }) await exec.exec('7z', ['x', downloadPath, `-o${msys1}`], { silent: true })
// below are set in the old devkit.rb file ? // below are set in the old devkit.rb file ?
core.exportVariable('RI_DEVKIT', msys) core.exportVariable('RI_DEVKIT', msys1)
core.exportVariable('CC' , 'gcc') core.exportVariable('CC' , 'gcc')
core.exportVariable('CXX', 'g++') core.exportVariable('CXX', 'g++')
core.exportVariable('CPP', 'cpp') core.exportVariable('CPP', 'cpp')
@@ -126,9 +197,22 @@ async function setupMSWin() {
/* Sets MSVC environment for use in Actions /* Sets MSVC environment for use in Actions
* allows steps to run without running vcvars*.bat, also for PowerShell * allows steps to run without running vcvars*.bat, also for PowerShell
* adds a convenience VCVARS environment variable * adds a convenience VCVARS environment variable
* this assumes a single Visual Studio version being available in the windows-latest image */ * this assumes a single Visual Studio version being available in the Windows images */
export function addVCVARSEnv() { export function addVCVARSEnv() {
const vcVars = '"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise\\VC\\Auxiliary\\Build\\vcvars64.bat"' let vcVars = ''
switch (virtualEnv) {
case 'windows-2016':
vcVars = '"C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\VC\\Auxiliary\\Build\\vcvars64.bat"'
break
case 'windows-2019':
vcVars = '"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise\\VC\\Auxiliary\\Build\\vcvars64.bat"'
break
case 'windows-2022':
vcVars = '"C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Auxiliary\\Build\\vcvars64.bat"'
break
default:
throw new Error(`Unknown Windows Image: ${virtualEnv}`)
}
core.exportVariable('VCVARS', vcVars) core.exportVariable('VCVARS', vcVars)
let newEnv = new Map() let newEnv = new Map()
@@ -153,3 +237,35 @@ export function addVCVARSEnv() {
} }
return newPathEntries return newPathEntries
} }
// ssl files cause issues with non RI2 Rubies (<2.4) and ruby/ruby's CI from build folder due to dll resolution
function renameSystem32Dlls() {
const sys32 = 'C:\\Windows\\System32\\'
const badFiles = [`${sys32}libcrypto-1_1-x64.dll`, `${sys32}libssl-1_1-x64.dll`]
const existing = badFiles.filter((dll) => fs.existsSync(dll))
if (existing.length > 0) {
console.log(`Renaming ${existing.join(' and ')} to avoid dll resolution conflicts on Ruby <= 2.4`)
existing.forEach(dll => fs.renameSync(dll, `${dll}_`))
}
}
// Sets MSYS2 ENV variables set from running `ridk enable`
function addRidkEnv(ridk) {
let newEnv = new Map()
let cmd = `cmd.exe /c "${ridk} enable && set"`
let newSet = cp.execSync(cmd).toString().trim().split(/\r?\n/)
newSet = newSet.filter(line => /^\S+=\S+/.test(line))
newSet.forEach(s => {
let [k, v] = common.partition(s, '=')
newEnv.set(k, v)
})
for (let [k, v] of newEnv) {
if (process.env[k] !== v) {
if (!/^Path$/i.test(k)) {
console.log(`${k}=${v}`)
core.exportVariable(k, v)
}
}
}
}
Generated
+126 -105
View File
@@ -3,21 +3,28 @@
"@actions/cache@^1.0.8": "@actions/cache@^1.0.8":
version "1.0.8" version "1.0.9"
resolved "https://registry.yarnpkg.com/@actions/cache/-/cache-1.0.8.tgz#426ad3a2127b35a4e21ad906e02202dc8b96663f" resolved "https://registry.yarnpkg.com/@actions/cache/-/cache-1.0.9.tgz#fd63b9300639d0b43803ab3c4d1158b86a8ca49e"
integrity sha512-GWNNB67w93HGJRQXlsV56YqrdAuDoP3esK/mo5mzU8WoDCVjtQgJGsTdkYUX7brswtT7xnI30bWNo1WLKQ8FZQ== integrity sha512-VzqeDyW3kIDdARNQphd1FrzZCiJRuv98aXwM3R+BLe2UvdZXdRqjC/rrytSm4Nv4OJuI8NA1pbhkXIf+a4LFtw==
dependencies: dependencies:
"@actions/core" "^1.2.6" "@actions/core" "^1.2.6"
"@actions/exec" "^1.0.1" "@actions/exec" "^1.0.1"
"@actions/glob" "^0.1.0" "@actions/glob" "^0.1.0"
"@actions/http-client" "^1.0.9" "@actions/http-client" "^1.0.9"
"@actions/io" "^1.0.1" "@actions/io" "^1.0.1"
"@azure/ms-rest-js" "^2.0.7" "@azure/ms-rest-js" "^2.6.0"
"@azure/storage-blob" "^12.1.2" "@azure/storage-blob" "^12.8.0"
semver "^6.1.0" semver "^6.1.0"
uuid "^3.3.3" uuid "^3.3.3"
"@actions/core@^1.2.6", "@actions/core@^1.4.0": "@actions/core@^1.2.6":
version "1.6.0"
resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.6.0.tgz#0568e47039bfb6a9170393a73f3b7eb3b22462cb"
integrity sha512-NB1UAZomZlCV/LmJqkLhNTqtKfFXJZAUPcfl/zqG7EfsQdeUJtaWO98SGbuQ3pydJ3fHl2CvI/51OKYlCYYcaw==
dependencies:
"@actions/http-client" "^1.0.11"
"@actions/core@^1.4.0":
version "1.4.0" version "1.4.0"
resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.4.0.tgz#cf2e6ee317e314b03886adfeb20e448d50d6e524" resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.4.0.tgz#cf2e6ee317e314b03886adfeb20e448d50d6e524"
integrity sha512-CGx2ilGq5i7zSLgiiGUtBCxhRRxibJYU6Fim0Q1Wg2aQL2LTnF27zbqZOrxfvFQ55eSBW0L8uVStgtKMpa0Qlg== integrity sha512-CGx2ilGq5i7zSLgiiGUtBCxhRRxibJYU6Fim0Q1Wg2aQL2LTnF27zbqZOrxfvFQ55eSBW0L8uVStgtKMpa0Qlg==
@@ -37,7 +44,7 @@
"@actions/core" "^1.2.6" "@actions/core" "^1.2.6"
minimatch "^3.0.4" minimatch "^3.0.4"
"@actions/http-client@^1.0.8", "@actions/http-client@^1.0.9": "@actions/http-client@^1.0.11", "@actions/http-client@^1.0.8", "@actions/http-client@^1.0.9":
version "1.0.11" version "1.0.11"
resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-1.0.11.tgz#c58b12e9aa8b159ee39e7dd6cbd0e91d905633c0" resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-1.0.11.tgz#c58b12e9aa8b159ee39e7dd6cbd0e91d905633c0"
integrity sha512-VRYHGQV1rqnROJqdMvGUbY/Kn8vriQe/F9HR2AlYHzmKuM/p3kjNuXhmdBfcVgsvRWTz5C5XW5xvndZrVBuAYg== integrity sha512-VRYHGQV1rqnROJqdMvGUbY/Kn8vriQe/F9HR2AlYHzmKuM/p3kjNuXhmdBfcVgsvRWTz5C5XW5xvndZrVBuAYg==
@@ -69,32 +76,32 @@
tslib "^2.0.0" tslib "^2.0.0"
"@azure/core-asynciterator-polyfill@^1.0.0": "@azure/core-asynciterator-polyfill@^1.0.0":
version "1.0.0" version "1.0.2"
resolved "https://registry.yarnpkg.com/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.0.tgz#dcccebb88406e5c76e0e1d52e8cc4c43a68b3ee7" resolved "https://registry.yarnpkg.com/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.2.tgz#0dd3849fb8d97f062a39db0e5cadc9ffaf861fec"
integrity sha512-kmv8CGrPfN9SwMwrkiBK9VTQYxdFQEGe0BmQk+M8io56P9KNzpAxcWE/1fxJj7uouwN4kXF0BHW8DNlgx+wtCg== integrity sha512-3rkP4LnnlWawl0LZptJOdXNrT/fHp2eQMadoasa6afspXdpGrtPZuAQc2PD0cpgyuoXtUWyC3tv7xfntjGS5Dw==
"@azure/core-auth@^1.1.4", "@azure/core-auth@^1.3.0": "@azure/core-auth@^1.1.4", "@azure/core-auth@^1.3.0":
version "1.3.0" version "1.3.2"
resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.3.0.tgz#0d55517cf0650aefe755669aca8a2f3724fcf536" resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.3.2.tgz#6a2c248576c26df365f6c7881ca04b7f6d08e3d0"
integrity sha512-kSDSZBL6c0CYdhb+7KuutnKGf2geeT+bCJAgccB0DD7wmNJSsQPcF7TcuoZX83B7VK4tLz/u+8sOO/CnCsYp8A== integrity sha512-7CU6DmCHIZp5ZPiZ9r3J17lTKMmYsm/zGvNkjArQwPkrLlZ1TZ+EUYfGgh2X31OLMVAQCTJZW4cXHJi02EbJnA==
dependencies: dependencies:
"@azure/abort-controller" "^1.0.0" "@azure/abort-controller" "^1.0.0"
tslib "^2.0.0" tslib "^2.2.0"
"@azure/core-http@^1.2.0": "@azure/core-http@^2.0.0":
version "1.2.6" version "2.2.4"
resolved "https://registry.yarnpkg.com/@azure/core-http/-/core-http-1.2.6.tgz#9cd508418572d2062fd3175274219438772bdb65" resolved "https://registry.yarnpkg.com/@azure/core-http/-/core-http-2.2.4.tgz#df5a5b4138dbbc4299879f2fc6f257d0a5f0401e"
integrity sha512-odtH7UMKtekc5YQ86xg9GlVHNXR6pq2JgJ5FBo7/jbOjNGdBqcrIVrZx2bevXVJz/uUTSx6vUf62gzTXTfqYSQ== integrity sha512-QmmJmexXKtPyc3/rsZR/YTLDvMatzbzAypJmLzvlfxgz/SkgnqV/D4f6F2LsK6tBj1qhyp8BoXiOebiej0zz3A==
dependencies: dependencies:
"@azure/abort-controller" "^1.0.0" "@azure/abort-controller" "^1.0.0"
"@azure/core-asynciterator-polyfill" "^1.0.0" "@azure/core-asynciterator-polyfill" "^1.0.0"
"@azure/core-auth" "^1.3.0" "@azure/core-auth" "^1.3.0"
"@azure/core-tracing" "1.0.0-preview.11" "@azure/core-tracing" "1.0.0-preview.13"
"@azure/logger" "^1.0.0" "@azure/logger" "^1.0.0"
"@types/node-fetch" "^2.5.0" "@types/node-fetch" "^2.5.0"
"@types/tunnel" "^0.0.1" "@types/tunnel" "^0.0.3"
form-data "^3.0.0" form-data "^4.0.0"
node-fetch "^2.6.0" node-fetch "^2.6.7"
process "^0.11.10" process "^0.11.10"
tough-cookie "^4.0.0" tough-cookie "^4.0.0"
tslib "^2.2.0" tslib "^2.2.0"
@@ -102,44 +109,43 @@
uuid "^8.3.0" uuid "^8.3.0"
xml2js "^0.4.19" xml2js "^0.4.19"
"@azure/core-lro@^1.0.2": "@azure/core-lro@^2.2.0":
version "1.0.5" version "2.2.3"
resolved "https://registry.yarnpkg.com/@azure/core-lro/-/core-lro-1.0.5.tgz#856a2cb6a9bec739ee9cde33a27cc28f81ac0522" resolved "https://registry.yarnpkg.com/@azure/core-lro/-/core-lro-2.2.3.tgz#3e245d37ede00f6410c1ea1fb76679dbdec627eb"
integrity sha512-0EFCFZxARrIoLWMIRt4vuqconRVIO2Iin7nFBfJiYCCbKp5eEmxutNk8uqudPmG0XFl5YqlVh68/al/vbE5OOg== integrity sha512-UMdlR9NsqDCLTba3EUbRjfMF4gDmWvld196JmUjbz9WWhJ2XT00OR5MXeWiR+vmGT+ETiO4hHFCi2/eGO5YVtg==
dependencies: dependencies:
"@azure/abort-controller" "^1.0.0" "@azure/abort-controller" "^1.0.0"
"@azure/core-http" "^1.2.0" "@azure/core-tracing" "1.0.0-preview.13"
"@azure/core-tracing" "1.0.0-preview.11" "@azure/logger" "^1.0.0"
events "^3.0.0" tslib "^2.2.0"
tslib "^2.0.0"
"@azure/core-paging@^1.1.1": "@azure/core-paging@^1.1.1":
version "1.1.3" version "1.2.1"
resolved "https://registry.yarnpkg.com/@azure/core-paging/-/core-paging-1.1.3.tgz#3587c9898a0530cacb64bab216d7318468aa5efc" resolved "https://registry.yarnpkg.com/@azure/core-paging/-/core-paging-1.2.1.tgz#1b884f563b6e49971e9a922da3c7a20931867b54"
integrity sha512-his7Ah40ThEYORSpIAwuh6B8wkGwO/zG7gqVtmSE4WAJ46e36zUDXTKReUCLBDc6HmjjApQQxxcRFy5FruG79A== integrity sha512-UtH5iMlYsvg+nQYIl4UHlvvSrsBjOlRF4fs0j7mxd3rWdAStrKYrh2durOpHs5C9yZbVhsVDaisoyaf/lL1EVA==
dependencies: dependencies:
"@azure/core-asynciterator-polyfill" "^1.0.0" "@azure/core-asynciterator-polyfill" "^1.0.0"
tslib "^2.2.0"
"@azure/core-tracing@1.0.0-preview.11": "@azure/core-tracing@1.0.0-preview.13":
version "1.0.0-preview.11" version "1.0.0-preview.13"
resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.0.0-preview.11.tgz#bdfb2ba73cd6c39b7d6c207b9522eb98e08b4ddd" resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.0.0-preview.13.tgz#55883d40ae2042f6f1e12b17dd0c0d34c536d644"
integrity sha512-frF0pJc9HTmKncVokhBxCqipjbql02DThQ1ZJ9wLi7SDMLdPAFyDI5xZNzX5guLz+/DtPkY+SGK2li9FIXqshQ== integrity sha512-KxDlhXyMlh2Jhj2ykX6vNEU0Vou4nHr025KoSEiz7cS3BNiHNaZcdECk/DmLkEB0as5T7b/TpRcehJ5yV6NeXQ==
dependencies: dependencies:
"@opencensus/web-types" "0.0.7" "@opentelemetry/api" "^1.0.1"
"@opentelemetry/api" "1.0.0-rc.0" tslib "^2.2.0"
tslib "^2.0.0"
"@azure/logger@^1.0.0": "@azure/logger@^1.0.0":
version "1.0.2" version "1.0.3"
resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.0.2.tgz#ad2d06478eeda7835f53def7e4566981b47d9787" resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.0.3.tgz#6e36704aa51be7d4a1bae24731ea580836293c96"
integrity sha512-YZNjNV0vL3nN2nedmcjQBcpCTo3oqceXmgiQtEm6fLpucjRZyQKAQruhCmCpRlB1iykqKJJ/Y8CDmT5rIE6IJw== integrity sha512-aK4s3Xxjrx3daZr3VylxejK3vG5ExXck5WOHDJ8in/k9AqlfIyFMMT1uG7u8mNjX+QRILTIn0/Xgschfh/dQ9g==
dependencies: dependencies:
tslib "^2.0.0" tslib "^2.2.0"
"@azure/ms-rest-js@^2.0.7": "@azure/ms-rest-js@^2.6.0":
version "2.5.2" version "2.6.0"
resolved "https://registry.yarnpkg.com/@azure/ms-rest-js/-/ms-rest-js-2.5.2.tgz#41d2e12456447dc21b4aaa09e74d1550eaf38f14" resolved "https://registry.yarnpkg.com/@azure/ms-rest-js/-/ms-rest-js-2.6.0.tgz#ec06e6a0b704567ea9b2c8044821cf47148c586b"
integrity sha512-9nCuuoYwHZEZw1t0MVtENH+c1k2R4maYAlBBDSZhZu6bEucyfYUUigNXXKjt2cFBt4sO+sTzi0uI0f/fiPFr+Q== integrity sha512-4C5FCtvEzWudblB+h92/TYYPiq7tuElX8icVYToxOdggnYqeec4Se14mjse5miInKtZahiFHdl8lZA/jziEc5g==
dependencies: dependencies:
"@azure/core-auth" "^1.1.4" "@azure/core-auth" "^1.1.4"
abort-controller "^3.0.0" abort-controller "^3.0.0"
@@ -148,57 +154,52 @@
tough-cookie "^3.0.1" tough-cookie "^3.0.1"
tslib "^1.10.0" tslib "^1.10.0"
tunnel "0.0.6" tunnel "0.0.6"
uuid "^3.3.2" uuid "^8.3.2"
xml2js "^0.4.19" xml2js "^0.4.19"
"@azure/storage-blob@^12.1.2": "@azure/storage-blob@^12.8.0":
version "12.6.0" version "12.8.0"
resolved "https://registry.yarnpkg.com/@azure/storage-blob/-/storage-blob-12.6.0.tgz#9905d80e5f908a573cc65e1cb8302abc32818844" resolved "https://registry.yarnpkg.com/@azure/storage-blob/-/storage-blob-12.8.0.tgz#97b7ecc6c7b17bcbaf0281c79c16af6f512d6130"
integrity sha512-cAzsae+5ZdhugQfIT7o5SlVyF2Sc+HygZdPO41ZYdXklfGUyEt+5K4PyM5HQDc0MTVt6x7+waXcaAXT2eF9E6A== integrity sha512-c8+Wz19xauW0bGkTCoqZH4dYfbtBniPiGiRQOn1ca6G5jsjr4azwaTk9gwjVY8r3vY2Taf95eivLzipfIfiS4A==
dependencies: dependencies:
"@azure/abort-controller" "^1.0.0" "@azure/abort-controller" "^1.0.0"
"@azure/core-http" "^1.2.0" "@azure/core-http" "^2.0.0"
"@azure/core-lro" "^1.0.2" "@azure/core-lro" "^2.2.0"
"@azure/core-paging" "^1.1.1" "@azure/core-paging" "^1.1.1"
"@azure/core-tracing" "1.0.0-preview.11" "@azure/core-tracing" "1.0.0-preview.13"
"@azure/logger" "^1.0.0" "@azure/logger" "^1.0.0"
events "^3.0.0" events "^3.0.0"
tslib "^2.0.0" tslib "^2.2.0"
"@opencensus/web-types@0.0.7": "@opentelemetry/api@^1.0.1":
version "0.0.7" version "1.0.4"
resolved "https://registry.yarnpkg.com/@opencensus/web-types/-/web-types-0.0.7.tgz#4426de1fe5aa8f624db395d2152b902874f0570a" resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.0.4.tgz#a167e46c10d05a07ab299fc518793b0cff8f6924"
integrity sha512-xB+w7ZDAu3YBzqH44rCmG9/RlrOmFuDPt/bpf17eJr8eZSrLt7nc7LnWdxM9Mmoj/YKMHpxRg28txu3TcpiL+g== integrity sha512-BuJuXRSJNQ3QoKA6GWWDyuLpOUck+9hAXNMCnrloc1aWVoy6Xq6t9PUV08aBZ4Lutqq2LEHM486bpZqoViScog==
"@opentelemetry/api@1.0.0-rc.0":
version "1.0.0-rc.0"
resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.0.0-rc.0.tgz#0c7c3f5e1285f99cedb563d74ad1adb9822b5144"
integrity sha512-iXKByCMfrlO5S6Oh97BuM56tM2cIBB0XsL/vWF/AtJrJEKx4MC/Xdu0xDsGXMGcNWpqF7ujMsjjnp0+UHBwnDQ==
"@types/node-fetch@^2.5.0": "@types/node-fetch@^2.5.0":
version "2.5.10" version "2.6.0"
resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.10.tgz#9b4d4a0425562f9fcea70b12cb3fcdd946ca8132" resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.0.tgz#bf854a36a0d0d99436fd199e06612ef4e73591b6"
integrity sha512-IpkX0AasN44hgEad0gEF/V6EgR5n69VEqPEgnmoM8GsIGro3PowbWs4tR6IhxUTyPLpOn+fiGG6nrQhcmoCuIQ== integrity sha512-HT+uU6V27wJFXgEqTk/+rVE1MWcp5bg7Yuz//43TZ2PjpQbQ8vDLwVmB+fSpgs83j/+p+rMIlDRo9TL3IexWMA==
dependencies: dependencies:
"@types/node" "*" "@types/node" "*"
form-data "^3.0.0" form-data "^2.3.3"
"@types/node@*": "@types/node@*":
version "15.12.3" version "17.0.18"
resolved "https://registry.yarnpkg.com/@types/node/-/node-15.12.3.tgz#2817bf5f25bc82f56579018c53f7d41b1830b1af" resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.18.tgz#3b4fed5cfb58010e3a2be4b6e74615e4847f1074"
integrity sha512-SNt65CPCXvGNDZ3bvk1TQ0Qxoe3y1RKH88+wZ2Uf05dduBCqqFQ76ADP9pbT+Cpvj60SkRppMCh2Zo8tDixqjQ== integrity sha512-eKj4f/BsN/qcculZiRSujogjvp5O/k4lOW5m35NopjZM/QwLOR075a8pJW5hD+Rtdm2DaCVPENS6KtSQnUD6BA==
"@types/tunnel@^0.0.1": "@types/tunnel@^0.0.3":
version "0.0.1" version "0.0.3"
resolved "https://registry.yarnpkg.com/@types/tunnel/-/tunnel-0.0.1.tgz#0d72774768b73df26f25df9184273a42da72b19c" resolved "https://registry.yarnpkg.com/@types/tunnel/-/tunnel-0.0.3.tgz#f109e730b072b3136347561fc558c9358bb8c6e9"
integrity sha512-AOqu6bQu5MSWwYvehMXLukFHnupHrpZ8nvgae5Ggie9UwzDR1CCwoXgSSWNZJuyOlCdfdsWMA5F2LlmvyoTv8A== integrity sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==
dependencies: dependencies:
"@types/node" "*" "@types/node" "*"
"@vercel/ncc@^0.28.6": "@vercel/ncc@^0.31.1":
version "0.28.6" version "0.31.1"
resolved "https://registry.yarnpkg.com/@vercel/ncc/-/ncc-0.28.6.tgz#073c0ce8e0269210c0a9f180fb0bf949eecc20e0" resolved "https://registry.yarnpkg.com/@vercel/ncc/-/ncc-0.31.1.tgz#9346c7e59326f5eeac75c0286e47df94c2d6d8f7"
integrity sha512-t4BoSSuyK8BZaUE0gV18V6bkFs4st7baumtFGa50dv1tMu2GDBEBF8sUZaKBdKiL6DzJ2D2+XVCwYWWDcQOYdQ== integrity sha512-g0FAxwdViI6UzsiVz5HssIHqjcPa1EHL6h+2dcJD893SoCJaGdqqgUF09xnMW6goWnnhbLvgiKlgJWrJa+7qYA==
abort-controller@^3.0.0: abort-controller@^3.0.0:
version "3.0.0" version "3.0.0"
@@ -252,7 +253,7 @@ events@^3.0.0:
resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
form-data@^2.5.0: form-data@^2.3.3, form-data@^2.5.0:
version "2.5.1" version "2.5.1"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4"
integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==
@@ -261,10 +262,10 @@ form-data@^2.5.0:
combined-stream "^1.0.6" combined-stream "^1.0.6"
mime-types "^2.1.12" mime-types "^2.1.12"
form-data@^3.0.0: form-data@^4.0.0:
version "3.0.1" version "4.0.0"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
dependencies: dependencies:
asynckit "^0.4.0" asynckit "^0.4.0"
combined-stream "^1.0.8" combined-stream "^1.0.8"
@@ -275,29 +276,31 @@ ip-regex@^2.1.0:
resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=
mime-db@1.48.0: mime-db@1.51.0:
version "1.48.0" version "1.51.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.48.0.tgz#e35b31045dd7eada3aaad537ed88a33afbef2d1d" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c"
integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ== integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==
mime-types@^2.1.12: mime-types@^2.1.12:
version "2.1.31" version "2.1.34"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.31.tgz#a00d76b74317c61f9c2db2218b8e9f8e9c5c9e6b" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24"
integrity sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg== integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==
dependencies: dependencies:
mime-db "1.48.0" mime-db "1.51.0"
minimatch@^3.0.4: minimatch@^3.0.4:
version "3.0.4" version "3.1.1"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.1.tgz#879ad447200773912898b46cd516a7abbb5e50b0"
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== integrity sha512-reLxBcKUPNBnc/sVtAbxgRVFSegoGeLaSjmphNhcwcolhYLRgtJscn5mRl6YRZNQv40Y7P6JM2YhSIsbL9OB5A==
dependencies: dependencies:
brace-expansion "^1.1.7" brace-expansion "^1.1.7"
node-fetch@^2.6.0: node-fetch@^2.6.0, node-fetch@^2.6.7:
version "2.6.1" version "2.6.7"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
dependencies:
whatwg-url "^5.0.0"
process@^0.11.10: process@^0.11.10:
version "0.11.10" version "0.11.10"
@@ -342,15 +345,20 @@ tough-cookie@^4.0.0:
punycode "^2.1.1" punycode "^2.1.1"
universalify "^0.1.2" universalify "^0.1.2"
tr46@~0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
tslib@^1.10.0: tslib@^1.10.0:
version "1.14.1" version "1.14.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
tslib@^2.0.0, tslib@^2.2.0: tslib@^2.0.0, tslib@^2.2.0:
version "2.3.0" version "2.3.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
tunnel@0.0.6, tunnel@^0.0.6: tunnel@0.0.6, tunnel@^0.0.6:
version "0.0.6" version "0.0.6"
@@ -367,11 +375,24 @@ uuid@^3.3.2, uuid@^3.3.3:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
uuid@^8.3.0: uuid@^8.3.0, uuid@^8.3.2:
version "8.3.2" version "8.3.2"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
webidl-conversions@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=
whatwg-url@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0=
dependencies:
tr46 "~0.0.3"
webidl-conversions "^3.0.0"
xml2js@^0.4.19: xml2js@^0.4.19:
version "0.4.23" version "0.4.23"
resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66"