Compare commits

...

190 Commits

Author SHA1 Message Date
dependabot[bot] 31a395bcd6 Bump semver from 7.7.4 to 7.8.5
Bumps [semver](https://github.com/npm/node-semver) from 7.7.4 to 7.8.5.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.7.4...v7.8.5)

---
updated-dependencies:
- dependency-name: semver
  dependency-version: 7.8.5
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-07 07:07:50 -05:00
GitHub Actions 7782cf9cde Automation: update setup-beam version output to 324994a 2026-07-07 12:07:34 +00:00
dependabot[bot] 324994a2c5 Bump prettier from 3.9.1 to 3.9.4 (#481)
Bumps [prettier](https://github.com/prettier/prettier) from 3.9.1 to 3.9.4.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.9.1...3.9.4)

---
updated-dependencies:
- dependency-name: prettier
  dependency-version: 3.9.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-07 07:07:14 -05:00
GitHub Actions 551a8c58c5 Automation: update setup-beam version output to 74e4a98 2026-07-07 11:58:09 +00:00
dependabot[bot] 74e4a9879b Bump @vercel/ncc from 0.44.0 to 0.44.1 (#480)
Bumps [@vercel/ncc](https://github.com/vercel/ncc) from 0.44.0 to 0.44.1.
- [Release notes](https://github.com/vercel/ncc/releases)
- [Commits](https://github.com/vercel/ncc/compare/0.44.0...0.44.1)

---
updated-dependencies:
- dependency-name: "@vercel/ncc"
  dependency-version: 0.44.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-07 06:57:53 -05:00
GitHub Actions 992182bb93 Automation: update setup-beam version output to 837c16f 2026-07-07 11:37:41 +00:00
dependabot[bot] 837c16fb56 Bump csv-parse from 7.0.0 to 7.0.1 (#479)
Bumps [csv-parse](https://github.com/adaltas/node-csv/tree/HEAD/packages/csv-parse) from 7.0.0 to 7.0.1.
- [Changelog](https://github.com/adaltas/node-csv/blob/master/packages/csv-parse/CHANGELOG.md)
- [Commits](https://github.com/adaltas/node-csv/commits/csv-parse@7.0.1/packages/csv-parse)

---
updated-dependencies:
- dependency-name: csv-parse
  dependency-version: 7.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-07 06:37:26 -05:00
GitHub Actions 50a47d8240 Automation: update setup-beam version output to 149ca49 2026-06-30 20:39:42 +00:00
John Downey 149ca49ab5 Add tests for arm64 Linux runner OS detection (#462)
Add tests for arm64 ImageOS OS detection
2026-06-30 21:39:23 +01:00
GitHub Actions 48f5ea24e9 Automation: update setup-beam version output to fa47191 2026-06-30 20:09:03 +00:00
John Downey fa471919e3 Add tests for Ubuntu 26 runners (#465)
Add test coverage for Ubuntu 26.04 runners
2026-06-30 21:08:45 +01:00
GitHub Actions b59f4962e3 Automation: update setup-beam version output to 3598349 2026-06-30 20:03:00 +00:00
github-actions[bot] 35983496a6 Update 3rd party licenses (automation) (#478)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-06-30 21:01:49 +01:00
GitHub Actions fad8771ace Automation: update setup-beam version output to c35be0e 2026-06-29 22:24:43 +00:00
dependabot[bot] c35be0e285 Bump undici from 6.24.0 to 6.27.0 in the npm_and_yarn group across 1 directory (#477)
* Bump undici in the npm_and_yarn group across 1 directory

Bumps the npm_and_yarn group with 1 update in the / directory: [undici](https://github.com/nodejs/undici).


Updates `undici` from 6.24.0 to 6.27.0
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v6.24.0...v6.27.0)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 6.27.0
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>

* Help Renovate out (exec 'npm run build-dist')

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2026-06-29 23:24:27 +01:00
GitHub Actions e6d7811738 Automation: update setup-beam version output to b153028 2026-06-29 22:19:34 +00:00
dependabot[bot] b15302821e Bump smol-toml from 1.6.1 to 1.7.0 (#474)
* Bump smol-toml from 1.6.1 to 1.7.0

Bumps [smol-toml](https://github.com/squirrelchat/smol-toml) from 1.6.1 to 1.7.0.
- [Release notes](https://github.com/squirrelchat/smol-toml/releases)
- [Commits](https://github.com/squirrelchat/smol-toml/compare/v1.6.1...v1.7.0)

---
updated-dependencies:
- dependency-name: smol-toml
  dependency-version: 1.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Help Renovate out (exec 'npm run build-dist')

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2026-06-29 23:19:15 +01:00
GitHub Actions b0ba423105 Automation: update setup-beam version output to c648472 2026-06-29 22:17:42 +00:00
dependabot[bot] c648472e6f Bump csv-parse from 6.2.1 to 7.0.0 (#472)
* Bump csv-parse from 6.2.1 to 7.0.0

Bumps [csv-parse](https://github.com/adaltas/node-csv/tree/HEAD/packages/csv-parse) from 6.2.1 to 7.0.0.
- [Changelog](https://github.com/adaltas/node-csv/blob/master/packages/csv-parse/CHANGELOG.md)
- [Commits](https://github.com/adaltas/node-csv/commits/csv-parse@7.0.0/packages/csv-parse)

---
updated-dependencies:
- dependency-name: csv-parse
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Help Renovate out (exec 'npm run build-dist')

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2026-06-29 23:17:25 +01:00
GitHub Actions 3809396843 Automation: update setup-beam version output to f8797dd 2026-06-29 22:03:47 +00:00
github-actions[bot] f8797dd823 Update 3rd party licenses (automation) (#476)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-06-29 23:01:01 +01:00
dependabot[bot] a433e6bd12 Bump markdownlint-cli from 0.48.0 to 0.49.0 (#470)
Bumps [markdownlint-cli](https://github.com/igorshubovych/markdownlint-cli) from 0.48.0 to 0.49.0.
- [Release notes](https://github.com/igorshubovych/markdownlint-cli/releases)
- [Commits](https://github.com/igorshubovych/markdownlint-cli/compare/v0.48.0...v0.49.0)

---
updated-dependencies:
- dependency-name: markdownlint-cli
  dependency-version: 0.49.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-29 23:00:35 +01:00
dependabot[bot] e0a7f48cee Bump @vercel/ncc from 0.38.4 to 0.44.0 (#471)
Bumps [@vercel/ncc](https://github.com/vercel/ncc) from 0.38.4 to 0.44.0.
- [Release notes](https://github.com/vercel/ncc/releases)
- [Commits](https://github.com/vercel/ncc/compare/0.38.4...0.44.0)

---
updated-dependencies:
- dependency-name: "@vercel/ncc"
  dependency-version: 0.44.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-29 23:00:27 +01:00
dependabot[bot] c21f568d4c Bump eslint-plugin-yml from 3.3.1 to 3.5.0 (#473)
Bumps [eslint-plugin-yml](https://github.com/ota-meshi/eslint-plugin-yml) from 3.3.1 to 3.5.0.
- [Release notes](https://github.com/ota-meshi/eslint-plugin-yml/releases)
- [Changelog](https://github.com/ota-meshi/eslint-plugin-yml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ota-meshi/eslint-plugin-yml/compare/v3.3.1...v3.5.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-yml
  dependency-version: 3.5.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-29 23:00:16 +01:00
dependabot[bot] fe26b2283c Bump raven-actions/actionlint from 2.1.2 to 2.2.0 (#475)
Bumps [raven-actions/actionlint](https://github.com/raven-actions/actionlint) from 2.1.2 to 2.2.0.
- [Release notes](https://github.com/raven-actions/actionlint/releases)
- [Commits](https://github.com/raven-actions/actionlint/compare/v2.1.2...v2.2.0)

---
updated-dependencies:
- dependency-name: raven-actions/actionlint
  dependency-version: 2.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-29 23:00:00 +01:00
GitHub Actions 54075bcc5e Automation: update setup-beam version output to ea45c80 2026-06-28 16:35:41 +00:00
Jonatan Männchen ea45c8043f Remove lodash Dependency (#457)
NodeJS 24 contains RegExp.escape, no need for lodash.
2026-06-28 17:35:21 +01:00
GitHub Actions b4b8d851b6 Automation: update setup-beam version output to 20df794 2026-06-28 15:16:26 +00:00
dependabot[bot] 20df794ab3 Bump globals from 17.4.0 to 17.7.0 (#452)
Bumps [globals](https://github.com/sindresorhus/globals) from 17.4.0 to 17.7.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v17.4.0...v17.7.0)

---
updated-dependencies:
- dependency-name: globals
  dependency-version: 17.5.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-28 16:16:07 +01:00
GitHub Actions 9d5c5ca125 Automation: update setup-beam version output to ad42943 2026-06-28 15:14:47 +00:00
dependabot[bot] ad4294342c Bump prettier from 3.8.1 to 3.9.1 (#454)
Bumps [prettier](https://github.com/prettier/prettier) from 3.8.1 to 3.9.1.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.8.1...3.9.1)

---
updated-dependencies:
- dependency-name: prettier
  dependency-version: 3.8.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-28 16:14:29 +01:00
GitHub Actions 135c095dff Automation: update setup-beam version output to a04cfbb 2026-06-28 15:13:05 +00:00
dependabot[bot] a04cfbb50e Bump eslint from 10.1.0 to 10.6.0 (#453)
Bumps [eslint](https://github.com/eslint/eslint) from 10.1.0 to 10.6.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v10.1.0...v10.6.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.2.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-28 16:12:05 +01:00
GitHub Actions cd1472f941 Automation: update setup-beam version output to c80fdc9 2026-06-28 15:09:08 +00:00
dependabot[bot] c80fdc938c Bump actions/checkout from 6.0.2 to 7.0.0 (#467)
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.2 to 7.0.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v6.0.2...v7.0.0)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-28 16:08:48 +01:00
GitHub Actions aecd7abd75 Automation: update setup-beam version output to 6e9312b 2026-06-28 14:53:40 +00:00
Paulo F. Oliveira 6e9312bce0 fix: broken tests (mostly out of stuff being outdated) (#468)
* Update rebar3's releases.json per current results

* Up rebar3 test versions

* Retire windows-2019

* Add "support" to win25-vs2026 next to win25

windows-2025-vs2026 label was previously a beta testing
tag but is now the production default

* Fix rebar3 test releases.json

* Bump per CI results

* Fix per CI results (I checked in releases.json)

* Adapt to Ubuntu 26.04 (no -arm)

* Consider Ubuntu ARM variants in execution

* Typo

* Bump it to the minimum expect value

* Bump it to the minimum expect value

* Tweak ARM tests: drop windows-11

* Fix per prior test results

* Try testing OTP to update README

* Improve guarantees on the README (via tests)

* Improve guarantees on the README (via tests)

Trust tests in intervals (if first Ok and last Ok the middle Ok)

* Add further constraints for testing (per README)

* Remove moving-target test

This is prone to fail for an issue with OTP's main
branch but it shouldn't affect the action, so we
remove it

* Respect Hex's boundaries

* Make it consistent (no need for .0 in versioning)

* Restrict it a bit

We keep the README as-is, since there's nothing preventing us
from thinking it works as stated, but we move our tests forward

* Make it easier to follow

* Fix it per stalled CI

* Fix it: no macos-16; it's macos-26

* Deprecate macos-13

Per https://github.blog/changelog/2025-07-11-upcoming-changes-to-macos-hosted-runners-macos-latest-migration-and-xcode-support-policy-updates/#macos-13-is-closing-down

* Make ImageOS support more explicit

* Move forward
2026-06-28 15:53:20 +01:00
GitHub Actions 3985c7c047 Automation: update setup-beam version output to 35f5255 2026-06-28 12:40:09 +00:00
github-actions[bot] 35f52551d2 Update 3rd party licenses (automation) (#469)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-06-28 13:39:52 +01:00
GitHub Actions 0510550330 Automation: update setup-beam version output to 9eabb2c 2026-06-28 11:42:59 +00:00
github-actions[bot] 9eabb2c115 Update 3rd party licenses (automation) (#459)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-06-28 12:42:40 +01:00
GitHub Actions e5f1a7b722 Automation: update setup-beam version output to 7a27046 2026-04-29 01:33:13 +00:00
github-actions[bot] 7a27046239 Update 3rd party licenses (automation) (#446)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-04-29 02:32:56 +01:00
GitHub Actions fc68ffb904 Automation: update setup-beam version output to 190c3a5 2026-03-30 09:54:16 +00:00
Mitchell Henke 190c3a5e7b Fix error that occurs when parsing TOML files that use dotted keys (#444)
* Add test for parsing TOML file with dotted keys

* Use smol-toml instead of toml for TOML parsing

* Run build-dist
2026-03-30 10:53:57 +01:00
GitHub Actions 92dab893ed Automation: update setup-beam version output to 5dfda65 2026-03-28 23:59:28 +00:00
Paulo F. Oliveira 5dfda65506 fix: address Prototype Pollution via parse() in NodeJS flatted (#445)
Address Prototype Pollution via parse() in NodeJS flatted
2026-03-28 23:59:07 +00:00
GitHub Actions ef385d6edc Automation: update setup-beam version output to bf3c3af 2026-03-27 12:34:17 +00:00
dependabot[bot] bf3c3af135 Bump picomatch from 4.0.3 to 4.0.4 in the npm_and_yarn group across 1 directory (#443)
Bump picomatch in the npm_and_yarn group across 1 directory

Bumps the npm_and_yarn group with 1 update in the / directory: [picomatch](https://github.com/micromatch/picomatch).


Updates `picomatch` from 4.0.3 to 4.0.4
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/4.0.3...4.0.4)

---
updated-dependencies:
- dependency-name: picomatch
  dependency-version: 4.0.4
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-27 12:33:58 +00:00
GitHub Actions e7645e4102 Automation: update setup-beam version output to a36098e 2026-03-27 12:28:06 +00:00
dependabot[bot] a36098e741 Bump csv-parse from 6.1.0 to 6.2.1 (#440)
* Bump csv-parse from 6.1.0 to 6.2.1

Bumps [csv-parse](https://github.com/adaltas/node-csv/tree/HEAD/packages/csv-parse) from 6.1.0 to 6.2.1.
- [Changelog](https://github.com/adaltas/node-csv/blob/master/packages/csv-parse/CHANGELOG.md)
- [Commits](https://github.com/adaltas/node-csv/commits/csv-parse@6.2.1/packages/csv-parse)

---
updated-dependencies:
- dependency-name: csv-parse
  dependency-version: 6.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Help Dependabot out: npm run build-dist

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2026-03-27 12:27:46 +00:00
GitHub Actions 87781dc68a Automation: update setup-beam version output to d5f3979 2026-03-27 12:20:31 +00:00
Levi Buzolic d5f3979a5f Support Node 24 runtime (#426)
Update the action runtime, engine constraint, and CI workflow pins from Node 20 to Node 24 per GitHub's guidance on the deprecation of Node 20 on GitHub Actions runners: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
2026-03-27 12:20:13 +00:00
GitHub Actions 930b3281ba Automation: update setup-beam version output to 30056ca 2026-03-27 12:18:44 +00:00
github-actions[bot] 30056ca086 Update 3rd party licenses (automation) (#442)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-03-27 12:18:24 +00:00
GitHub Actions 1f3f354e6a Automation: update setup-beam version output to 3e49772 2026-03-27 12:11:39 +00:00
github-actions[bot] 3e49772722 Update 3rd party licenses (automation) (#436)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-03-27 12:11:17 +00:00
dependabot[bot] 2ac22cd739 Bump yauzl from 3.2.0 to 3.2.1 in the npm_and_yarn group across 1 directory (#437)
Bump yauzl in the npm_and_yarn group across 1 directory

Bumps the npm_and_yarn group with 1 update in the / directory: [yauzl](https://github.com/thejoshwolfe/yauzl).


Updates `yauzl` from 3.2.0 to 3.2.1
- [Commits](https://github.com/thejoshwolfe/yauzl/compare/3.2.0...3.2.1)

---
updated-dependencies:
- dependency-name: yauzl
  dependency-version: 3.2.1
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-27 12:11:05 +00:00
GitHub Actions c4782c7b58 Automation: update setup-beam version output to 0afadf6 2026-03-27 12:10:54 +00:00
dependabot[bot] 0afadf6bdd Bump eslint from 10.0.3 to 10.1.0 (#439)
Bumps [eslint](https://github.com/eslint/eslint) from 10.0.3 to 10.1.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v10.0.3...v10.1.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-27 12:10:34 +00:00
GitHub Actions e539b1ee26 Automation: update setup-beam version output to c5f0656 2026-03-15 18:22:01 +00:00
github-actions[bot] c5f0656346 Update 3rd party licenses (automation) (#435)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-03-15 18:21:42 +00:00
GitHub Actions ee09b1e59b Automation: update setup-beam version output to f8b54b5 2026-03-14 20:10:39 +00:00
Paulo F. Oliveira f8b54b559e Run ARM-specific tests consistently (#434)
* Run ARM-specific test consistently

* Fix for builds.hex.pm

https://builds.hex.pm/builds/otp/arm64/ubuntu-<x>.04/builds.txt

file is only available when <x> >= 20.

* Fix for builds.hex.pm

https://builds.hex.pm/builds/otp/arm64/ubuntu-20.04/builds.txt

does not contain Erlang 19 any more...
2026-03-14 20:10:19 +00:00
GitHub Actions bf1ce74034 Automation: update setup-beam version output to 559a930 2026-03-14 16:57:33 +00:00
dependabot[bot] 559a930751 Bump undici from 6.23.0 to 6.24.0 in the npm_and_yarn group across 1 directory (#432)
* Bump undici in the npm_and_yarn group across 1 directory

Bumps the npm_and_yarn group with 1 update in the / directory: [undici](https://github.com/nodejs/undici).


Updates `undici` from 6.23.0 to 6.24.0
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v6.23.0...v6.24.0)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 6.24.0
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>

* Help Dependabot (exec: npm run build-dist)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2026-03-14 16:57:11 +00:00
GitHub Actions 1380ebe712 Automation: update setup-beam version output to 0a54959 2026-03-14 16:50:39 +00:00
Sebastian Weddmark Olsson 0a549596b0 Compatibility matrix strategy (#389)
* Compatibility matrix strategy

Example on how one can maintain a compatibility matrix

* v2 -> v4

Co-authored-by: Kian-Meng Ang <kianmeng.ang@gmail.com>

* ubuntu-18 not longer available

* Update README.md after review suggestions

* Link rebar3 compat

Apparently rebar3 has started to maintain a version compatability table themselves. Missing older versions though

| 3.10.0 | 17         |
| 3.11.1 | 18         |

* Tweak README change proposal

* Apply suggestions from code review

Apply changes to resolve linter warnings

Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>

---------

Co-authored-by: Kian-Meng Ang <kianmeng.ang@gmail.com>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2026-03-14 16:50:22 +00:00
GitHub Actions 3a3c94fd9e Automation: update setup-beam version output to cfafb69 2026-03-14 16:43:34 +00:00
Daniel Widgren cfafb69ddd feat: add Erlang problem matchers (#433)
* feat: add Erlang problem matchers for erlc, dialyzer, CT, and EUnit

Adds GitHub Actions problem matchers for Erlang tooling, matching the
existing Elixir matcher support. Covers erlc errors/warnings (which
also catches dialyzer output), Common Test failures, and EUnit failures.

Closes #390

* chore: rebuild dist bundle and format test file

* refactor: move Erlang matchers into installOTP function

Moves maybeEnableErlangProblemMatchers() call inside installOTP(),
between setOutput and endGroup, matching the Elixir pattern.

* refactor: extract generic maybeEnableProblemMatchers function

Replaces separate maybeEnableErlangProblemMatchers and
maybeEnableElixirProblemMatchers with a single generic
maybeEnableProblemMatchers(language) and a problemMatchersEnabled()
helper.

* fix: use static paths for ncc to resolve matcher JSON files

ncc cannot trace dynamic template literals, so the matcher JSON files
were not being copied to dist/. Use a static map of paths instead.
2026-03-14 16:43:14 +00:00
GitHub Actions b3cbb6afbf Automation: update setup-beam version output to 2abe6cd 2026-03-14 16:30:13 +00:00
peter madsen-mygdal 2abe6cda7a fix: download correct Gleam binary for macOS and Linux ARM64 (#428)
The Gleam installer had two arch-related bugs:

1. Darwin reused the Linux config (installOpts.darwin = installOpts.linux),
   downloading x86_64-unknown-linux-musl on macOS, causing ENOEXEC.

2. Linux hardcoded x86_64, downloading the wrong binary on ARM64 runners,
   causing 'Syntax error' when trying to execute an x86_64 ELF.

Add arch detection via getRunnerOSArchitecture() to both Linux and
Darwin download URLs, selecting the correct aarch64 or x86_64 binary.
Add a proper Darwin config that downloads apple-darwin archives.
2026-03-14 16:29:49 +00:00
GitHub Actions d55fdba43f Automation: update setup-beam version output to eb86ad6 2026-03-14 16:29:25 +00:00
peter madsen-mygdal eb86ad6523 feat: add macOS-26 to supported ImageOS mappings (#430)
Add macos26 to the ImageOSToContainer map so runners using
macOS-26 are recognized instead of throwing an error.

Update macos.yml

Update README.md
2026-03-14 16:28:58 +00:00
GitHub Actions af6da5da48 Automation: update setup-beam version output to f018c1e 2026-03-13 23:46:13 +00:00
peter madsen-mygdal f018c1e6d8 fix: use dynamic import in tests to prevent ESM hoisting race (#429)
Static ESM imports are hoisted above top-level statements, causing
setup-beam.js to evaluate its main() guard before process.env.NODE_ENV
is set to 'test'. This triggered core.setFailed() during module load,
setting process.exitCode=1 and failing the test file even though all
individual test cases passed.

Switch setup-beam.js to a dynamic await import() so that the env and
input setup runs first, ensuring the NODE_ENV='test' guard works
correctly.

Amp-Thread-ID: https://ampcode.com/threads/T-019ce36a-a18f-7494-ac0a-c094a84f06ad

Co-authored-by: Amp <amp@ampcode.com>
2026-03-13 23:45:53 +00:00
GitHub Actions d843ebb78b Automation: update setup-beam version output to c8e0954 2026-03-11 17:47:37 +00:00
github-actions[bot] c8e09547a7 Update 3rd party licenses (automation) (#425)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-03-11 17:47:17 +00:00
GitHub Actions 9d5b75ddfd Automation: update setup-beam version output to 98c13a9 2026-03-09 22:41:35 +00:00
Dino Kovač 98c13a9ed3 Support mise.toml (#415)
* add support for mise.toml version file type

* changes from review

* Keep versioning consistent

* fix default value for version-file-type input

* Use single `version-file`, autodetect type

* Update src/setup-beam.js

Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>

* Improve log output for mise version files

* Rebuild dist

* Run build-dist

* add support for mise.toml version file type

* changes from review

* Keep versioning consistent

* fix default value for version-file-type input

* Use single `version-file`, autodetect type

* Update src/setup-beam.js

Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>

* Improve log output for mise version files

* Rebuild dist

* Run build-dist

---------

Co-authored-by: Michael Ruoss <michael.ruoss@cradle.bio>
Co-authored-by: Michael Ruoss <michael@michaelruoss.ch>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2026-03-09 22:41:15 +00:00
GitHub Actions 0f13bcf18a Automation: update setup-beam version output to c3137f5 2026-03-09 22:19:29 +00:00
dependabot[bot] c3137f5cd5 Bump globals from 17.3.0 to 17.4.0 (#421)
* Bump globals from 17.3.0 to 17.4.0

Bumps [globals](https://github.com/sindresorhus/globals) from 17.3.0 to 17.4.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v17.3.0...v17.4.0)

---
updated-dependencies:
- dependency-name: globals
  dependency-version: 17.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Prevent Cannot access 'isStrictVersion' before initialization

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2026-03-09 22:19:11 +00:00
GitHub Actions 4cbacdb2a9 Automation: update setup-beam version output to 687000a 2026-03-09 22:10:23 +00:00
dependabot[bot] 687000ab96 Bump @actions/core from 1.11.1 to 3.0.0 (#419)
* Bump @actions/core from 1.11.1 to 3.0.0

Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.11.1 to 3.0.0.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

---
updated-dependencies:
- dependency-name: "@actions/core"
  dependency-version: 3.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* npm run build-dist

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2026-03-09 22:09:48 +00:00
dependabot[bot] 9ba6605098 Bump eslint-plugin-yml from 1.18.0 to 3.3.1 (#418)
* Bump eslint-plugin-yml from 1.18.0 to 3.3.1

Bumps [eslint-plugin-yml](https://github.com/ota-meshi/eslint-plugin-yml) from 1.18.0 to 3.3.1.
- [Release notes](https://github.com/ota-meshi/eslint-plugin-yml/releases)
- [Changelog](https://github.com/ota-meshi/eslint-plugin-yml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ota-meshi/eslint-plugin-yml/compare/v1.18.0...v3.3.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-yml
  dependency-version: 3.3.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Help Dependabot

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2026-03-09 22:09:38 +00:00
GitHub Actions 722d91de6e Automation: update setup-beam version output to f79887d 2026-03-09 17:46:19 +00:00
dependabot[bot] f79887d1ba Bump eslint from 10.0.1 to 10.0.3 (#420)
Bumps [eslint](https://github.com/eslint/eslint) from 10.0.1 to 10.0.3.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v10.0.1...v10.0.3)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.0.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-09 17:44:31 +00:00
dependabot[bot] 30a0896082 Bump markdownlint-cli from 0.47.0 to 0.48.0 (#422)
Bumps [markdownlint-cli](https://github.com/igorshubovych/markdownlint-cli) from 0.47.0 to 0.48.0.
- [Release notes](https://github.com/igorshubovych/markdownlint-cli/releases)
- [Commits](https://github.com/igorshubovych/markdownlint-cli/compare/v0.47.0...v0.48.0)

---
updated-dependencies:
- dependency-name: markdownlint-cli
  dependency-version: 0.48.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-09 17:44:08 +00:00
dependabot[bot] 41c0004487 Bump actions/setup-node from 6.2.0 to 6.3.0 (#423)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.2.0 to 6.3.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v6.2.0...v6.3.0)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 6.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-09 17:43:59 +00:00
dependabot[bot] 9fc15d548d Bump raven-actions/actionlint from 2.1.1 to 2.1.2 (#424)
Bumps [raven-actions/actionlint](https://github.com/raven-actions/actionlint) from 2.1.1 to 2.1.2.
- [Release notes](https://github.com/raven-actions/actionlint/releases)
- [Commits](https://github.com/raven-actions/actionlint/compare/v2.1.1...v2.1.2)

---
updated-dependencies:
- dependency-name: raven-actions/actionlint
  dependency-version: 2.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-09 17:43:51 +00:00
GitHub Actions 19003af5f4 Automation: update setup-beam version output to 53a564f 2026-03-07 14:40:30 +00:00
github-actions[bot] 53a564f4bb Update 3rd party licenses (automation) (#417)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-03-07 14:40:09 +00:00
GitHub Actions 6ee130ce6b Automation: update setup-beam version output to 11a1f27 2026-03-06 20:46:44 +00:00
github-actions[bot] 11a1f27b1e Update 3rd party licenses (automation) (#416)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-03-06 20:46:21 +00:00
GitHub Actions 83bf0e8bac Automation: update setup-beam version output to 47d6c3c 2026-03-03 17:18:10 +00:00
github-actions[bot] 47d6c3c4af Update 3rd party licenses (automation) (#414)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-03-03 11:17:49 -06:00
GitHub Actions 0d2a6cb44d Automation: update setup-beam version output to 0f6ba5d 2026-03-03 04:07:24 +00:00
dependabot[bot] 0f6ba5d884 Bump @actions/tool-cache from 2.0.2 to 4.0.0 (#407)
* Bump @actions/tool-cache from 2.0.2 to 4.0.0

Bumps [@actions/tool-cache](https://github.com/actions/toolkit/tree/HEAD/packages/tool-cache) from 2.0.2 to 4.0.0.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/tool-cache/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/@actions/cache@4.0.0/packages/tool-cache)

---
updated-dependencies:
- dependency-name: "@actions/tool-cache"
  dependency-version: 4.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Help Dependabot

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2026-03-03 04:07:06 +00:00
GitHub Actions 58166ce788 Automation: update setup-beam version output to 4a07ed8 2026-03-03 03:58:51 +00:00
dependabot[bot] 4a07ed84ac Bump @actions/exec from 1.1.1 to 3.0.0 (#405)
* Bump @actions/exec from 1.1.1 to 3.0.0

Bumps [@actions/exec](https://github.com/actions/toolkit/tree/HEAD/packages/exec) from 1.1.1 to 3.0.0.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/exec/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/exec)

---
updated-dependencies:
- dependency-name: "@actions/exec"
  dependency-version: 3.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Modernize JS somewhat

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2026-03-03 03:58:30 +00:00
GitHub Actions de78da9a9d Automation: update setup-beam version output to 9928a16 2026-03-02 23:18:44 +00:00
github-actions[bot] 9928a16c11 Update 3rd party licenses (automation) (#413)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-03-02 23:18:00 +00:00
GitHub Actions 3964390c66 Automation: update setup-beam version output to 1dacaf8 2026-03-02 23:14:32 +00:00
Paulo F. Oliveira 1dacaf8a01 Fix for license update automation (#412) 2026-03-02 23:14:13 +00:00
GitHub Actions fa8ba5f70e Automation: update setup-beam version output to daf8797 2026-03-02 22:09:05 +00:00
Paulo F. Oliveira daf8797d04 Update 3rd party licenses (#411)
Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-03-02 22:08:40 +00:00
GitHub Actions de72677f00 Automation: update setup-beam version output to 334f76c 2026-03-02 21:59:55 +00:00
dependabot[bot] 334f76ce04 Bump semver from 7.7.2 to 7.7.4 (#406)
* Bump semver from 7.7.2 to 7.7.4

Bumps [semver](https://github.com/npm/node-semver) from 7.7.2 to 7.7.4.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.7.2...v7.7.4)

---
updated-dependencies:
- dependency-name: semver
  dependency-version: 7.7.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Help Dependabot

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2026-03-02 21:59:33 +00:00
GitHub Actions 86b5ecbf21 Automation: update setup-beam version output to b8fc6e4 2026-03-02 21:34:07 +00:00
dependabot[bot] b8fc6e435e Bump @eslint/js from 9.38.0 to 10.0.1 (#404)
* Bump @eslint/js from 9.38.0 to 10.0.1

Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.38.0 to 10.0.1.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/commits/v10.0.1/packages/js)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-version: 10.0.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Help Dependabot

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2026-03-02 21:33:26 +00:00
GitHub Actions e7fda7af4e Automation: update setup-beam version output to a50e3e2 2026-03-02 21:22:09 +00:00
dependabot[bot] a50e3e2f89 Bump prettier from 3.6.2 to 3.8.1 (#408)
Bumps [prettier](https://github.com/prettier/prettier) from 3.6.2 to 3.8.1.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.6.2...3.8.1)

---
updated-dependencies:
- dependency-name: prettier
  dependency-version: 3.8.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-02 21:21:18 +00:00
dependabot[bot] 7bc1e4ca67 Bump actions/setup-node from 6.1.0 to 6.2.0 (#409)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.1.0 to 6.2.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v6.1.0...v6.2.0)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 6.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-02 21:21:10 +00:00
dependabot[bot] baf2bc3313 Bump raven-actions/actionlint from 2.1.0 to 2.1.1 (#410)
Bumps [raven-actions/actionlint](https://github.com/raven-actions/actionlint) from 2.1.0 to 2.1.1.
- [Release notes](https://github.com/raven-actions/actionlint/releases)
- [Commits](https://github.com/raven-actions/actionlint/compare/v2.1.0...v2.1.1)

---
updated-dependencies:
- dependency-name: raven-actions/actionlint
  dependency-version: 2.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-02 21:21:02 +00:00
GitHub Actions 3580539cee Automation: update setup-beam version output to fe5485f 2026-02-28 14:47:15 +00:00
dependabot[bot] fe5485f1f6 Bump @eslint/js from 9.31.0 to 9.38.0 (#393)
* Bump @eslint/js from 9.31.0 to 9.38.0

Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.31.0 to 9.38.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/commits/v9.38.0/packages/js)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-version: 9.38.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Help Dependabot out (?)

* Address vulnerabilities with markdownlint-cli

* Do the bump proposed by the PR

* Go back to a working, albeit apparently vulnerable, version

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2026-02-28 14:46:57 +00:00
GitHub Actions 98de8ffa90 Automation: update setup-beam version output to 6c5fe27 2026-02-28 14:28:14 +00:00
dependabot[bot] 6c5fe278e7 Bump the npm_and_yarn group across 1 directory with 2 updates (#403)
* Bump the npm_and_yarn group across 1 directory with 2 updates

Bumps the npm_and_yarn group with 2 updates in the / directory: [lodash](https://github.com/lodash/lodash) and [glob](https://github.com/isaacs/node-glob).


Updates `lodash` from 4.17.21 to 4.17.23
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23)

Removes `glob`

---
updated-dependencies:
- dependency-name: lodash
  dependency-version: 4.17.23
  dependency-type: direct:production
  dependency-group: npm_and_yarn
- dependency-name: glob
  dependency-version: 
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>

* Commit `npm run build-dist`'s results

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2026-02-28 14:27:55 +00:00
GitHub Actions 36214a49c0 Automation: update setup-beam version output to 972bec8 2026-02-28 14:19:09 +00:00
dependabot[bot] 972bec8037 Bump actions/checkout from 4.2.2 to 6.0.1 (#399)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.2 to 6.0.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.2.2...v6.0.1)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-28 14:18:53 +00:00
GitHub Actions 10e998534e Automation: update setup-beam version output to 542d9a8 2026-02-28 14:07:57 +00:00
Paulo F. Oliveira 542d9a8e62 Improve output (around "Requested ... version") when we know input (#368)
Improve output when we know input
2026-02-28 14:07:39 +00:00
GitHub Actions b764149ef2 Automation: update setup-beam version output to cba803d 2026-02-28 13:59:20 +00:00
dependabot[bot] cba803d7b7 Bump @vercel/ncc from 0.38.3 to 0.38.4 (#387)
Bumps [@vercel/ncc](https://github.com/vercel/ncc) from 0.38.3 to 0.38.4.
- [Release notes](https://github.com/vercel/ncc/releases)
- [Commits](https://github.com/vercel/ncc/compare/0.38.3...0.38.4)

---
updated-dependencies:
- dependency-name: "@vercel/ncc"
  dependency-version: 0.38.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-28 13:58:54 +00:00
dependabot[bot] eda66a8458 Bump globals from 16.3.0 to 16.4.0 (#383)
Bumps [globals](https://github.com/sindresorhus/globals) from 16.3.0 to 16.4.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v16.3.0...v16.4.0)

---
updated-dependencies:
- dependency-name: globals
  dependency-version: 16.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-28 13:58:43 +00:00
GitHub Actions cf0aea912f Automation: update setup-beam version output to 13b647e 2026-02-28 13:36:13 +00:00
dependabot[bot] 13b647ed24 Bump shellcheck from 3.1.0 to 4.1.0 (#376)
Bumps [shellcheck](https://github.com/gunar/shellcheck) from 3.1.0 to 4.1.0.
- [Release notes](https://github.com/gunar/shellcheck/releases)
- [Changelog](https://github.com/gunar/shellcheck/blob/main/CHANGELOG.md)
- [Commits](https://github.com/gunar/shellcheck/compare/v3.1.0...v4.1.0)

---
updated-dependencies:
- dependency-name: shellcheck
  dependency-version: 4.1.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-28 13:35:39 +00:00
dependabot[bot] d6f6c371de Bump eslint from 9.31.0 to 9.38.0 (#394)
Bumps [eslint](https://github.com/eslint/eslint) from 9.31.0 to 9.38.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v9.31.0...v9.38.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 9.38.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-28 13:34:45 +00:00
dependabot[bot] 905cf79e7d Bump js-yaml from 4.1.0 to 4.1.1 in the npm_and_yarn group across 1 directory (#396)
Bump js-yaml in the npm_and_yarn group across 1 directory

Bumps the npm_and_yarn group with 1 update in the / directory: [js-yaml](https://github.com/nodeca/js-yaml).


Updates `js-yaml` from 4.1.0 to 4.1.1
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/4.1.0...4.1.1)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 4.1.1
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-28 13:34:31 +00:00
GitHub Actions 4f85a51ca2 Automation: update setup-beam version output to fc1fdd6 2026-02-28 13:34:23 +00:00
dependabot[bot] fc1fdd6f00 Bump actions/setup-node from 4.4.0 to 6.1.0 (#400)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4.4.0 to 6.1.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v4.4.0...v6.1.0)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 6.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-28 13:34:07 +00:00
dependabot[bot] da184bc66d Bump raven-actions/actionlint from 2.0.1 to 2.1.0 (#401)
Bumps [raven-actions/actionlint](https://github.com/raven-actions/actionlint) from 2.0.1 to 2.1.0.
- [Release notes](https://github.com/raven-actions/actionlint/releases)
- [Commits](https://github.com/raven-actions/actionlint/compare/v2.0.1...v2.1.0)

---
updated-dependencies:
- dependency-name: raven-actions/actionlint
  dependency-version: 2.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-28 13:33:52 +00:00
GitHub Actions 566deebc64 Automation: update setup-beam version output to b94e7d3 2025-10-01 11:13:33 +00:00
Loïc Hoguin b94e7d372a Allow for Windows'25 container (#388) 2025-10-01 13:12:32 +02:00
GitHub Actions 033f103421 Automation: update setup-beam version output to 9afaa6e 2025-07-21 17:28:20 +00:00
dependabot[bot] 9afaa6e45f Bump csv-parse from 6.0.0 to 6.1.0 (#366)
---
updated-dependencies:
- dependency-name: csv-parse
  dependency-version: 6.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-21 18:28:00 +01:00
GitHub Actions 4168d0bf3c Automation: update setup-beam version output to 8c38699 2025-07-15 00:44:26 +00:00
dependabot[bot] 8c38699ca8 Bump @eslint/js from 9.30.1 to 9.31.0 (#363)
Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.30.1 to 9.31.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/commits/v9.31.0/packages/js)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-version: 9.31.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-15 01:44:10 +01:00
GitHub Actions df4a3eca5d Automation: update setup-beam version output to db4f13c 2025-07-15 00:43:33 +00:00
dependabot[bot] db4f13ce18 Bump csv-parse from 5.6.0 to 6.0.0 (#364)
* Bump csv-parse from 5.6.0 to 6.0.0

Bumps [csv-parse](https://github.com/adaltas/node-csv/tree/HEAD/packages/csv-parse) from 5.6.0 to 6.0.0.
- [Changelog](https://github.com/adaltas/node-csv/blob/master/packages/csv-parse/CHANGELOG.md)
- [Commits](https://github.com/adaltas/node-csv/commits/csv-parse@6.0.0/packages/csv-parse)

---
updated-dependencies:
- dependency-name: csv-parse
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Help Dependabot: push `npm run build-dist`'s results

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2025-07-15 01:43:16 +01:00
GitHub Actions 1df7f7a827 Automation: update setup-beam version output to f350bf9 2025-07-14 18:59:45 +00:00
dependabot[bot] f350bf9e05 Bump eslint from 9.30.1 to 9.31.0 (#365)
Bumps [eslint](https://github.com/eslint/eslint) from 9.30.1 to 9.31.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.30.1...v9.31.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 9.31.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-14 19:59:29 +01:00
GitHub Actions e6d7c94229 Automation: update setup-beam version output to fceaea9 2025-07-10 15:21:07 +00:00
Paulo F. Oliveira fceaea9f54 Fix: more versioning around nightly and maint/main (#359)
* Test Elixir main-otp-28 / Erlang maint-28

* Test Gleam nightly / OTP 28

* Tweak versioning

1. stop trying to "coerce" versions on input
2. handle `OTP-` in one more place
3. handle `nightly`

* Remove tests that should be failing previously

There is no strict 27 for macos-15, for example

* Remove similar tests

We'll test once per platform in similar conditions

* `await` for `assert.rejects` (not noticeable if alone inside `it`)

* Test maint- for strict and loose
2025-07-10 16:20:49 +01:00
GitHub Actions 2bb5b653d0 Automation: update setup-beam version output to 1d4efdd 2025-07-10 15:18:41 +00:00
dependabot[bot] 1d4efdd2e9 Bump globals from 16.2.0 to 16.3.0 (#361)
Bumps [globals](https://github.com/sindresorhus/globals) from 16.2.0 to 16.3.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v16.2.0...v16.3.0)

---
updated-dependencies:
- dependency-name: globals
  dependency-version: 16.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-10 16:18:18 +01:00
GitHub Actions 73f047e328 Automation: update setup-beam version output to 6dd8a1a 2025-07-10 09:38:56 +00:00
dependabot[bot] 6dd8a1a852 Bump @eslint/js from 9.30.0 to 9.30.1 (#360)
Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.30.0 to 9.30.1.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/commits/v9.30.1/packages/js)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-version: 9.30.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-10 10:38:37 +01:00
GitHub Actions fd9a2e183f Automation: update setup-beam version output to 65085e3 2025-07-10 09:14:46 +00:00
dependabot[bot] 65085e37bc Bump eslint from 9.30.0 to 9.30.1 (#362)
Bumps [eslint](https://github.com/eslint/eslint) from 9.30.0 to 9.30.1.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.30.0...v9.30.1)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 9.30.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-10 10:14:28 +01:00
GitHub Actions 80c1659516 Automation: update setup-beam version output to 8e7fdef 2025-07-03 18:12:11 +00:00
GitHub Actions 8e7fdef09f Automation: update setup-beam version output to 1fe9179 2025-07-03 16:35:25 +00:00
Paulo F. Oliveira 1fe9179886 Handle .tool-versions' line break on Windows (#357)
* Test .tool-version on top of Windows

* Parse .tool-version with Windows-style line endings
2025-07-03 17:35:06 +01:00
GitHub Actions 6389fe58dc Automation: update setup-beam version output to 8fc1380 2025-07-01 21:13:33 +00:00
Paulo F. Oliveira 8fc1380bb7 Fix calculating -otp- major for Elixir (#351)
* Set expectations

* Ease testing without having to install via `require`

* Code a solution for the tests

* Avoid errors on unit tests

rebar3 is saying something about SSL, most likely because
our tests are installing a bunch of OTPs which makes
for unpredictable behavior

* Avoid errors on integration tests
2025-07-01 22:13:13 +01:00
GitHub Actions 3c915dd1b0 Automation: update setup-beam version output to e5d5058 2025-06-30 21:26:33 +00:00
dependabot[bot] e5d50587ee Bump @eslint/js from 9.29.0 to 9.30.0 (#352)
Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.29.0 to 9.30.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/commits/v9.30.0/packages/js)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-version: 9.30.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-30 22:26:13 +01:00
GitHub Actions b1273cf7cc Automation: update setup-beam version output to 9308caf 2025-06-30 21:10:39 +00:00
dependabot[bot] 9308cafcbf Bump prettier from 3.6.0 to 3.6.2 (#353)
Bumps [prettier](https://github.com/prettier/prettier) from 3.6.0 to 3.6.2.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.6.0...3.6.2)

---
updated-dependencies:
- dependency-name: prettier
  dependency-version: 3.6.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-30 22:09:53 +01:00
dependabot[bot] 2971b073e5 Bump eslint from 9.29.0 to 9.30.0 (#354)
Bumps [eslint](https://github.com/eslint/eslint) from 9.29.0 to 9.30.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.29.0...v9.30.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 9.30.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-30 22:09:35 +01:00
GitHub Actions a0b139a890 Automation: update setup-beam version output to 6a38171 2025-06-26 19:39:33 +00:00
Paulo F. Oliveira 6a38171948 Test for updated doc. on latest / ranges / -rc (#349)
* Set the expectations

* Reason on the past

* Also allow for removal of OTP- in comparison to RC

* Test it on what makes sense

* For known elements don't compare with ranges

* Don't put maint-27 alongside 27 in the initial map

* Generate the dist

* Revisit the whole latest vs. rc- vs. strict definition
2025-06-26 20:39:15 +01:00
GitHub Actions 75edbb8287 Automation: update setup-beam version output to a8bc27e 2025-06-24 23:13:55 +00:00
Paulo F. Oliveira a8bc27ec39 Add back deprecated runners with warning (#348)
Add back deprecated elements, with a warning on support/maintenance
2025-06-25 00:13:39 +01:00
GitHub Actions b29c86feb9 Automation: update setup-beam version output to abd725c 2025-06-23 18:32:03 +00:00
dependabot[bot] abd725cb17 Bump prettier from 3.5.3 to 3.6.0 (#347)
Bumps [prettier](https://github.com/prettier/prettier) from 3.5.3 to 3.6.0.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.5.3...3.6.0)

---
updated-dependencies:
- dependency-name: prettier
  dependency-version: 3.6.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-23 19:31:45 +01:00
GitHub Actions 145718908e Automation: update setup-beam version output to 1e35402 2025-06-16 21:26:37 +00:00
dependabot[bot] 1e3540284f Bump eslint from 9.28.0 to 9.29.0 (#345)
Bumps [eslint](https://github.com/eslint/eslint) from 9.28.0 to 9.29.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.28.0...v9.29.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 9.29.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-16 22:26:15 +01:00
GitHub Actions 7ddf3b82cc Automation: update setup-beam version output to 00ffd44 2025-06-16 21:19:30 +00:00
dependabot[bot] 00ffd44f8d Bump @eslint/js from 9.28.0 to 9.29.0 (#346)
Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.28.0 to 9.29.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/commits/v9.29.0/packages/js)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-version: 9.29.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-16 22:19:12 +01:00
GitHub Actions 6e1d5a5aa6 Automation: update setup-beam version output to 41ba577 2025-06-09 01:26:57 +00:00
dependabot[bot] 41ba577f74 Bump @eslint/js from 9.27.0 to 9.28.0 (#342)
* Bump @eslint/js from 9.27.0 to 9.28.0

Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.27.0 to 9.28.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/commits/v9.28.0/packages/js)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-version: 9.28.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Prevent CI issues from having to update Gleam

* Deal with deprecation messages

* Fix for Elixir not inferring from OTP

(there is no 1.19-otp-28 yet)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2025-06-09 02:26:26 +01:00
GitHub Actions 8cdecfe6cc Automation: update setup-beam version output to 67834dc 2025-06-06 11:37:38 +00:00
dependabot[bot] 67834dc893 Bump eslint from 9.27.0 to 9.28.0 (#343)
Bumps [eslint](https://github.com/eslint/eslint) from 9.27.0 to 9.28.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.27.0...v9.28.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 9.28.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-06 12:37:02 +01:00
GitHub Actions 59e18ef85d Automation: update setup-beam version output to afe5922 2025-05-30 04:44:05 +00:00
Paulo F. Oliveira afe592256a Match only on what we know should match (versions start with numbers, after OTP-) (#341) 2025-05-29 23:43:43 -05:00
GitHub Actions db4b4ce7c5 Automation: update setup-beam version output to 3025c99 2025-05-30 01:53:42 +00:00
Paulo F. Oliveira 3025c9910d Dependabot version updates (#340)
* yamllint for newer file

* Allow for proper, lower-level, pinning

Makes for increased reproducibility (and overall control)
2025-05-30 02:53:21 +01:00
GitHub Actions 32794f2f95 Automation: update setup-beam version output to 65066e3 2025-05-30 00:57:20 +00:00
Paulo F. Oliveira 65066e38a0 Act on CodeQL's suggestions for tightening security / improving performance (#338)
* Act on CodeQL's actions/missing-workflow-permissions

https://codeql.github.com/codeql-query-help/actions/actions-missing-workflow-permissions/

* Be more specific in the matched regex

And don't match a group if we don't need to match one

* Make it slightly faster since we know what after -otp-

I create a const because both expressions are looking for
the same thing
2025-05-29 19:57:00 -05:00
GitHub Actions 889e64e95a Automation: update setup-beam version output to 318bea3 2025-05-29 14:51:20 +00:00
github-actions[bot] 318bea3c09 Update 3rd party licenses (automation) (#337)
Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2025-05-29 15:50:55 +01:00
GitHub Actions 1abc836c22 Automation: update setup-beam version output to e1b0201 2025-05-29 14:50:46 +00:00
Paulo F. Oliveira e1b020163b Minor maintenance updates (#336) 2025-05-29 15:50:24 +01:00
GitHub Actions 220876a6da Automation: update setup-beam version output to 58f0e7a 2025-05-29 10:38:39 +00:00
Paulo F. Oliveira 58f0e7ac10 Support macOS via https://github.com/erlef/otp_builds (#332)
Co-authored-by: Wojtek Mach <wojtekmach@users.noreply.github.com>
2025-05-29 11:38:18 +01:00
GitHub Actions 46e061001b Automation: update setup-beam version output to 891e46b 2025-05-28 22:43:07 +00:00
Paulo F. Oliveira 891e46b77a Improve output when failing to get a version from "a place" (#334) 2025-05-28 17:42:50 -05:00
GitHub Actions a770081419 Automation: update setup-beam version output to 9092f97 2025-05-27 19:16:07 +00:00
Viacheslav Katsuba 9092f97e4d Fix broken link CODE_OF_CONDUCT.md (#335) 2025-05-27 20:15:49 +01:00
29 changed files with 41763 additions and 15754 deletions
-19
View File
@@ -1,19 +0,0 @@
---
env:
node: true
es2022: true
extends:
- eslint:recommended
parserOptions:
ecmaVersion: 2022
rules:
indent: [warn, 2, {SwitchCase: 1}]
max-len: [warn, 100]
no-use-before-define: 0
operator-linebreak: 0
semi: 0
implicit-arrow-linebreak: 0
settings:
react:
version: 999.999.999
+11
View File
@@ -0,0 +1,11 @@
---
version: 2
updates:
- package-ecosystem: npm
directory: /
schedule:
interval: weekly
- package-ecosystem: github-actions
directory: /
schedule:
interval: weekly
+65 -12
View File
@@ -1,6 +1,9 @@
---
name: action
permissions:
contents: read
on:
push:
branches:
@@ -18,8 +21,10 @@ jobs:
name: Version with commit unique id
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7.0.0
- name: Version it!
run: |
# We expect a string such as const setupBeamVersion = 'undefined' in the code
@@ -40,39 +45,87 @@ jobs:
runs-on: ubuntu-latest
if: github.ref != 'refs/heads/main'
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- uses: actions/checkout@v7.0.0
- uses: actions/setup-node@v6.3.0
with:
node-version: '20'
node-version: '24'
- run: npm run build-dist
- name: Check if build left artifacts
run: git diff --exit-code --ignore-space-at-eol
check_action:
name: Action
runs-on: ubuntu-latest
if: github.ref != 'refs/heads/main'
steps:
- uses: actions/checkout@v7.0.0
- uses: raven-actions/actionlint@v2.2.0
unit_tests_ubuntu:
name: Unit tests (Ubuntu)
runs-on: ubuntu-latest
strategy:
matrix:
os:
- ubuntu-24.04-arm # ARM64
- ubuntu-latest # x86_64
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- uses: actions/checkout@v7.0.0
- uses: actions/setup-node@v6.3.0
with:
node-version: '20'
node-version: '24'
- run: npm ci
- run: npm test
env:
NODE_ENV: test
- name: .tool-versions test
id: setup-beam
uses: ./
with:
install-rebar: false
install-hex: false
version-file: test/.tool-versions
version-type: strict
unit_tests_windows:
name: Unit tests (Windows)
runs-on: windows-latest
strategy:
matrix:
os:
- windows-latest # x86_64
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- uses: actions/checkout@v7.0.0
- uses: actions/setup-node@v6.3.0
with:
node-version: '20'
node-version: '24'
- run: npm install --production
- run: npm test
env:
NODE_ENV: test
- name: .tool-versions test
id: setup-beam
uses: ./
with:
install-rebar: false
install-hex: false
version-file: test/.tool-versions
version-type: strict
unit_tests_macos:
name: Unit tests (macOS)
strategy:
matrix:
os:
- macos-latest # ARM64
- macos-15-intel # x86_64
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v7.0.0
- uses: actions/setup-node@v6.3.0
with:
node-version: '24'
- run: npm ci
- run: npm test
env:
NODE_ENV: test
+7 -4
View File
@@ -1,6 +1,9 @@
---
name: hexpm-mirrors
permissions:
contents: read
on:
push:
branches:
@@ -17,13 +20,13 @@ jobs:
strategy:
fail-fast: false
matrix:
os: ['ubuntu-22.04', 'windows-2022']
otp-version: ['24']
elixir-version: ['v1.14', '']
os: ['ubuntu-24.04', 'windows-2022', 'macos-15']
otp-version: ['27']
elixir-version: ['v1.18', '']
install-rebar: [true, false]
install-hex: [true, false]
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7.0.0
- name: Use erlef/setup-beam
id: setup-beam
uses: ./
+145
View File
@@ -0,0 +1,145 @@
---
name: macos
permissions:
contents: read
on:
push:
branches:
- main
pull_request:
branches:
- '*'
workflow_dispatch: {}
jobs:
integration_test:
name: >
OS ${{matrix.combo.os}},
OTP ${{matrix.combo.otp-version}},
Elixir ${{matrix.combo.elixir-version}},
rebar3 ${{matrix.combo.rebar3-version}}
runs-on: ${{matrix.combo.os}}
strategy:
fail-fast: false
matrix:
combo:
# macOS 14 - per README
- otp-version: '25'
os: 'macos-14'
- otp-version: '29'
os: 'macos-14'
# macOS 15 - per README
- otp-version: '25'
os: 'macos-15'
- otp-version: '29'
os: 'macos-15'
# macOS 26 - per README
- otp-version: '25'
os: 'macos-26'
- otp-version: '29'
os: 'macos-26'
# macOS latest
- otp-version: '27'
elixir-version: 'v1.17.0'
rebar3-version: '3.23'
os: 'macos-latest'
- otp-version: '26.0'
elixir-version: 'v1.14-otp-25'
os: 'macos-latest'
version-type: 'strict'
- otp-version: '26.0'
elixir-version: '1.14.5'
os: 'macos-latest'
version-type: 'strict'
- otp-version: '25.2'
elixir-version: '1.14.2'
os: 'macos-latest'
- otp-version: '25.2'
elixir-version: '1.14.3'
os: 'macos-latest'
version-type: 'strict'
- otp-version: '25.0'
elixir-version: 'v1.16.3-otp-25'
rebar3-version: '3.18.0'
os: 'macos-latest'
version-type: 'strict'
- otp-version: '25.0'
elixir-version: 'v1.16.3'
rebar3-version: '3.18.0'
os: 'macos-latest'
version-type: 'strict'
escript_packages: 'hex protobuf'
escript_script: 'protoc-gen-elixir --version'
- otp-version: 'latest'
rebar3-version: 'latest'
os: 'macos-latest'
steps:
- uses: actions/checkout@v7.0.0
- name: Use erlef/setup-beam
id: setup-beam
uses: ./
with:
otp-version: ${{matrix.combo.otp-version}}
elixir-version: ${{matrix.combo.elixir-version}}
rebar3-version: ${{matrix.combo.rebar3-version}}
version-type: ${{matrix.combo.version-type}}
- name: Erlang/OTP version (action)
run: echo "Erlang/OTP ${{steps.setup-beam.outputs.otp-version}}"
if: ${{matrix.combo.otp-version}}
- name: Elixir version (action)
run: echo "Elixir ${{steps.setup-beam.outputs.elixir-version}}"
if: ${{matrix.combo.elixir-version}}
- name: rebar3 version (action)
run: echo "rebar3 ${{steps.setup-beam.outputs.rebar3-version}}"
if: ${{matrix.combo.rebar3-version}}
- name: mix version and help (CLI)
run: |
mix -v
mix help local.rebar
mix help local.hex
if: ${{matrix.combo.elixir-version}}
- name: Run Elixir/Mix project tests
run: |
cd test/projects/elixir_mix
mix deps.get
mix test
if: ${{matrix.combo.elixir-version}}
- name: Run Erlang/rebar3 project tests
run: |
cd test/projects/erlang_rebar3
rebar3 ct
if: ${{matrix.combo.rebar3-version}}
- name: Run escript
run: |
mix escript.install --force ${{matrix.combo.escript_packages}}
${{matrix.combo.escript_script}}
if: ${{matrix.combo.escript_packages && matrix.combo.escript_script}}
environment_variables:
name: Environment variables
runs-on: ${{matrix.combo.os}}
strategy:
fail-fast: false
matrix:
combo:
- otp-version: 27
elixir-version: 1.19
rebar3-version: 3.24
os: macos-latest
steps:
- uses: actions/checkout@v7.0.0
- name: Use erlef/setup-beam
id: setup-beam
uses: ./
with:
otp-version: ${{matrix.combo.otp-version}}
elixir-version: ${{matrix.combo.elixir-version}}
rebar3-version: ${{matrix.combo.rebar3-version}}
- run: env
- name: Check environment variables
run: |
"${INSTALL_DIR_FOR_ELIXIR}"/bin/elixir -v
"${INSTALL_DIR_FOR_OTP}"/bin/erl -version
"${INSTALL_DIR_FOR_REBAR3}"/bin/rebar3 version
+33 -25
View File
@@ -1,6 +1,9 @@
---
name: ubuntu
permissions:
contents: read
on:
push:
branches:
@@ -13,6 +16,7 @@ on:
jobs:
integration_test:
name: >
OS ${{matrix.combo.os}},
OTP ${{matrix.combo.otp-version}},
Elixir ${{matrix.combo.elixir-version}},
Gleam ${{matrix.combo.gleam-version}},
@@ -22,6 +26,22 @@ jobs:
fail-fast: false
matrix:
combo:
# Ubuntu 22.04 - per README
- otp-version: '24.2'
os: 'ubuntu-22.04'
- otp-version: '29'
os: 'ubuntu-22.04'
# Ubuntu 24.04 - per README
- otp-version: '24.3'
os: 'ubuntu-24.04'
- otp-version: '29'
os: 'ubuntu-24.04'
# Ubuntu 26.04 - per README
- otp-version: '26'
os: 'ubuntu-26.04'
- otp-version: '29'
os: 'ubuntu-26.04'
# Ubuntu latest
- otp-version: '27'
elixir-version: 'v1.17.0'
rebar3-version: '3.23'
@@ -41,25 +61,13 @@ jobs:
elixir-version: '1.14.3'
os: 'ubuntu-latest'
version-type: 'strict'
- otp-version: '27'
os: 'ubuntu-24.04'
version-type: 'strict'
- otp-version: '26'
os: 'ubuntu-24.04'
version-type: 'strict'
- otp-version: '25'
os: 'ubuntu-24.04'
- otp-version: '26'
elixir-version: '1.16'
rebar3-version: '3.25'
os: 'ubuntu-22.04'
- otp-version: '25.0'
elixir-version: 'v1.13.4-otp-25'
elixir-version: 'v1.16.2-otp-25'
rebar3-version: '3.18.0'
os: 'ubuntu-latest'
version-type: 'strict'
- otp-version: '25.0'
elixir-version: 'v1.13.4'
elixir-version: 'v1.16.3'
rebar3-version: '3.18.0'
os: 'ubuntu-latest'
version-type: 'strict'
@@ -74,13 +82,13 @@ jobs:
otp-version: false
os: 'ubuntu-latest'
disable_problem_matchers: true
- elixir-version: 'v1.13'
- elixir-version: 'v1.16'
otp-version: '24'
escript_packages: 'hex protobuf'
escript_script: 'protoc-gen-elixir --version'
os: 'ubuntu-latest'
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7.0.0
- name: Use erlef/setup-beam
id: setup-beam
uses: ./
@@ -142,13 +150,13 @@ jobs:
fail-fast: false
matrix:
combo:
- otp-version: latest
elixir-version: latest
gleam-version: latest
rebar3-version: nightly
- otp-version: 27
elixir-version: 1.19
gleam-version: 1.10
rebar3-version: 3.24
os: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7.0.0
- name: Use erlef/setup-beam
id: setup-beam
uses: ./
@@ -160,7 +168,7 @@ jobs:
- run: env
- name: Check environment variables
run: |
${INSTALL_DIR_FOR_ELIXIR}/bin/elixir -v
${INSTALL_DIR_FOR_GLEAM}/bin/gleam --version
${INSTALL_DIR_FOR_OTP}/bin/erl -version
${INSTALL_DIR_FOR_REBAR3}/bin/rebar3 version
"${INSTALL_DIR_FOR_ELIXIR}"/bin/elixir -v
"${INSTALL_DIR_FOR_GLEAM}"/bin/gleam --version
"${INSTALL_DIR_FOR_OTP}"/bin/erl -version
"${INSTALL_DIR_FOR_REBAR3}"/bin/rebar3 version
@@ -1,17 +1,21 @@
---
name: Update 3rd party licenses (automation)
permissions:
contents: write
pull-requests: write
on:
schedule:
- cron: '0 12 * * *'
workflow_dispatch:
workflow_dispatch: {}
jobs:
update:
name: Update 3rd party licenses
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7.0.0
- run:
./.github/workflows/update_3rd_party_licenses.sh
env:
+27 -14
View File
@@ -1,6 +1,9 @@
---
name: windows
permissions:
contents: read
on:
push:
branches:
@@ -13,6 +16,7 @@ on:
jobs:
integration_test:
name: >
OS ${{matrix.combo.os}},
OTP ${{matrix.combo.otp-version}},
Elixir ${{matrix.combo.elixir-version}},
Gleam ${{matrix.combo.gleam-version}},
@@ -22,6 +26,20 @@ jobs:
fail-fast: false
matrix:
combo:
# Windows 2022 - per README
- otp-version: '26' # 21 is "so old", at this moment, we can't find it in latest 100
os: 'windows-2022'
- otp-version: '29'
os: 'windows-2022'
# Windows 2025 - per README
- otp-version: '26' # 21 is "so old", at this moment, we can't find it in latest 100
os: 'windows-2025'
- otp-version: '29'
os: 'windows-2025'
# Windows latest
- otp-version: '<26'
elixir-version: '<1.17'
os: 'windows-latest'
- otp-version: '27'
elixir-version: 'v1.17.0'
rebar3-version: '3.23'
@@ -38,30 +56,24 @@ jobs:
elixir-version: '1.14.5'
os: 'windows-latest'
version-type: 'strict'
- otp-version: '24.0.2'
rebar3-version: '3.16'
os: 'windows-2019'
- otp-version: '23.0'
rebar3-version: '3.15'
os: 'windows-2019'
- elixir-version: 'v1.10'
otp-version: '23'
rebar3-version: '3.14'
os: 'windows-latest'
- elixir-version: 'v1.13'
- elixir-version: 'v1.16'
otp-version: '24'
rebar3-version: '3.15'
os: 'windows-latest'
- gleam-version: '1.9.0'
otp-version: '27'
os: 'windows-latest'
- elixir-version: 'v1.13'
- elixir-version: 'v1.16'
otp-version: '24'
escript_packages: 'hex protobuf'
escript_script: 'protoc-gen-elixir --version'
os: 'windows-latest'
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7.0.0
- name: Use erlef/setup-beam
id: setup-beam
uses: ./
@@ -122,13 +134,13 @@ jobs:
fail-fast: false
matrix:
combo:
- otp-version: latest
elixir-version: latest
gleam-version: latest
rebar3-version: nightly
- otp-version: 27
elixir-version: 1.19
gleam-version: 1.10
rebar3-version: 3.24
os: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7.0.0
- name: Use erlef/setup-beam
id: setup-beam
uses: ./
@@ -145,3 +157,4 @@ jobs:
& "$Env:INSTALL_DIR_FOR_OTP/bin/erl.exe" "+V"
& "$Env:INSTALL_DIR_FOR_REBAR3/bin/rebar3.cmd" "version"
& "$Env:INSTALL_DIR_FOR_REBAR3/bin/rebar3.ps1" "version"
shell: pwsh
+4 -2
View File
@@ -1,2 +1,4 @@
node_modules/**
test/.tool-versions
/node_modules
/test/.tool-versions
/test/mise.toml
/dist/package.json
+1195 -6963
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -2,7 +2,7 @@
[fork]: https://github.com/erlef/setup-beam/fork
[pr]: https://github.com/erlef/setup-beam/compare
[code-of-conduct]: https://github.com/erlef/setup-beam/blob/main/CODE_OF_CONDUCT.md
[code-of-conduct]: https://github.com/erlef/.github/blob/main/CODE_OF_CONDUCT.md
Hi there! We're thrilled that you'd like to contribute to this project. Your help is essential for
keeping it great.
+1 -1
View File
@@ -1,7 +1,7 @@
# Elixir Problem Matchers
Elixir Problem Matchers in [elixir-matchers.json](matchers/elixir-matchers.json)
are adapted from [here](https://github.com/fr1zle/vscode-elixir/blob/45eddb589acd7ac98e0c7305d1c2b24668ca709a/package.json#L70-L118),
are adapted from [vscode-elixir/package.json](https://github.com/fr1zle/vscode-elixir/blob/45eddb589acd7ac98e0c7305d1c2b24668ca709a/package.json#L70-L118),
available under the [MIT license](https://github.com/fr1zle/vscode-elixir/blob/45eddb589acd7ac98e0c7305d1c2b24668ca709a/LICENSE.md):
MIT License
+105 -40
View File
@@ -1,4 +1,4 @@
# setup-beam [![Action][action-img]][action]&nbsp;[![Ubuntu][ubuntu-img]][ubuntu]&nbsp;[![Windows][windows-img]][windows]
# setup-beam [![Action][action-img]][action]&nbsp;[![Ubuntu][ubuntu-img]][ubuntu]&nbsp;[![Windows][windows-img]][windows]&nbsp;[![macOS][macos-img]][macos]
[action]: https://github.com/erlef/setup-beam/actions/workflows/action.yml
[action-img]: https://github.com/erlef/setup-beam/actions/workflows/action.yml/badge.svg
@@ -6,6 +6,8 @@
[ubuntu-img]: https://github.com/erlef/setup-beam/actions/workflows/ubuntu.yml/badge.svg
[windows]: https://github.com/erlef/setup-beam/actions/workflows/windows.yml
[windows-img]: https://github.com/erlef/setup-beam/actions/workflows/windows.yml/badge.svg
[macos]: https://github.com/erlef/setup-beam/actions/workflows/macos.yml
[macos-img]: https://github.com/erlef/setup-beam/actions/workflows/macos.yml/badge.svg
This action sets up an Erlang/OTP environment for use in a GitHub Actions
workflow by:
@@ -14,15 +16,14 @@ workflow by:
- optionally, installing [Elixir](https://elixir-lang.org/)
- optionally, installing [Gleam](https://gleam.run/)
- optionally, installing [`rebar3`](https://www.rebar3.org/)
- optionally, installing [`hex`](https://hex.pm/)
- optionally, installing [`local.hex`](https://hex.pm/)
- optionally, installing [`local.rebar`](https://www.rebar3.org/)
- optionally, opting for strict or loose version matching
- optionally, having
[problem matchers](https://github.com/actions/toolkit/blob/main/docs/problem-matchers.md) show
warnings and errors on pull requests
- optionally, using a version file (as explained in "Version file", below), to identify versions
**Note**: currently, this action only supports Actions' `ubuntu-` and `windows-` runtimes.
## Usage
See [action.yml](action.yml) for the action's specification.
@@ -52,50 +53,69 @@ end up being parsed as `23`, which is not equivalent.
#### Pre-release versions
For pre-release versions, such as `v1.11.0-rc.0`, use the full version
specifier (`v1.11.0-rc.0`) and set option `version-type` to `strict`. Pre-release versions are
opt-in, so `1.11.x` will not match a pre-release.
To use a pre-release version such as `v1.11.0-rc.0`, specify the exact version
(`v1.11.0-rc.0`) and set `version-type` to `strict`.
Note that pre-release versions are opt-in by default.
Patterns like `1.11.x` do not include pre-release versions unless `latest` is specified.
#### "Latest" versions
Set a tool's version to `latest` to retrieve the latest version of a given tool.
The latest version is (locally) calculated by the action based on the (retrieved) versions
it knows (**note**: it is not the same as [GitHub considers it](https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository)
and some repositories might propose).
To retrieve the most recent available version of a tool, set the version to `latest`.
This may include pre-release versions such as release candidates.
If in doubt do a test run and compare the obtained release with the one you were expecting to
be the latest.
If you want to target only the latest stable release and exclude pre-releases, use a
version range like `> 0` instead.
Note that the `latest` version is determined locally by the action based on the versions it
has retrieved. This may differ from how [GitHub defines "latest"](https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository),
and some repositories may present different interpretations.
If you're unsure, perform a test run and compare the resolved version against the version you
expect to be considered the latest.
### Compatibility between Operating System and Erlang/OTP
This list presents the known working version combos between the target operating system
and Erlang/OTP.
| Operating system | Erlang/OTP | OTP Architecture | Status
|- |- | - |-
| `ubuntu-18.04` | 17.0 - 25.3 | x86_64, arm64 | ✅
| `ubuntu-20.04` | 21.0 - 27 | x86_64, arm64 | ✅
| `ubuntu-22.04` | 24.2 - 27 | x86_64, arm64 | ✅
| `ubuntu-24.04` | 24.3 - 27 | x86_64, arm64 | ✅
| `windows-2019` | 21\* - 25 | x86_64, x86 | ✅
| `windows-2022` | 21\* - 27 | x86_64, x86 | ✅
| Operating system | Erlang/OTP | OTP Architecture | Status
|- |- | - |-
| `ubuntu-22.04` | 24.2 - 29 | x86_64, arm64 | ✅
| `ubuntu-24.04` | 24.3 - 29 | x86_64, arm64 | ✅
| `ubuntu-26.04` | 26 - 29 | x86_64, arm64 | ✅
| `windows-2022` | 21\* - 29 | x86_64, x86 | ✅
| `windows-2025` | 21\* - 29 | x86_64, x86 | ✅
| `macOS-14` | 25 - 29 | x86_64, arm64 | ✅
| `macOS-15` | 25 - 29 | x86_64, arm64 | ✅
| `macOS-26` | 25 - 29 | x86_64, arm64 | ✅
**Note** \*: prior to 23, Windows builds are only available for minor versions, e.g. 21.0, 21.3,
22.0, etc.
### Compatibility between Erlang/OTP and rebar3
Check [version compatibility](https://github.com/erlang/rebar3?tab=readme-ov-file#compatibility-between-rebar3-and-erlangotp)
in `erlang/rebar3`.
### Self-hosted runners
Self-hosted runners need to set env. variable `ImageOS` to one of the following, since the action
uses that to download assets:
| ImageOS | Operating system
|- |-
| `ubuntu18` | `ubuntu-18.04`
| `ubuntu20` | `ubuntu-20.04`
| `ubuntu22` | `ubuntu-22.04`
| `ubuntu24` | `ubuntu-24.04`
| `win19` | `windows-2019`
| `win22` | `windows-2022`
| ImageOS | Operating system
|- |-
| `ubuntu22` | `ubuntu-22.04`
| `ubuntu22-arm64` | `ubuntu-22.04`
| `ubuntu24` | `ubuntu-24.04`
| `ubuntu24-arm64` | `ubuntu-24.04`
| `ubuntu26` | `ubuntu-26.04`
| `ubuntu26-arm64` | `ubuntu-26.04`
| `win22` | `windows-2022`
| `win25` | `windows-2025`
| `win25-vs2026` | `windows-2025`
| `macos14` | `macOS-14`
| `macos15` | `macOS-15`
| `macos26` | `macOS-26`
as per the following example:
@@ -130,23 +150,22 @@ e.g. `${{steps.setup-beam.outputs.erlang-version}}`
### Version file
A version file is specified via input `version-file` (e.g.`.tool-versions`). This
allows not having to use YML input for versions, though the action does check (and
A version file is specified via input `version-file` (e.g. `.tool-versions` or `mise.toml`).
The file type is inferred from the filename: files ending in `.toml` are parsed as
[mise](https://mise.jdx.dev/configuration.html#tools-dev-tools) configuration, and all others
are parsed as [`.tool-versions`](https://asdf-vm.com/manage/configuration.html) (asdf format).
This allows not having to use YML input for versions, though the action does check (and
will exit with error) if both inputs are set.
**Note**: if you're using a version file, option `version-type` is checked to be `strict`,
and will make the action exit with error otherwise.
The following version file formats are supported:
- `.tool-versions`, as specified by [asdf: Configuration](https://asdf-vm.com/manage/configuration.html)
Supported version elements are the same as the ones defined for the YML portion of the action,
with the following correspondence.
#### `.tool-versions` format
#### `.tool-versions` / `mise.toml` format
| YML | `.tool-versions`
| YML | Version file key
|- |-
| `otp-version` | `erlang`
| `elixir-version` | `elixir`
@@ -228,7 +247,7 @@ are found (i.e. `erl`, `erl.exe`, `rebar3`, `rebar3.exe`, ...).
### Elixir Problem Matchers
The Elixir Problem Matchers in this repository are adapted from
[here](https://github.com/fr1zle/vscode-elixir/blob/45eddb589acd7ac98e0c7305d1c2b24668ca709a/package.json#L70-L118).
[vscode-elixir/package.json](https://github.com/fr1zle/vscode-elixir/blob/45eddb589acd7ac98e0c7305d1c2b24668ca709a/package.json#L70-L118).
See [MATCHER_NOTICE](MATCHER_NOTICE.md) for license details.
## Examples
@@ -280,6 +299,34 @@ jobs:
- run: rebar3 ct
```
### Compatibility
To execute matrix testing with specific dependency versions, configure the environment matrix to
use pinned, compatible releases:
```yaml
test:
runs-on: ${{matrix.compat.os}}
name: Erlang/OTP ${{matrix.compat.otp}} / rebar3 ${{matrix.compat.rebar3}}
strategy:
matrix:
compat:
- otp: "26.2.5.5"
rebar3: "3.22.1"
os: ubuntu-24.04
- otp: "27.1.2"
rebar3: "3.22.1"
os: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: erlef/setup-beam@v1
with:
otp-version: ${{matrix.compat.otp}}
rebar3-version: ${{matrix.compat.rebar3}}
version-type: strict
- run: rebar3 eunit
```
### Erlang/OTP + `rebar3`, on Windows
```yaml
@@ -288,7 +335,7 @@ on: push
jobs:
test:
runs-on: windows-2022
runs-on: windows-2025
steps:
- uses: actions/checkout@v4
- uses: erlef/setup-beam@v1
@@ -298,6 +345,24 @@ jobs:
- run: rebar3 ct
```
### Erlang/OTP + `rebar3`, on macOS
```yaml
# create this in .github/workflows/ci.yml
on: push
jobs:
test:
runs-on: macos-15
steps:
- uses: actions/checkout@v4
- uses: erlef/setup-beam@v1
with:
otp-version: '28'
rebar3-version: '3.25'
- run: rebar3 ct
```
### Gleam on Ubuntu
```yaml
@@ -360,7 +425,7 @@ Check out [this doc](CONTRIBUTING.md).
### Code of Conduct
This project's code of conduct is made explicit in [CODE_OF_CONDUCT.md](https://github.com/erlef/setup-beam/blob/main/CODE_OF_CONDUCT.md).
This project's code of conduct is made explicit in [CODE_OF_CONDUCT.md](https://github.com/erlef/.github/blob/main/CODE_OF_CONDUCT.md).
### Security
+37 -2
View File
@@ -1,11 +1,15 @@
---
name: setup-beam
description: >
Set up a BEAM-based CI environment, supporting languages and tools such as Erlang/OTP, Elixir, Gleam, `rebar3`, and `hex`.
author: Erlang Ecosystem Foundation
branding:
color: blue
icon: code
inputs:
github-token:
description: >
@@ -16,52 +20,83 @@ inputs:
have to manually pass an automatically generated token via their environment settings within a workflow.
[Learn more about automatically generated tokens](https://docs.github.com/en/actions/security-guides/automatic-token-authentication)
default: ${{ github.token }}
required: false
otp-version:
description: Version range or exact version of Erlang/OTP to use,
or false when installing only Gleam without OTP
required: false
otp-architecture:
description: 32 or 64, to specify the architecture of the OTP to install. Only applies to Windows.
default: 64
required: false
elixir-version:
description: Version range or exact version of Elixir to use
required: false
gleam-version:
description: Version range or exact version of Gleam to use
required: false
install-hex:
description: Whether to install Hex (with mix local.hex
when installing Elixir)
default: true
required: false
install-rebar:
description: Whether to install Rebar (with mix local.rebar
when installing Elixir)
default: true
required: false
rebar3-version:
description: Version range or exact version of rebar3 to use (or nightly)
required: false
version-type:
description: strict means the versions are take as-are; loose means we try
to guess versions based on semver rules
default: loose
required: false
disable_problem_matchers:
description: whether to have the problem matchers present in the results
(or not)
default: false
required: false
version-file:
description: a versions file (e.g. as used by `asdf`), which defines inputs
description: >-
a versions file (e.g. `.tool-versions` as used by `asdf`, or `mise.toml`
as used by `mise`), which defines inputs
default: ''
required: false
hexpm-mirrors:
description: mirror(s) for hex.pm, one per line
default: |
https://builds.hex.pm
required: false
outputs:
elixir-version:
description: Exact version of Elixir that was installed
otp-version:
description: Exact version of Erlang/OTP that was installed
gleam-version:
description: Exact version of Gleam that was installed
rebar3-version:
description: Exact version of rebar3 that was installed
setup-beam-version:
description: The commit unique id of the execution action version
runs:
using: node20
using: node24
main: dist/index.js
+66
View File
@@ -0,0 +1,66 @@
{
"problemMatcher": [
{
"owner": "erlc-warning",
"severity": "warning",
"pattern": [
{
"regexp": "^(\\S+):(\\d+):(\\d+): [wW]arning: (.+)$",
"file": 1,
"line": 2,
"column": 3,
"message": 4
}
]
},
{
"owner": "erlc-error",
"severity": "error",
"pattern": [
{
"regexp": "^(\\S+):(\\d+):(\\d+): (?![wW]arning)(.+)$",
"file": 1,
"line": 2,
"column": 3,
"message": 4
}
]
},
{
"owner": "ct-failure",
"severity": "error",
"pattern": [
{
"regexp": "^(\\S+) failed on line (\\d+)$",
"file": 1,
"line": 2
},
{
"regexp": "^Reason: (.+)$",
"message": 1
}
]
},
{
"owner": "eunit-failure",
"severity": "error",
"pattern": [
{
"regexp": "^\\S+: .+\\.\\.\\.\\*failed\\*$"
},
{
"regexp": "^in function .+ \\((.+), line (\\d+)\\)$",
"file": 1,
"line": 2
},
{
"regexp": "^in call from .+$"
},
{
"regexp": "^\\*\\*error:(.+)$",
"message": 1
}
]
}
]
}
+35711 -6929
View File
File diff suppressed because one or more lines are too long
+27
View File
@@ -0,0 +1,27 @@
import js from '@eslint/js'
import globals from 'globals'
import yml from 'eslint-plugin-yml'
import * as yamlParser from 'yaml-eslint-parser'
export default [
js.configs.recommended,
{
languageOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
globals: globals.node,
},
},
{
files: ['**/*.yml'],
languageOptions: {
parser: yamlParser,
},
plugins: {
yml,
},
rules: {
...yml.configs.recommended.rules,
},
},
]
+66
View File
@@ -0,0 +1,66 @@
{
"problemMatcher": [
{
"owner": "erlc-warning",
"severity": "warning",
"pattern": [
{
"regexp": "^(\\S+):(\\d+):(\\d+): [wW]arning: (.+)$",
"file": 1,
"line": 2,
"column": 3,
"message": 4
}
]
},
{
"owner": "erlc-error",
"severity": "error",
"pattern": [
{
"regexp": "^(\\S+):(\\d+):(\\d+): (?![wW]arning)(.+)$",
"file": 1,
"line": 2,
"column": 3,
"message": 4
}
]
},
{
"owner": "ct-failure",
"severity": "error",
"pattern": [
{
"regexp": "^(\\S+) failed on line (\\d+)$",
"file": 1,
"line": 2
},
{
"regexp": "^Reason: (.+)$",
"message": 1
}
]
},
{
"owner": "eunit-failure",
"severity": "error",
"pattern": [
{
"regexp": "^\\S+: .+\\.\\.\\.\\*failed\\*$"
},
{
"regexp": "^in function .+ \\((.+), line (\\d+)\\)$",
"file": 1,
"line": 2
},
{
"regexp": "^in call from .+$"
},
{
"regexp": "^\\*\\*error:(.+)$",
"message": 1
}
]
}
]
}
+2244 -1364
View File
File diff suppressed because it is too large Load Diff
+21 -16
View File
@@ -1,36 +1,41 @@
{
"name": "setup-beam",
"type": "module",
"license": "MIT",
"private": true,
"scripts": {
"build": "ncc build src/setup-beam.js --no-cache",
"format": "prettier src/**/*.js --write && prettier test/**/*.js --write",
"jslint": "eslint src/**/*.js && eslint test/**/*.js",
"format": "prettier src/**/*.js test/**/*.js *.mjs --write",
"eslint": "eslint src/**/*.js test/**/*.js *.mjs",
"licenses": "yarn licenses generate-disclaimer > 3RD_PARTY_LICENSES",
"markdownlint": "markdownlint *.md ./github/**/*.md",
"shellcheck": "shellcheck .github/workflows/*.sh",
"test": "node --test --test-reporter=spec",
"yamllint": "yamllint .github/workflows/**.yml && yamllint .*.yml && yamllint *.yml",
"yamllint": "eslint .github/workflows/**.yml .github/*.yml .*.yml *.yml",
"clean-dist": "rm -rf ./dist",
"lint": "npm run markdownlint && npm run shellcheck && npm run yamllint && npm run jslint",
"lint": "npm run markdownlint && npm run shellcheck && npm run yamllint && npm run eslint",
"build-dist": "npm run clean-dist && npm install && npm run build && npm run format && npm run lint"
},
"dependencies": {
"@actions/core": "1.10.0",
"@actions/exec": "1.1.1",
"@actions/tool-cache": "2.0.1",
"semver": "7.6.2"
"@actions/core": "3.0.0",
"@actions/exec": "3.0.0",
"@actions/tool-cache": "4.0.0",
"csv-parse": "7.0.1",
"semver": "7.8.5",
"smol-toml": "1.7.0"
},
"devDependencies": {
"@vercel/ncc": "0.36.1",
"eslint": "8.43.0",
"markdownlint-cli": "0.35.0",
"prettier": "2.8.8",
"shellcheck": "2.2.0",
"yaml-lint": "1.7.0",
"yarn": "1.22.19"
"@eslint/js": "10.0.1",
"@vercel/ncc": "0.44.1",
"eslint": "10.6.0",
"eslint-plugin-yml": "3.5.0",
"globals": "17.7.0",
"markdownlint-cli": "0.49.0",
"prettier": "3.9.4",
"shellcheck": "4.1.0",
"yarn": "1.22.22"
},
"engines": {
"node": ">=20"
"node": ">=24"
}
}
+376 -157
View File
@@ -1,19 +1,26 @@
const core = require('@actions/core')
const { exec } = require('@actions/exec')
const tc = require('@actions/tool-cache')
const path = require('path')
const semver = require('semver')
const fs = require('fs')
const os = require('os')
import path from 'node:path'
import fs from 'node:fs'
import os from 'node:os'
import { fileURLToPath } from 'node:url'
import * as core from '@actions/core'
import { exec } from '@actions/exec'
import * as tc from '@actions/tool-cache'
import * as semver from 'semver'
import * as csv from 'csv-parse/sync'
import toml from 'smol-toml'
const __dirname = path.dirname(fileURLToPath(import.meta.url))
const MAX_HTTP_RETRIES = 3
const APPS = ['erlang', 'elixir', 'gleam', 'rebar']
main().catch((err) => {
core.setFailed(err.message)
})
if (process.env.NODE_ENV !== 'test') {
main().catch((err) => {
core.setFailed(err.message)
})
}
async function main() {
checkPlatform()
checkOtpArchitecture()
const versionFilePath = getInput('version-file', false)
@@ -27,15 +34,14 @@ async function main() {
versions = parseVersionFile(versionFilePath)
}
const osVersion = getRunnerOSVersion()
const otpSpec = getInput('otp-version', true, 'erlang', versions)
const elixirSpec = getInput('elixir-version', false, 'elixir', versions)
const gleamSpec = getInput('gleam-version', false, 'gleam', versions)
const rebar3Spec = getInput('rebar3-version', false, 'rebar', versions)
if (otpSpec !== 'false') {
await installOTP(otpSpec, osVersion)
const elixirInstalled = await maybeInstallElixir(elixirSpec, otpSpec)
await installOTP(otpSpec)
const elixirInstalled = await maybeInstallElixir(elixirSpec)
if (elixirInstalled === true) {
const shouldMixRebar = getInput('install-rebar', false)
await mix(shouldMixRebar, 'rebar')
@@ -51,11 +57,12 @@ async function main() {
await maybeInstallRebar3(rebar3Spec)
// undefined is replaced by a function, post- main branch merge
const setupBeamVersion = '3e793a7'
const setupBeamVersion = '324994a'
core.setOutput('setup-beam-version', setupBeamVersion)
}
async function installOTP(otpSpec, osVersion) {
async function installOTP(otpSpec) {
const osVersion = getRunnerOSVersion()
const otpVersion = await getOTPVersion(otpSpec, osVersion)
core.startGroup(
`Installing Erlang/OTP ${otpVersion} - built on ${getRunnerOSArchitecture()}/${osVersion}`,
@@ -72,15 +79,16 @@ async function installOTP(otpSpec, osVersion) {
},
})
core.setOutput('otp-version', otpVersion)
maybeEnableProblemMatchers('erlang')
core.endGroup()
return otpVersion
}
async function maybeInstallElixir(elixirSpec, otpSpec) {
async function maybeInstallElixir(elixirSpec) {
let installed = false
if (elixirSpec) {
const elixirVersion = await getElixirVersion(elixirSpec, otpSpec)
const elixirVersion = await getElixirVersion(elixirSpec)
core.startGroup(`Installing Elixir ${elixirVersion}`)
await doWithMirrors({
hexMirrors: hexMirrorsInput(),
@@ -93,7 +101,7 @@ async function maybeInstallElixir(elixirSpec, otpSpec) {
},
})
core.setOutput('elixir-version', elixirVersion)
maybeEnableElixirProblemMatchers()
maybeEnableProblemMatchers('elixir')
core.endGroup()
installed = true
@@ -102,16 +110,18 @@ async function maybeInstallElixir(elixirSpec, otpSpec) {
return installed
}
function maybeEnableElixirProblemMatchers() {
const disableProblemMatchers = getInput('disable_problem_matchers', false)
if (disableProblemMatchers === 'false') {
const elixirMatchers = path.join(
__dirname,
'..',
'matchers',
'elixir-matchers.json',
)
core.info(`##[add-matcher]${elixirMatchers}`)
function problemMatchersEnabled() {
return getInput('disable_problem_matchers', false) === 'false'
}
// path.join with static strings helps ncc resolve and bundle the JSON files
function maybeEnableProblemMatchers(language) {
if (problemMatchersEnabled()) {
const matcherFiles = {
erlang: path.join(`${__dirname}/../matchers/erlang-matchers.json`),
elixir: path.join(`${__dirname}/../matchers/elixir-matchers.json`),
}
core.info(`##[add-matcher]${matcherFiles[language]}`)
}
}
@@ -167,55 +177,109 @@ async function maybeInstallRebar3(rebar3Spec) {
return installed
}
function maybeRemoveOTPPrefix(otpSpec) {
return otpSpec.replace(/^OTP-/, '')
}
async function getOTPVersion(otpSpec0, osVersion) {
const otpVersions = await getOTPVersions(osVersion)
let spec = otpSpec0.replace(/^OTP-/, '')
const [otpVersions, originListing, hexMirrors] =
await getOTPVersions(osVersion)
let spec = maybeRemoveOTPPrefix(otpSpec0)
const versions = otpVersions
const otpVersion = getVersionFromSpec(spec, versions)
if (otpVersion === null) {
throw new Error(
`Requested Erlang/OTP version (${otpSpec0}) not found in version list ` +
"(should you be using option 'version-type': 'strict'?)",
requestedVersionFor('Erlang/OTP', otpSpec0, originListing, hexMirrors),
)
}
return otpVersion // from the reference, for download
}
async function getElixirVersion(exSpec0, otpVersion0) {
const otpVersion = otpVersion0.match(/^([^-]+-)?(.+)$/)[2]
let otpVersionMajor = otpVersion.match(/^([^.]+).*$/)[1]
function requestedVersionFor(tool, version, originListing, mirrors) {
const isVersionTypeStrict = isStrictVersion()
const userSuppliedOtp = exSpec0.match(/-otp-(\d+)/)?.[1] ?? null
let versionType = 'loose'
if (isVersionTypeStrict) {
versionType = 'strict'
}
let ret =
`Requested ${versionType} ${tool} version (${version}) not found in version list, ` +
`at ${originListing}${mirrors ? `, with mirrors ${mirrors}` : ''}.`
if (!isVersionTypeStrict) {
ret = `${ret} Should you be using option 'version-type': 'strict'?`
}
return ret
}
const knownBranches = ['main', 'master', 'maint']
const nonSpecificVersions = ['nightly', 'latest']
async function getElixirVersion(exSpec0) {
const otpSuffix = /-otp-(\d+)/
const userSuppliedOtp = exSpec0.match(otpSuffix)?.[1] ?? null
let otpVersionMajor = ''
if (userSuppliedOtp && isVersion(userSuppliedOtp)) {
otpVersionMajor = userSuppliedOtp
} else {
let cmd = 'erl'
if (process.platform === 'win32') {
cmd = 'erl.exe'
}
const args = [
'-noshell',
'-eval',
'io:format(erlang:system_info(otp_release)), halt().',
]
await exec(cmd, args, {
listeners: {
stdout: (data) => {
otpVersionMajor = data.toString()
},
},
})
}
const [otpVersionsForElixirMap, elixirVersions] = await getElixirVersions()
const spec = exSpec0.replace(/-otp-.*$/, '')
const [otpVersionsForElixirMap, elixirVersions, originListing, hexMirrors] =
await getElixirVersions()
const spec = exSpec0.replace(otpSuffix, '')
const versions = elixirVersions
const elixirVersionFromSpec = getVersionFromSpec(spec, versions)
if (elixirVersionFromSpec === null) {
throw new Error(
`Requested Elixir version (${exSpec0}) not found in version list ` +
"(should you be using option 'version-type': 'strict'?)",
requestedVersionFor('Elixir', exSpec0, originListing, hexMirrors),
)
}
const elixirVersionComp = otpVersionsForElixirMap[elixirVersionFromSpec]
if (
(elixirVersionComp && elixirVersionComp.includes(otpVersionMajor)) ||
!isVersion(otpVersionMajor)
) {
core.info(
`Using Elixir ${elixirVersionFromSpec} (built for Erlang/OTP ${otpVersionMajor})`,
)
} else {
let foundCombo = false
let otpVersionMajorIter = parseInt(otpVersionMajor)
let otpVersionsMajor = []
while (otpVersionMajorIter > otpVersionMajor - 3) {
otpVersionMajorIter += ''
otpVersionsMajor.push(otpVersionMajorIter)
const elixirVersionComp = otpVersionsForElixirMap[elixirVersionFromSpec]
if (
(elixirVersionComp && elixirVersionComp.includes(otpVersionMajorIter)) ||
!isVersion(otpVersionMajorIter)
) {
core.info(
`Using Elixir ${elixirVersionFromSpec} (built for Erlang/OTP ${otpVersionMajorIter})`,
)
foundCombo = true
break
}
otpVersionMajorIter = parseInt(otpVersionMajorIter) - 1
}
if (!foundCombo) {
throw new Error(
`Requested Elixir / Erlang/OTP version (${exSpec0} / ${otpVersion0}) not ` +
'found in version list (did you check Compatibility between Elixir and Erlang/OTP?).' +
`Requested Elixir / Erlang/OTP version (${exSpec0} / tried ${otpVersionsMajor}) not ` +
'found in version list (did you check Compatibility between Elixir and Erlang/OTP?). ' +
'Elixir and Erlang/OTP compatibility can be found at: ' +
'https://hexdocs.pm/elixir/compatibility-and-deprecations.html',
)
@@ -223,62 +287,82 @@ async function getElixirVersion(exSpec0, otpVersion0) {
let elixirVersionForDownload = elixirVersionFromSpec
if (isVersion(otpVersionMajor)) {
elixirVersionForDownload = `${elixirVersionFromSpec}-otp-${otpVersionMajor}`
if (isVersion(otpVersionMajorIter)) {
elixirVersionForDownload = `${elixirVersionFromSpec}-otp-${otpVersionMajorIter}`
}
return maybePrependWithV(elixirVersionForDownload)
}
async function getGleamVersion(gleamSpec0) {
const gleamVersions = await getGleamVersions()
const [gleamVersions, originListing] = await getGleamVersions()
const spec = gleamSpec0
const versions = gleamVersions
const gleamVersion = getVersionFromSpec(spec, versions)
if (gleamVersion === null) {
throw new Error(
`Requested Gleam version (${gleamSpec0}) not found in version list ` +
"(should you be using option 'version-type': 'strict'?)",
)
throw new Error(requestedVersionFor('Gleam', gleamSpec0, originListing))
}
return maybePrependWithV(gleamVersion)
}
async function getRebar3Version(r3Spec) {
const rebar3Versions = await getRebar3Versions()
const [rebar3Versions, originListing] = await getRebar3Versions()
const spec = r3Spec
const versions = rebar3Versions
const rebar3Version = getVersionFromSpec(spec, versions)
if (rebar3Version === null) {
throw new Error(
`Requested rebar3 version (${r3Spec}) not found in version list ` +
"(should you be using option 'version-type': 'strict'?)",
)
throw new Error(requestedVersionFor('rebar3', r3Spec, originListing))
}
return rebar3Version
}
function otpArchitecture() {
return getInput('otp-architecture', false)
}
async function getOTPVersions(osVersion) {
let otpVersionsListings
let originListing
let hexMirrors = null
if (process.platform === 'linux') {
originListing = `/builds/otp/${getRunnerOSArchitecture()}/${osVersion}/builds.txt`
hexMirrors = hexMirrorsInput()
otpVersionsListings = await doWithMirrors({
hexMirrors: hexMirrorsInput(),
hexMirrors,
actionTitle: `fetch ${originListing}`,
action: async (hexMirror) => {
return get(`${hexMirror}${originListing}`, [])
return get(`${hexMirror}${originListing}`)
},
})
} else if (process.platform === 'win32') {
originListing =
'https://api.github.com/repos/erlang/otp/releases?per_page=100'
otpVersionsListings = await get(originListing, [1, 2, 3])
} else if (process.platform === 'darwin') {
const arch = getRunnerOSArchitecture()
let targetArch
switch (arch) {
case 'amd64':
targetArch = 'x86_64'
break
case 'arm64':
targetArch = 'aarch64'
break
}
originListing =
`https://raw.githubusercontent.com/erlef/otp_builds/refs/heads/main` +
`/builds/${targetArch}-apple-darwin.csv`
otpVersionsListings = await get(originListing)
}
debugLog(`OTP versions listings from ${originListing}`, otpVersionsListings)
debugLog(
`OTP versions listings from ${originListing}, mirrors ${hexMirrors}`,
otpVersionsListings,
)
const otpVersions = {}
if (process.platform === 'linux') {
@@ -286,44 +370,55 @@ async function getOTPVersions(osVersion) {
.trim()
.split('\n')
.forEach((line) => {
const otpMatch = line
.match(/^([^ ]+)?( .+)/)[1]
.match(/^([^-]+-)?(.+)$/)
const otpVersion = otpMatch[2]
const otpVersionOrig = otpMatch[0]
debugLog('OTP line and parsing', [line, otpVersion, otpMatch])
const otpVersionOrig = line.match(/^([^ ]+)?( .+)/)[1]
const otpVersion = maybeRemoveOTPPrefix(otpVersionOrig)
debugLog('OTP line and parsing', [line, otpVersion, otpVersionOrig])
otpVersions[otpVersion] = otpVersionOrig // we keep the original for later reference
})
} else if (process.platform === 'win32') {
const file_regex = new RegExp(
`^otp_win${getInput('otp-architecture')}_(.*).exe$`,
)
const otpArch = otpArchitecture()
const file_regex = new RegExp(`^otp_win${RegExp.escape(otpArch)}_(.*).exe$`)
otpVersionsListings.forEach((otpVersionsListing) => {
otpVersionsListing
.map((x) => x.assets)
.flat()
.filter((x) => x.name.match(file_regex))
.forEach((x) => {
const otpMatch = x.name.match(file_regex)
const otpVersion = otpMatch[1]
debugLog('OTP line and parsing', [otpMatch, otpVersion])
otpVersions[otpVersion] = otpVersion
const otpVersionOrig = x.name.match(file_regex)[1]
const otpVersion = otpVersionOrig
debugLog('OTP line and parsing', [x.name, otpVersion, otpVersionOrig])
otpVersions[otpVersion] = otpVersionOrig
})
})
} else if (process.platform === 'darwin') {
csv
.parse(otpVersionsListings, {
columns: true,
})
.forEach((line) => {
const otpVersionOrig = line.ref_name
const otpVersion = maybeRemoveOTPPrefix(otpVersionOrig)
debugLog('OTP line and parsing', [line, otpVersion, otpVersionOrig])
otpVersions[otpVersion] = otpVersionOrig // we keep the original for later reference
})
}
debugLog(`OTP versions from ${originListing}`, JSON.stringify(otpVersions))
debugLog(
`OTP versions from ${originListing}, mirrors ${hexMirrors}`,
JSON.stringify(otpVersions),
)
return otpVersions
return [otpVersions, originListing, hexMirrors]
}
async function getElixirVersions() {
const originListing = '/builds/elixir/builds.txt'
const hexMirrors = hexMirrorsInput()
const elixirVersionsListings = await doWithMirrors({
hexMirrors: hexMirrorsInput(),
hexMirrors,
actionTitle: `fetch ${originListing}`,
action: async (hexMirror) => {
return get(`${hexMirror}${originListing}`, [])
return get(`${hexMirror}${originListing}`)
},
})
const otpVersionsForElixirMap = {}
@@ -346,14 +441,13 @@ async function getElixirVersions() {
elixirVersions[elixirVersion] = elixirVersion
})
return [otpVersionsForElixirMap, elixirVersions]
return [otpVersionsForElixirMap, elixirVersions, originListing, hexMirrors]
}
async function getGleamVersions() {
const resultJSONs = await get(
'https://api.github.com/repos/gleam-lang/gleam/releases?per_page=100',
[1, 2, 3],
)
const originListing =
'https://api.github.com/repos/gleam-lang/gleam/releases?per_page=100'
const resultJSONs = await get(originListing, [1, 2, 3])
const gleamVersionsListing = {}
resultJSONs.forEach((resultJSON) => {
resultJSON
@@ -365,14 +459,13 @@ async function getGleamVersions() {
})
})
return gleamVersionsListing
return [gleamVersionsListing, originListing]
}
async function getRebar3Versions() {
const resultJSONs = await get(
'https://api.github.com/repos/erlang/rebar3/releases?per_page=100',
[1, 2, 3],
)
const originListing =
'https://api.github.com/repos/erlang/rebar3/releases?per_page=100'
const resultJSONs = await get(originListing, [1, 2, 3])
const rebar3VersionsListing = {}
resultJSONs.forEach((resultJSON) => {
resultJSON
@@ -382,7 +475,7 @@ async function getRebar3Versions() {
})
})
return rebar3VersionsListing
return [rebar3VersionsListing, originListing]
}
function isStrictVersion() {
@@ -395,7 +488,10 @@ function gt(left, right) {
function validVersion(v) {
return (
v.match(/main|master|nightly|latest/g) == null &&
v.match(
new RegExp(`${knownBranches.join('|')}|${nonSpecificVersions.join('|')}`),
) == null &&
// these ones are for rebar3, which has alpha and beta releases
!v.startsWith('a') &&
!v.startsWith('b')
)
@@ -422,8 +518,14 @@ function getVersionFromSpec(spec0, versions0) {
const altVersions = {}
Object.entries(versions0).forEach(([version, altVersion]) => {
let coerced
if (isStrictVersion() || isRC(version)) {
// If `version-type: strict` or version is RC, we just try to remove a potential initial v
if (
isStrictVersion() ||
isRC(version) ||
isKnownBranch(version) ||
isKnownVerBranch(version)
) {
// If `version-type: strict`, version is an RC, or version is "a branch"
// we just try to remove a potential initial v
coerced = maybeRemoveVPrefix(version)
} else {
// Otherwise, we place the version into a version bucket
@@ -440,13 +542,19 @@ function getVersionFromSpec(spec0, versions0) {
const rangeMax = semver.maxSatisfying(versions, rangeForMax)
let version = null
if (isStrictVersion() || isRC(spec0) || isKnownBranch(spec0)) {
if (spec0 === 'latest') {
version = versions0[versions0.latest]
} else if (
isStrictVersion() ||
isRC(spec0) ||
isKnownBranch(spec0) ||
isKnownVerBranch(spec0) ||
spec0 === 'nightly'
) {
if (versions0[spec]) {
// If `version-type: strict` or version is RC, we obtain it directly
// We obtain it directly
version = versions0[spec]
}
} else if (spec0 === 'latest') {
version = versions0[versions0.latest]
} else if (rangeMax !== null) {
// Otherwise, we compare alt. versions' semver ranges to this version, from highest to lowest
const thatVersion = spec
@@ -473,7 +581,7 @@ function getVersionFromSpec(spec0, versions0) {
}
function maybeCoerced(v) {
let ret = null
let ret
try {
if (!isRC(v)) {
ret = semver.coerce(v).version
@@ -515,7 +623,11 @@ function isRC(ver) {
}
function isKnownBranch(ver) {
return ['main', 'master', 'maint'].includes(ver)
return knownBranches.includes(ver)
}
function isKnownVerBranch(ver) {
return knownBranches.some((b) => ver.match(b))
}
function githubARMRunnerArchs() {
@@ -545,25 +657,55 @@ function getRunnerOSArchitecture() {
}
function getRunnerOSVersion() {
// List from https://github.com/actions/runner-images?tab=readme-ov-file#available-images
// at e065a395d52f491c58eb8fba8ab1dde2c7cfada1
// Not considered, at the moment (though it might be easy to adapt to...):
// - ubuntu-slim
// - all macOS intel, large, and xlarge variants
// - all win arm variants
const ImageOSToContainer = {
ubuntu22: 'ubuntu-22.04',
'ubuntu22-arm64': 'ubuntu-22.04',
ubuntu24: 'ubuntu-24.04',
'ubuntu24-arm64': 'ubuntu-24.04',
ubuntu26: 'ubuntu-26.04',
'ubuntu26-arm64': 'ubuntu-26.04',
win22: 'windows-2022',
win25: 'windows-2025',
'win25-vs2026': 'windows-2025',
macos14: 'macOS-14',
macos15: 'macOS-15',
macos26: 'macOS-26',
}
const deprecatedImageOSToContainer = {
ubuntu18: 'ubuntu-18.04',
ubuntu20: 'ubuntu-20.04',
ubuntu22: 'ubuntu-22.04',
ubuntu24: 'ubuntu-24.04',
win19: 'windows-2019',
win22: 'windows-2022',
macos13: 'macOS-13',
}
const containerFromEnvImageOS = ImageOSToContainer[process.env.ImageOS]
if (!containerFromEnvImageOS) {
throw new Error(
"Tried to map a target OS from env. variable 'ImageOS' (got " +
`${process.env.ImageOS}` +
"), but failed. If you're using a " +
"self-hosted runner, you should set 'env': 'ImageOS': ... to one of the following: " +
"['" +
`${Object.keys(ImageOSToContainer).join("', '")}` +
"']",
)
const deprecatedContainerFromEnvImageOS =
deprecatedImageOSToContainer[process.env.ImageOS]
if (deprecatedContainerFromEnvImageOS) {
core.warning(
`You are using deprecated ImageOS ${deprecatedContainerFromEnvImageOS}. ` +
'Support for maintenance is very limited. Consider a non-deprecated version as ' +
'mentioned in the README.md.',
)
return deprecatedContainerFromEnvImageOS
} else {
throw new Error(
"Tried to map a target OS from env. variable 'ImageOS' (got " +
`${process.env.ImageOS}` +
"), but failed. If you're using a " +
"self-hosted runner, you should set 'env': 'ImageOS': ... to one of the following: " +
"['" +
`${Object.keys(ImageOSToContainer).join("', '")}` +
"']",
)
}
}
return containerFromEnvImageOS
@@ -608,7 +750,7 @@ async function get(url0, pageIdxs) {
headers.authorization = `Bearer ${GithubToken}`
}
if (pageIdxs.length === 0) {
if ((pageIdxs || []).length === 0) {
return getUrlResponse(url, headers)
} else {
return Promise.all(
@@ -643,7 +785,7 @@ function xyzAbcVersion(pref, suf) {
// https://www.erlang.org/doc/system_principles/versions.html
const dd = '\\.?(\\d+)?'
return new RegExp(
`${pref}v?(\\d+)${dd}${dd}${dd}${dd}${dd}(?:-rc\\.?\\d+)?(?:-otp-\\d+)?${suf}`,
`${pref}(?:OTP-)?v?(\\d+)${dd}${dd}${dd}${dd}${dd}(?:-rc\\.?\\d+)?(?:-otp-\\d+)?${suf}`,
)
}
@@ -675,28 +817,14 @@ alongside ${alternativeName}=${alternativeValue} \
return input
}
function parseVersionFile(versionFilePath0) {
const versionFilePath = path.resolve(
process.env.GITHUB_WORKSPACE,
versionFilePath0,
)
if (!fs.existsSync(versionFilePath)) {
throw new Error(
`The specified version file, ${versionFilePath0}, does not exist`,
)
}
core.startGroup(`Parsing version file at ${versionFilePath0}`)
function parseToolVersionsFile(versionFilePath) {
const appVersions = new Map()
const versions = fs.readFileSync(versionFilePath, 'utf8')
// For the time being we parse .tool-versions
// If we ever start parsing something else, this should
// become default in a new option named e.g. version-file-type
versions.split('\n').forEach((line) => {
versions.split(/\r?\n/).forEach((line) => {
const appVersion = line.match(/^([^ ]+)[ ]+(ref:v?)?([^ #]+)/)
if (appVersion) {
const app = appVersion[1]
if (['erlang', 'elixir', 'gleam', 'rebar'].includes(app)) {
if (APPS.includes(app)) {
const [, , , version] = appVersion
core.info(`Consuming ${app} at version ${version}`)
appVersions.set(app, version)
@@ -713,6 +841,46 @@ function parseVersionFile(versionFilePath0) {
return appVersions
}
function parseMiseTomlFile(versionFilePath) {
const appVersions = new Map()
const miseToml = fs.readFileSync(versionFilePath, 'utf8')
const miseTomlParsed = toml.parse(miseToml)
for (const app in miseTomlParsed.tools) {
if (APPS.includes(app)) {
const appVersion = miseTomlParsed.tools[app]
const version =
typeof appVersion == 'object' ? appVersion.version : appVersion
core.info(`Consuming ${app} at version ${version}`)
appVersions.set(app, version)
}
}
return appVersions
}
function parseVersionFile(versionFilePath0) {
const versionFilePath = path.resolve(
process.env.GITHUB_WORKSPACE,
versionFilePath0,
)
if (!fs.existsSync(versionFilePath)) {
throw new Error(
`The specified version file, ${versionFilePath0}, does not exist`,
)
}
if (versionFilePath0.endsWith('.toml')) {
core.startGroup(
`Parsing ${path.basename(versionFilePath0)} file at ${versionFilePath0}`,
)
return parseMiseTomlFile(versionFilePath)
}
core.startGroup(`Parsing .tool-versions file at ${versionFilePath0}`)
return parseToolVersionsFile(versionFilePath)
}
function debugLog(groupName, message) {
const group = `Debugging for ${groupName}`
core.debug(
@@ -807,11 +975,13 @@ async function install(toolName, opts) {
},
},
win32: {
downloadToolURL: () =>
'https://github.com/erlang/otp/releases/download/' +
`OTP-${toolVersion}/otp_win${getInput(
'otp-architecture',
)}_${toolVersion}.exe`,
downloadToolURL: () => {
const otpArch = otpArchitecture()
return (
'https://github.com/erlang/otp/releases/download/' +
`OTP-${toolVersion}/otp_win${otpArch}_${toolVersion}.exe`
)
},
extract: async () => ['file', 'otp.exe'],
postExtract: async (cachePath) => {
const cmd = path.join(cachePath, 'otp.exe')
@@ -823,6 +993,36 @@ async function install(toolName, opts) {
const args = ['+V']
const env = {}
return [cmd, args, env]
},
},
darwin: {
downloadToolURL: (versionSpec) => {
let suffix = ''
if (isKnownVerBranch(versionSpec)) {
// for these otp_builds adds `-latest` in the folder path
suffix = '-latest'
}
return (
`https://github.com/erlef/otp_builds/releases/download/` +
`${toolVersion}${suffix}/${toolVersion}-macos-${getRunnerOSArchitecture()}.tar.gz`
)
},
extract: async (file) => {
const dest = undefined
const flags = ['zx']
const targetDir = await tc.extractTar(file, dest, flags)
return ['dir', targetDir]
},
postExtract: async (/*cachePath*/) => {
// nothing to do
},
reportVersion: () => {
const cmd = 'erl'
const args = ['-version']
const env = {}
return [cmd, args, env]
},
},
@@ -863,12 +1063,14 @@ async function install(toolName, opts) {
tool: 'Gleam',
linux: {
downloadToolURL: () => {
const arch = getRunnerOSArchitecture()
let gz
if (
versionSpec === 'nightly' ||
semver.gt(versionSpec, 'v0.22.1')
) {
gz = `gleam-${versionSpec}-x86_64-unknown-linux-musl.tar.gz`
const target = arch === 'arm64' ? 'aarch64' : 'x86_64'
gz = `gleam-${versionSpec}-${target}-unknown-linux-musl.tar.gz`
} else {
gz = `gleam-${versionSpec}-linux-amd64.tar.gz`
}
@@ -932,6 +1134,26 @@ async function install(toolName, opts) {
},
},
}
installOpts.darwin = {
downloadToolURL: () => {
const arch = getRunnerOSArchitecture()
let gz
if (versionSpec === 'nightly' || semver.gt(versionSpec, 'v0.22.1')) {
const target = arch === 'arm64' ? 'aarch64' : 'x86_64'
gz = `gleam-${versionSpec}-${target}-apple-darwin.tar.gz`
} else {
gz =
arch === 'arm64'
? `gleam-${versionSpec}-macos-arm64.tar.gz`
: `gleam-${versionSpec}-macos.tar.gz`
}
return `https://github.com/gleam-lang/gleam/releases/download/${versionSpec}/${gz}`
},
extract: installOpts.linux.extract,
postExtract: installOpts.linux.postExtract,
reportVersion: installOpts.linux.reportVersion,
}
break
case 'rebar3':
installOpts = {
@@ -1005,6 +1227,7 @@ async function install(toolName, opts) {
},
},
}
installOpts.darwin = installOpts.linux
break
default:
throw new Error(`no installer for ${toolName}`)
@@ -1021,7 +1244,7 @@ async function installTool(opts) {
core.debug(`Checking if ${installOpts.tool} is already cached...`)
if (cachePath === '') {
core.debug(" ... it isn't!")
const downloadToolURL = platformOpts.downloadToolURL()
const downloadToolURL = platformOpts.downloadToolURL(versionSpec)
const file = await tc.downloadTool(downloadToolURL)
const [targetElemType, targetElem] = await platformOpts.extract(file)
@@ -1059,25 +1282,16 @@ async function installTool(opts) {
await exec(cmd, args, { env: { ...process.env, ...env } })
}
function checkPlatform() {
if (process.platform !== 'linux' && process.platform !== 'win32') {
throw new Error(
'@erlef/setup-beam only supports Ubuntu and Windows at this time',
)
}
}
function checkOtpArchitecture() {
if (process.platform !== 'win32' && getInput('otp-architecture') == '32') {
const otpArch = otpArchitecture()
if (process.platform !== 'win32' && otpArch == '32') {
throw new Error(
'@erlef/setup-beam only supports otp-architecture=32 on Windows',
)
}
if (
getInput('otp-architecture') !== '32' &&
getInput('otp-architecture') !== '64'
) {
if (!['32', '64'].includes(otpArch)) {
throw new Error('otp-architecture must be 32 or 64')
}
}
@@ -1086,15 +1300,20 @@ function debugLoggingEnabled() {
return !!process.env.RUNNER_DEBUG
}
module.exports = {
export default {
get,
getOTPVersion,
getElixirVersion,
getGleamVersion,
getOTPVersion,
getRebar3Version,
getRunnerOSVersion,
getVersionFromSpec,
githubAMDRunnerArchs,
githubARMRunnerArchs,
install,
installOTP,
maybeInstallElixir,
maybeInstallGleam,
maybeInstallRebar3,
parseVersionFile,
}
+97
View File
@@ -0,0 +1,97 @@
ref_name,ref,datetime,sha256,openssl,wxwidgets
master,09e092774c00416bb1635880ef210d13aa99fe98,2025-05-25T00:14:48Z,fa14de4db946fa512193853bca8147e679feb1037d6cd33d3a6a1c156b86ee32,openssl-3.1.6,wxwidgets-3.2.6
maint-27,c388a2d1b3f9918652276d4798692dd4d8ef97fc,2025-05-25T00:24:14Z,7fdd623e4a13ff3ca10d62f180e721014a2cd5c4341e7d81d8182a56d21a1141,openssl-3.1.6,wxwidgets-3.2.6
maint-26,7335f79eeaa0094c274dab2aa2ced9e138027c75,2025-05-25T00:20:18Z,5fa92c05bf904a0fc20313f4f9c625c620b71fd905dbe5fc78c8af0f8285f341,openssl-3.1.6,wxwidgets-3.2.6
maint-25,52199ed7e79646b73bacc47c92967ce9970b2373,2025-05-25T00:16:01Z,c12998e8ce96d9e2126e45a87428a1efde4a344f46d789ba62b46b02ae8222de,openssl-1.1.1w,wxwidgets-3.2.6
maint,c16299eb821718afd337db67f89c0fac56f79496,2025-05-25T00:15:17Z,b5385d907b9617d3c793a203f29d33617bf0a7c6c2d96beaebb02d743396b3e3,openssl-3.1.6,wxwidgets-3.2.6
OTP-28.0-rc4,bdd4594181242f0d681b2e464b8bf12205fba30b,2025-05-05T18:42:29Z,4d178928ffa49ad443bda09e336ff47cc0930998405ac77c56a31a98373b819c,openssl-3.1.6,wxwidgets-3.2.6
OTP-28.0-rc3,cf38f1efc91853e384542ce105639226b7367ea2,2025-04-16T11:36:45Z,027bc40d1cbda304a83f368e46f3d7e66ca92f61b9af1507d14a83d52d75052b,openssl-3.1.6,wxwidgets-3.2.6
OTP-28.0-rc2,5ddf7a91568cdc29cb85f43640dbdb40fb3b3985,2025-03-19T09:09:12Z,086d560a45d19add332ce62c42c9ebf09d7423ffea60c5b8c13d9a54389f21c8,openssl-3.1.6,wxwidgets-3.2.6
OTP-28.0-rc1,ba8f061732c41ad4bca7895e47acb5d26f54c032,2025-02-12T10:40:45Z,35d1538c04274bc30ffc2c5c28d2550cd7bf1dd361ea35b158066919b48d0fb8,openssl-3.1.6,wxwidgets-3.2.6
OTP-28.0,7a57568c13dedf4ab82ea2b881619788749bbdc5,2025-05-21T08:09:39Z,769d3712096a9e4b93754d7c9b3bd09ce705f1b22ba23adffc706facbfb05ec8,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.3.4,fe31f32661e4e90ae4a1bb32551d2937f7c4e12a,2025-05-08T13:43:25Z,c6ed988d1c32baef98e77a18131b5fe380c2ddb98792cefec0683778797989fa,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.3.3,48a429f47c03e0fee574417345be90efec815abc,2025-04-16T14:09:21Z,feba87f1ee977730bfea58098ace38671c329e2f6bb3fbbe132b22b2dcd6a399,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.3.2,94c2583f43441ecd788e85ad00982b03e6b572f7,2025-04-04T08:41:14Z,19dc3404f2bb09a8cdd0b08ab896dfe02cb9680bf5974bcaa2b60d06d455a325,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.3.1,901752e05d3ef678b22ecddb7379e8fe2a5facdd,2025-03-28T13:14:09Z,f56d69e199f675cc490e43a96de6522f104d3e2b5a07563a890f3542b557f011,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.3,15637bf0ed9e2a5d015ae9260c0912e2de2d7108,2025-03-05T10:11:36Z,a76eb513202c7131bcd62ee516f8498098b8adadd417bd90e30ae3a2e3f6762d,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.2.4,4df6b11359260d5e01161a651a35c7391021a218,2025-02-20T15:09:39Z,4acbc151870b3e4e295133f211da7d7904df7c093386e2229c6d62d617336c28,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.2.3,7eb2efcf82912f24e3d8ccf4854b42f28b5955bd,2025-02-17T17:07:52Z,472bfc5303367a48ffe2ebe963556bfb7b02bc5cb442ee58de802a9a4b6ae731,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.2.2,d7f17f87b48465e4a3ff8d427df1551f91672d2f,2025-02-06T14:40:59Z,5293c8338846eea6f4197775504fc047363adb57d2fdc34c36de88e530c9269f,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.2.1,c5725e0f7397b4c1296190bd96ac0fa50b850f20,2025-01-23T18:10:29Z,4f7b34919c31e9b34e749d7b9c9bfa6ddebb562621ff6dd1814d02d4e078a14a,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.2,46f2418451d1991d2060dc5b4d7d88f8259c9291,2024-12-11T10:09:04Z,cfdc9eff4bc3d7ac1b61e1d7adee92153e707249e9a1ade899ea5b7c52f6850d,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.1.3,e8ab3f7fdc59da5dd4dc8ef8c1c7bcec22b52faa,2024-12-05T15:08:49Z,5c1714f94851c7523ab8f97b6c0d303e216b82eb4e7bb57eff3864369b1e402b,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.1.2,1926819171af845832795d87bf1be0220710852b,2024-10-28T13:04:09Z,14d65f1f918cc91d42318d72dcd07f8c8439d25385fba2ac5b7a87bc51d6ccb5,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.1.1,67ded430d9be65e2e6c11bba323c0eb62d07cd1f,2024-10-28T13:03:51Z,292e121817b3a7c4276ac71fb4c5d8469f0d7e83691a4becfb29e6d890cb5939,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.1,9ae2ef54fc6dacb5bfbe2dc6fc6f2522d57ce1fb,2024-10-26T01:30:37Z,2b60294d04245c89aa0e2d6269a4f78eb55c17573c98bea355a9848517761a89,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.0.1,ee9628e7ed09ef02e767994a6da5b7a225316aaa,2024-10-26T01:17:39Z,c709ae30c356888e3f361a3691c100eff90df5b0248ef413d6565faaa0b8ccb9,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.0-rc3,5df3992d695da4d7e8777cf7605279ce9d131f1c,2024-10-26T01:08:27Z,058846679e52c761ad2a1cfdf6e310ec959f65c557f607ce52388afdac21f275,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.0-rc2,e651174c569694c92b1794ddd0a1a4a199610091,2024-10-26T01:04:25Z,b9f5efb99fd81f05ed840d6867a64f1ca13fe4f83599f52ba602781ac4a5e81c,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.0-rc1,b74bd21d5cb52e0fdc5ea321439c428783feea23,2024-10-26T01:03:29Z,7b0c54b1b8205a5c15e2df61cc446498ea8c40fffebff2b00d03a97722edac92,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.0,f1c72ea22f0d0479807fbe543191f7a1ef325838,2024-10-29T19:25:07Z,9e1c483d12e9554257c5edffb9b07a03001a3ddd131bbda05519638aa8f2206b,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.5.9,f900850abbd2c45b618675d1342ac85492ed1c5d,2025-02-20T16:10:43Z,f96951f4226b53ec529a1b4ee65cc85f7ffa93a5f08fee105033253ceacd19ac,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.5.8,45fd6b3adb81f0b245d9baf4dcbdde049221fbff,2025-02-12T14:07:59Z,95a823c5f504c6a9b5a6f92c243783af065b58f6771e3cd8512315e4d6084ea6,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.5.7,fa62351cef47e7dc502c5d0b1348ef8988b5d7b8,2025-01-27T12:50:05Z,0b5fa2704e170871995a41a3bb4fbb327f885735482d85406cbfe3db9b2cad7b,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.5.6,1f4a3b013b1df4034d6fb63623e77bfb142cadda,2024-12-05T14:41:44Z,b5cbcb34067420175e49b4d4ec3d2df88622d6b79ff410182abe46ef565dfefd,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.5.5,81399ff534e71be2425a0cae96e26c104fcde2f3,2024-11-01T07:09:27Z,24e1f777c46b2444cdaa965fe64da483c0609c2e9657567d359dc4a241b3dad1,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.5.4,b6e7e233d0b781728e745dc04f4cb2645c6632ec,2024-10-26T00:55:17Z,1d2d18a519c82442d4b278844b2050d3c55dfe224e9c39174c2fc5c66030c4e9,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.5.3,84152c2c9d85128d3cce471f645f154c34132d82,2024-10-26T00:55:31Z,0e1d19aad5078e9689574af9fce7b156ef1cf63acf1f248cb347e98bd75bfca3,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.5.2,c1805ad6200cec57bf86640fb9a1c715db515b78,2024-10-26T00:49:14Z,63aca8ad98e2be6ec5656708f97aa35d8b627515b9b6f52a4edc5051e0c444e8,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.5.12,a2f903599fe779380ec197c8ab41a193eec2d148,2025-05-08T15:41:10Z,34cebb1732abc21e2748dfe592f8d2a5ebfb70f34ff49b32ecd614e697332895,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.5.11,c2fcd5185c0651630196b6997be848a344c4aa71,2025-04-16T14:40:01Z,576e1a5453e6774924dfbc8cfc0b4e4276951be6e9fdec3b07db0c566b039852,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.5.10,eaa1b25cd65de117e82a4fbf709cb5cf6836f5ff,2025-03-28T14:41:04Z,369c227a41b6f8db3c67f8ef07c623f17692b7d518b62d240ca3ef6d66ebc602,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.5.1,858efd5b35b572c71a8010ad323c4127eef5bc29,2024-10-26T00:48:18Z,f010d0c5f6d202496608b7d6a23f5f6d855297423f9d4e706cd443be722c49e4,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.5,412bff5196fc0ab88a61fe37ca30e5226fc7872d,2024-10-26T00:43:56Z,171a4e07c6ee48207a6245ddf7c7ea1be435c0d93e9230d85076d07d9c06f3cf,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.4,e26c5206dc98ec1b8f978fceaa61fd1354266ccb,2024-10-26T00:42:41Z,e00dca5237cc0e3bb6b2533e7952bb5950948c0620d9bda38b2cd18ac0a8e22e,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.3,928d03e6da416208fce7b9a7dbbfbb4f25d26c37,2024-10-26T00:38:24Z,510f554e4de8f25ca7aff3cd400b8143ef8fa8fd6da3603b42a79f58e6ba64ec,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.2,b83df13eec5446beab06dd24315d37a5b0633fd2,2024-10-26T00:37:43Z,2f2076d378b7b1983e9a84cc96609887164c7860dbeba4f22dcfdc2d6c00545b,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.1,ca8b893f9d5bdd0957b78514ba523032e762c644,2024-10-26T00:33:38Z,137f717281ccc11d0df31b31aaf7485b1fa89967716f56ac1c77f8a9747ae80a,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2,7fc0898502cb3370b7c6d523a7393cd101808493,2024-10-26T00:28:49Z,99c70f904e0f7d4d9337cd896a03da341f5e0e308c8f875c622c0cd07daa9cf2,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.1.2,c41d424db42ba84b72f3e25167470c3555723d87,2024-10-26T00:24:31Z,8f3b51e4cc1cbf7d3cc012b52fadba57e27d54d6448c5e920b03d29ac13155bf,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.1.1,2bdd30b872ab91dc376998d2c417f2a8b514d1aa,2024-10-26T00:21:07Z,90e6418caa2554e5fd2dfc543c262b7b04456970208ec57714c1e00fb98c8a2a,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.1,e962af35263618665c1df57df5135c0c703ad502,2024-10-26T00:20:06Z,d9fe597017557b37d02a377a66b5f582822c9d817eb08797740547bc396becc0,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.0.2,d051172925a5c84b2f21850a188a533f885f201c,2024-10-26T00:19:26Z,216948062d898401b2294eb969f485542b7695640e3f45b7f2ada2d24c653d4d,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.0.1,b54b86ad4f1253f46fd4552a73923756660c1d53,2024-10-26T00:16:01Z,3eb422a565156cc03e3161d6e8c6ffe696141ad416bf24eeb0613683904dcf4f,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.0-rc3,1f897adc9df5e0de5d5a85633a8629a7e45ddeab,2024-10-26T00:16:19Z,c3953f88da37c2d1a96f98f475ff79816493c3a3e282ee040ed10f09ec607e40,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.0-rc2,dac89a6acc1a93a615930ca18f1dbf4e9323b038,2024-10-26T00:11:55Z,2f2d1d5d757489de3848334da9807d8f3e042828cd9d62f384f318e6c0622893,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.0-rc1,127026003180a834e9fa5d5919c824a184faeb92,2024-10-26T00:10:07Z,dafb60e6bc73a5a56d021cf9c1890c1932a32799321c70c917ee214ba04ac8ad,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.0,8c0ea6bd3306cfd6ca19730d180a2a93a716e1ee,2024-10-26T00:08:49Z,97424466074b66d51345dfa62776685ba7b92022bb6d8a3ed2d181d93ccf8386,openssl-3.1.6,wxwidgets-3.2.6
OTP-25.3.2.9,68fa9c42426380772784eed26d24747bfee38fcc,2024-10-26T00:05:02Z,2231d17ea69be892c929f44f223bed471b1a782680a40d9b38e94ecd3ba2d1e6,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.8,c08f5acfb4e47933d8128d0b41b01487d0eb97a1,2024-10-26T00:04:34Z,ac22ac879d0aced4a6e9c7ff36930a0e35b3b2a60532177147d92c566e98cd99,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.7,d3c9eeb17042e5567337e1f87c924b25186daae0,2024-10-26T00:01:05Z,8e6dd919122c09748c65bf85493d1111b4f3bfe0b8cfb2ece2925333cb6dea69,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.6,fd0e27a5c1ca7afde30b10c1b33a35ebb3313fd1,2024-10-25T23:59:16Z,520c8f37a5362c9e00fa7d2d43ef851a7ba96005618b3bcae6fb64046bd472c5,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.5,5cb360d524a5777ed4243ac03a0162a95f545a16,2024-10-25T23:58:39Z,7aaa85be4ac8c4c991a7109e2bbd9b574f9e19814933e2e948ca19d52a99dd5f,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.4,9e6d04dd18bef6136fc2b45cc60fe1348c4664a7,2024-10-25T23:54:16Z,bdb23c1b6d23da81044147efa2227985a55ab064feb475d0d22258137cc954c8,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.3,da340fd39fc6550b1432662ffa55c3b6da3db41f,2024-10-25T23:54:17Z,f63ab07211826bf34e71f32e8fc9209dfe291a74c7b7896e749d3bf815afa729,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.21,eb0176f76725c1d6cc594ac3c899cf5340f6a4aa,2025-05-08T16:43:21Z,2d5d58162888119919dc03e1b1a65c4a4dadb9081317f070336b9d9410fab360,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.20,3d83272458f7b0fb05aed4981a15cfa72ef7d2ba,2025-04-16T15:07:42Z,1bb2f2efc91d4c6efeb9c9d3f16635286fe1af49b0aeb2f1b12aa8f5b4eedb0d,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.2,ba144817d5478b15a50ef0c398d925232005277e,2024-10-25T23:49:44Z,2e75e4cfcdd0437f618881d0e229cdea3b4d437a5ac0777b9cd9e2edcd1dc3d9,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.19,2dc11e177ba8e5e051a2e88b731ec6de0eb8bb4c,2025-03-28T14:40:58Z,1997fa6b329a737cd4dabb06b1c21ccb77a3759b3191526d207ae9ef7764d741,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.18,e1346297304a626ef9126f77e8b943d51646fe5a,2025-02-20T16:09:10Z,185c3eac7b10fb6864f72331a8b13145caa71cee6115f9cc5c6658cf84ff710f,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.17,90a7540d93530990531ec48a14594efea8974ca2,2025-02-12T15:08:50Z,33bbc526906eb14ffba2f0213ba3105476cdb395cc7026212d37fccd8d2c0410,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.16,b21c9ee6961e5b6aa1595d1f7547b349973ea833,2024-12-05T15:49:06Z,89ef79aabbd97f4ae27f5ae91d5a68fd122de0b14f6d76ab3055766a5e24cbe7,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.15,cd91473539f38e88d10cf9efce3551afa1dbdb45,2024-10-25T23:48:26Z,427455c139fca6937bd56f0fd041d4aabb512c699c30270e7c604b46e1275c13,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.14,412febbe2eb15958f92dd6f908b14cfcd2ff2c16,2024-10-25T23:45:50Z,0316bd01404b8ed92807bdd903fcf2a1d5efe0534e4f524192e48f54d46fe013,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.13,00c3a73a1a043f3ca76cc2cfd20ac5ccc1e3377a,2024-10-25T23:44:26Z,2823f24541a189d5024e2c121ff9d2032d40b6893f2dacfefa40a8ccdec790b7,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.12,cee6d023f30d5cedb4eaa2b1384b49597a9bde66,2024-10-25T23:41:52Z,592fa60e391e2a10802e797ea260417b44c4f1e53c57bf5cf72da7a0274c5ee9,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.11,e1e117f0e95cb373f9bd5e159e54e6ffae1bb32b,2024-10-25T23:38:27Z,e29ae556a166a0cd71d4e855581c7e4e8231c40d0506cb29395d6d3a87cfe96b,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.10,733439dc03b21ea92c096b6cc31befc133cd9081,2024-10-25T23:37:09Z,1d1b51d5d09ccbaae94ca7f53d1d145bb92e10f90699a5306c020c994fc19d38,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.1,3f0a5f136aa72f785ca86df64c4384db2e9c8bbb,2024-10-25T23:34:24Z,9155c5fc846d98128da1b0651729cfa381e38a33b9b9253bcd5c208574b1b811,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2,0418c10ec37fa374867eae49f2f776c72c55d623,2024-10-25T23:33:11Z,73f44c0dfeb77f46e1be5a6e8a8edc32202fe0a6fa1e52468f4c5ad5144679ee,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.1,c487c0ea418315edd4a8614854e82c5359f4b8f8,2024-10-25T23:30:56Z,b351a214f26f0acb73e0d034eadeea27ffc83ed048a117bb121324e04f48104c,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3,5400ccf243a31d664153a4b9ceb9de3edfce1e0e,2024-10-25T23:29:58Z,e619064424f2e9b61fa06ea1c28fdeca9dab915910a8f2dbfe6fe933d02cbf57,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.2.3,07cf1c5caab19852ccf85ae7000d788913f3411d,2024-10-25T23:27:02Z,9cfa97270bcb7107753a2e5d22afc72fa144eb83204dfb25ec5be0f92d0d55c3,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.2.2,8adae7eebbc791433d5f0f58daab558a8fbe847d,2024-10-25T23:23:02Z,9d99b562eaaedca1b85cb90c3fa7c4348ee350d35176fc1703d4b3b9ed70eb2f,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.2.1,43361e793b63d57570a5a46da4a5cb4a1c3563c5,2024-10-25T23:22:57Z,bc25a8c440bdb7ce597c25362430d3bd4a69338d013fe786547c4b169d416166,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.2,d6eb1c53d688a242bfb5e3b4febcea66c49c0fe7,2024-10-25T23:18:52Z,06dabd5bf940f12315a3ce4c422de5279debaa7d22e4222d60ff9e8314ddf997,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.1.2.1,7dc04c755eef47b34f5763dcfc8d16913c1b7a08,2024-10-25T23:18:49Z,b991aa4334859db303bbeeaa4b707536e01f2b3250152379e3bf68e4be1e39d3,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.1.2,38ad8e28421c745c06ef9bd55f6e6204cd1f15ef,2024-10-25T23:14:57Z,3ae9c79be39211330e9a3609df06e5de7c5413c9191507901a04e939d4c2bc0d,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.1.1,be6f05d34736fadf37328058f00e788cb88da61b,2024-10-25T23:14:47Z,e26266e2cc4ac2a7b34e76aabec0a3f9a7c44479b13297938fb479d1f043c77c,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.1,6efb5e31df6bc512ed6c466584ef15b846dcecab,2024-10-25T23:09:56Z,80a1dad1f1fc792c6aec58fc2236937637589167d1f9072e748e7f0ac8e88a56,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.0.4,c028b855ee3f12c835ff3538a90ac5dbc155631b,2024-10-25T23:09:55Z,4e7e2f39cb14e36641c9b7d8255629ccccd11cf2ce466797ab0c75bf3369c3e4,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.0.3,89c04fb1836fb865565125a4d5880b93e784d856,2024-10-25T23:08:37Z,b92aece9b6a5b1d010fac6bd603f12b3c3d1e897c18c77a1ba75e28c246082c1,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.0.2,ac0c9879c68b23278178a7afe738285b33ff1832,2024-10-25T23:05:22Z,1fcd537d0254783b3fa5906831cb8e4ed042f667948908d541812eba5f0df0a8,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.0.1,cf18f250a40f33cc648d869eac833cd9aee86ed6,2024-10-25T23:02:52Z,133d88f6a8b3e734bce16b226c956e56b10f198a442d872069cd3a850c0fd9ab,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.0-rc3,47f121af8ee55a0dbe2a8c9ab85031ba052bad6b,2024-10-25T22:57:10Z,9a42a8210f21099380bcf471fc5cb2914ac24fe0424b250f3bcc80de3d79a099,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.0-rc2,85d0a8366e64f8272e332a63a2cba59afa3f7eb9,2024-10-25T22:57:09Z,f06a17a07f0744fd60671fdf89845617712dd200e138dfbb4cc54a20b0ad2a51,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.0-rc1,3c68ceea1f93119bed871866c690fbf5a95048c1,2024-10-25T23:00:53Z,368d833b711ad3a11b3241e6abee7184f103476a8d46e6d2d4940f7b454ec708,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.0,4ed7957623e5ccbd420a09a506bd6bc9930fe93c,2024-10-25T22:03:32Z,d3728dd03c29d29237c2bc682884f5fad5535b41256a78f3314240e6458215b2,openssl-1.1.1w,wxwidgets-3.2.6
1 ref_name ref datetime sha256 openssl wxwidgets
2 master 09e092774c00416bb1635880ef210d13aa99fe98 2025-05-25T00:14:48Z fa14de4db946fa512193853bca8147e679feb1037d6cd33d3a6a1c156b86ee32 openssl-3.1.6 wxwidgets-3.2.6
3 maint-27 c388a2d1b3f9918652276d4798692dd4d8ef97fc 2025-05-25T00:24:14Z 7fdd623e4a13ff3ca10d62f180e721014a2cd5c4341e7d81d8182a56d21a1141 openssl-3.1.6 wxwidgets-3.2.6
4 maint-26 7335f79eeaa0094c274dab2aa2ced9e138027c75 2025-05-25T00:20:18Z 5fa92c05bf904a0fc20313f4f9c625c620b71fd905dbe5fc78c8af0f8285f341 openssl-3.1.6 wxwidgets-3.2.6
5 maint-25 52199ed7e79646b73bacc47c92967ce9970b2373 2025-05-25T00:16:01Z c12998e8ce96d9e2126e45a87428a1efde4a344f46d789ba62b46b02ae8222de openssl-1.1.1w wxwidgets-3.2.6
6 maint c16299eb821718afd337db67f89c0fac56f79496 2025-05-25T00:15:17Z b5385d907b9617d3c793a203f29d33617bf0a7c6c2d96beaebb02d743396b3e3 openssl-3.1.6 wxwidgets-3.2.6
7 OTP-28.0-rc4 bdd4594181242f0d681b2e464b8bf12205fba30b 2025-05-05T18:42:29Z 4d178928ffa49ad443bda09e336ff47cc0930998405ac77c56a31a98373b819c openssl-3.1.6 wxwidgets-3.2.6
8 OTP-28.0-rc3 cf38f1efc91853e384542ce105639226b7367ea2 2025-04-16T11:36:45Z 027bc40d1cbda304a83f368e46f3d7e66ca92f61b9af1507d14a83d52d75052b openssl-3.1.6 wxwidgets-3.2.6
9 OTP-28.0-rc2 5ddf7a91568cdc29cb85f43640dbdb40fb3b3985 2025-03-19T09:09:12Z 086d560a45d19add332ce62c42c9ebf09d7423ffea60c5b8c13d9a54389f21c8 openssl-3.1.6 wxwidgets-3.2.6
10 OTP-28.0-rc1 ba8f061732c41ad4bca7895e47acb5d26f54c032 2025-02-12T10:40:45Z 35d1538c04274bc30ffc2c5c28d2550cd7bf1dd361ea35b158066919b48d0fb8 openssl-3.1.6 wxwidgets-3.2.6
11 OTP-28.0 7a57568c13dedf4ab82ea2b881619788749bbdc5 2025-05-21T08:09:39Z 769d3712096a9e4b93754d7c9b3bd09ce705f1b22ba23adffc706facbfb05ec8 openssl-3.1.6 wxwidgets-3.2.6
12 OTP-27.3.4 fe31f32661e4e90ae4a1bb32551d2937f7c4e12a 2025-05-08T13:43:25Z c6ed988d1c32baef98e77a18131b5fe380c2ddb98792cefec0683778797989fa openssl-3.1.6 wxwidgets-3.2.6
13 OTP-27.3.3 48a429f47c03e0fee574417345be90efec815abc 2025-04-16T14:09:21Z feba87f1ee977730bfea58098ace38671c329e2f6bb3fbbe132b22b2dcd6a399 openssl-3.1.6 wxwidgets-3.2.6
14 OTP-27.3.2 94c2583f43441ecd788e85ad00982b03e6b572f7 2025-04-04T08:41:14Z 19dc3404f2bb09a8cdd0b08ab896dfe02cb9680bf5974bcaa2b60d06d455a325 openssl-3.1.6 wxwidgets-3.2.6
15 OTP-27.3.1 901752e05d3ef678b22ecddb7379e8fe2a5facdd 2025-03-28T13:14:09Z f56d69e199f675cc490e43a96de6522f104d3e2b5a07563a890f3542b557f011 openssl-3.1.6 wxwidgets-3.2.6
16 OTP-27.3 15637bf0ed9e2a5d015ae9260c0912e2de2d7108 2025-03-05T10:11:36Z a76eb513202c7131bcd62ee516f8498098b8adadd417bd90e30ae3a2e3f6762d openssl-3.1.6 wxwidgets-3.2.6
17 OTP-27.2.4 4df6b11359260d5e01161a651a35c7391021a218 2025-02-20T15:09:39Z 4acbc151870b3e4e295133f211da7d7904df7c093386e2229c6d62d617336c28 openssl-3.1.6 wxwidgets-3.2.6
18 OTP-27.2.3 7eb2efcf82912f24e3d8ccf4854b42f28b5955bd 2025-02-17T17:07:52Z 472bfc5303367a48ffe2ebe963556bfb7b02bc5cb442ee58de802a9a4b6ae731 openssl-3.1.6 wxwidgets-3.2.6
19 OTP-27.2.2 d7f17f87b48465e4a3ff8d427df1551f91672d2f 2025-02-06T14:40:59Z 5293c8338846eea6f4197775504fc047363adb57d2fdc34c36de88e530c9269f openssl-3.1.6 wxwidgets-3.2.6
20 OTP-27.2.1 c5725e0f7397b4c1296190bd96ac0fa50b850f20 2025-01-23T18:10:29Z 4f7b34919c31e9b34e749d7b9c9bfa6ddebb562621ff6dd1814d02d4e078a14a openssl-3.1.6 wxwidgets-3.2.6
21 OTP-27.2 46f2418451d1991d2060dc5b4d7d88f8259c9291 2024-12-11T10:09:04Z cfdc9eff4bc3d7ac1b61e1d7adee92153e707249e9a1ade899ea5b7c52f6850d openssl-3.1.6 wxwidgets-3.2.6
22 OTP-27.1.3 e8ab3f7fdc59da5dd4dc8ef8c1c7bcec22b52faa 2024-12-05T15:08:49Z 5c1714f94851c7523ab8f97b6c0d303e216b82eb4e7bb57eff3864369b1e402b openssl-3.1.6 wxwidgets-3.2.6
23 OTP-27.1.2 1926819171af845832795d87bf1be0220710852b 2024-10-28T13:04:09Z 14d65f1f918cc91d42318d72dcd07f8c8439d25385fba2ac5b7a87bc51d6ccb5 openssl-3.1.6 wxwidgets-3.2.6
24 OTP-27.1.1 67ded430d9be65e2e6c11bba323c0eb62d07cd1f 2024-10-28T13:03:51Z 292e121817b3a7c4276ac71fb4c5d8469f0d7e83691a4becfb29e6d890cb5939 openssl-3.1.6 wxwidgets-3.2.6
25 OTP-27.1 9ae2ef54fc6dacb5bfbe2dc6fc6f2522d57ce1fb 2024-10-26T01:30:37Z 2b60294d04245c89aa0e2d6269a4f78eb55c17573c98bea355a9848517761a89 openssl-3.1.6 wxwidgets-3.2.6
26 OTP-27.0.1 ee9628e7ed09ef02e767994a6da5b7a225316aaa 2024-10-26T01:17:39Z c709ae30c356888e3f361a3691c100eff90df5b0248ef413d6565faaa0b8ccb9 openssl-3.1.6 wxwidgets-3.2.6
27 OTP-27.0-rc3 5df3992d695da4d7e8777cf7605279ce9d131f1c 2024-10-26T01:08:27Z 058846679e52c761ad2a1cfdf6e310ec959f65c557f607ce52388afdac21f275 openssl-3.1.6 wxwidgets-3.2.6
28 OTP-27.0-rc2 e651174c569694c92b1794ddd0a1a4a199610091 2024-10-26T01:04:25Z b9f5efb99fd81f05ed840d6867a64f1ca13fe4f83599f52ba602781ac4a5e81c openssl-3.1.6 wxwidgets-3.2.6
29 OTP-27.0-rc1 b74bd21d5cb52e0fdc5ea321439c428783feea23 2024-10-26T01:03:29Z 7b0c54b1b8205a5c15e2df61cc446498ea8c40fffebff2b00d03a97722edac92 openssl-3.1.6 wxwidgets-3.2.6
30 OTP-27.0 f1c72ea22f0d0479807fbe543191f7a1ef325838 2024-10-29T19:25:07Z 9e1c483d12e9554257c5edffb9b07a03001a3ddd131bbda05519638aa8f2206b openssl-3.1.6 wxwidgets-3.2.6
31 OTP-26.2.5.9 f900850abbd2c45b618675d1342ac85492ed1c5d 2025-02-20T16:10:43Z f96951f4226b53ec529a1b4ee65cc85f7ffa93a5f08fee105033253ceacd19ac openssl-3.1.6 wxwidgets-3.2.6
32 OTP-26.2.5.8 45fd6b3adb81f0b245d9baf4dcbdde049221fbff 2025-02-12T14:07:59Z 95a823c5f504c6a9b5a6f92c243783af065b58f6771e3cd8512315e4d6084ea6 openssl-3.1.6 wxwidgets-3.2.6
33 OTP-26.2.5.7 fa62351cef47e7dc502c5d0b1348ef8988b5d7b8 2025-01-27T12:50:05Z 0b5fa2704e170871995a41a3bb4fbb327f885735482d85406cbfe3db9b2cad7b openssl-3.1.6 wxwidgets-3.2.6
34 OTP-26.2.5.6 1f4a3b013b1df4034d6fb63623e77bfb142cadda 2024-12-05T14:41:44Z b5cbcb34067420175e49b4d4ec3d2df88622d6b79ff410182abe46ef565dfefd openssl-3.1.6 wxwidgets-3.2.6
35 OTP-26.2.5.5 81399ff534e71be2425a0cae96e26c104fcde2f3 2024-11-01T07:09:27Z 24e1f777c46b2444cdaa965fe64da483c0609c2e9657567d359dc4a241b3dad1 openssl-3.1.6 wxwidgets-3.2.6
36 OTP-26.2.5.4 b6e7e233d0b781728e745dc04f4cb2645c6632ec 2024-10-26T00:55:17Z 1d2d18a519c82442d4b278844b2050d3c55dfe224e9c39174c2fc5c66030c4e9 openssl-3.1.6 wxwidgets-3.2.6
37 OTP-26.2.5.3 84152c2c9d85128d3cce471f645f154c34132d82 2024-10-26T00:55:31Z 0e1d19aad5078e9689574af9fce7b156ef1cf63acf1f248cb347e98bd75bfca3 openssl-3.1.6 wxwidgets-3.2.6
38 OTP-26.2.5.2 c1805ad6200cec57bf86640fb9a1c715db515b78 2024-10-26T00:49:14Z 63aca8ad98e2be6ec5656708f97aa35d8b627515b9b6f52a4edc5051e0c444e8 openssl-3.1.6 wxwidgets-3.2.6
39 OTP-26.2.5.12 a2f903599fe779380ec197c8ab41a193eec2d148 2025-05-08T15:41:10Z 34cebb1732abc21e2748dfe592f8d2a5ebfb70f34ff49b32ecd614e697332895 openssl-3.1.6 wxwidgets-3.2.6
40 OTP-26.2.5.11 c2fcd5185c0651630196b6997be848a344c4aa71 2025-04-16T14:40:01Z 576e1a5453e6774924dfbc8cfc0b4e4276951be6e9fdec3b07db0c566b039852 openssl-3.1.6 wxwidgets-3.2.6
41 OTP-26.2.5.10 eaa1b25cd65de117e82a4fbf709cb5cf6836f5ff 2025-03-28T14:41:04Z 369c227a41b6f8db3c67f8ef07c623f17692b7d518b62d240ca3ef6d66ebc602 openssl-3.1.6 wxwidgets-3.2.6
42 OTP-26.2.5.1 858efd5b35b572c71a8010ad323c4127eef5bc29 2024-10-26T00:48:18Z f010d0c5f6d202496608b7d6a23f5f6d855297423f9d4e706cd443be722c49e4 openssl-3.1.6 wxwidgets-3.2.6
43 OTP-26.2.5 412bff5196fc0ab88a61fe37ca30e5226fc7872d 2024-10-26T00:43:56Z 171a4e07c6ee48207a6245ddf7c7ea1be435c0d93e9230d85076d07d9c06f3cf openssl-3.1.6 wxwidgets-3.2.6
44 OTP-26.2.4 e26c5206dc98ec1b8f978fceaa61fd1354266ccb 2024-10-26T00:42:41Z e00dca5237cc0e3bb6b2533e7952bb5950948c0620d9bda38b2cd18ac0a8e22e openssl-3.1.6 wxwidgets-3.2.6
45 OTP-26.2.3 928d03e6da416208fce7b9a7dbbfbb4f25d26c37 2024-10-26T00:38:24Z 510f554e4de8f25ca7aff3cd400b8143ef8fa8fd6da3603b42a79f58e6ba64ec openssl-3.1.6 wxwidgets-3.2.6
46 OTP-26.2.2 b83df13eec5446beab06dd24315d37a5b0633fd2 2024-10-26T00:37:43Z 2f2076d378b7b1983e9a84cc96609887164c7860dbeba4f22dcfdc2d6c00545b openssl-3.1.6 wxwidgets-3.2.6
47 OTP-26.2.1 ca8b893f9d5bdd0957b78514ba523032e762c644 2024-10-26T00:33:38Z 137f717281ccc11d0df31b31aaf7485b1fa89967716f56ac1c77f8a9747ae80a openssl-3.1.6 wxwidgets-3.2.6
48 OTP-26.2 7fc0898502cb3370b7c6d523a7393cd101808493 2024-10-26T00:28:49Z 99c70f904e0f7d4d9337cd896a03da341f5e0e308c8f875c622c0cd07daa9cf2 openssl-3.1.6 wxwidgets-3.2.6
49 OTP-26.1.2 c41d424db42ba84b72f3e25167470c3555723d87 2024-10-26T00:24:31Z 8f3b51e4cc1cbf7d3cc012b52fadba57e27d54d6448c5e920b03d29ac13155bf openssl-3.1.6 wxwidgets-3.2.6
50 OTP-26.1.1 2bdd30b872ab91dc376998d2c417f2a8b514d1aa 2024-10-26T00:21:07Z 90e6418caa2554e5fd2dfc543c262b7b04456970208ec57714c1e00fb98c8a2a openssl-3.1.6 wxwidgets-3.2.6
51 OTP-26.1 e962af35263618665c1df57df5135c0c703ad502 2024-10-26T00:20:06Z d9fe597017557b37d02a377a66b5f582822c9d817eb08797740547bc396becc0 openssl-3.1.6 wxwidgets-3.2.6
52 OTP-26.0.2 d051172925a5c84b2f21850a188a533f885f201c 2024-10-26T00:19:26Z 216948062d898401b2294eb969f485542b7695640e3f45b7f2ada2d24c653d4d openssl-3.1.6 wxwidgets-3.2.6
53 OTP-26.0.1 b54b86ad4f1253f46fd4552a73923756660c1d53 2024-10-26T00:16:01Z 3eb422a565156cc03e3161d6e8c6ffe696141ad416bf24eeb0613683904dcf4f openssl-3.1.6 wxwidgets-3.2.6
54 OTP-26.0-rc3 1f897adc9df5e0de5d5a85633a8629a7e45ddeab 2024-10-26T00:16:19Z c3953f88da37c2d1a96f98f475ff79816493c3a3e282ee040ed10f09ec607e40 openssl-3.1.6 wxwidgets-3.2.6
55 OTP-26.0-rc2 dac89a6acc1a93a615930ca18f1dbf4e9323b038 2024-10-26T00:11:55Z 2f2d1d5d757489de3848334da9807d8f3e042828cd9d62f384f318e6c0622893 openssl-3.1.6 wxwidgets-3.2.6
56 OTP-26.0-rc1 127026003180a834e9fa5d5919c824a184faeb92 2024-10-26T00:10:07Z dafb60e6bc73a5a56d021cf9c1890c1932a32799321c70c917ee214ba04ac8ad openssl-3.1.6 wxwidgets-3.2.6
57 OTP-26.0 8c0ea6bd3306cfd6ca19730d180a2a93a716e1ee 2024-10-26T00:08:49Z 97424466074b66d51345dfa62776685ba7b92022bb6d8a3ed2d181d93ccf8386 openssl-3.1.6 wxwidgets-3.2.6
58 OTP-25.3.2.9 68fa9c42426380772784eed26d24747bfee38fcc 2024-10-26T00:05:02Z 2231d17ea69be892c929f44f223bed471b1a782680a40d9b38e94ecd3ba2d1e6 openssl-1.1.1w wxwidgets-3.2.6
59 OTP-25.3.2.8 c08f5acfb4e47933d8128d0b41b01487d0eb97a1 2024-10-26T00:04:34Z ac22ac879d0aced4a6e9c7ff36930a0e35b3b2a60532177147d92c566e98cd99 openssl-1.1.1w wxwidgets-3.2.6
60 OTP-25.3.2.7 d3c9eeb17042e5567337e1f87c924b25186daae0 2024-10-26T00:01:05Z 8e6dd919122c09748c65bf85493d1111b4f3bfe0b8cfb2ece2925333cb6dea69 openssl-1.1.1w wxwidgets-3.2.6
61 OTP-25.3.2.6 fd0e27a5c1ca7afde30b10c1b33a35ebb3313fd1 2024-10-25T23:59:16Z 520c8f37a5362c9e00fa7d2d43ef851a7ba96005618b3bcae6fb64046bd472c5 openssl-1.1.1w wxwidgets-3.2.6
62 OTP-25.3.2.5 5cb360d524a5777ed4243ac03a0162a95f545a16 2024-10-25T23:58:39Z 7aaa85be4ac8c4c991a7109e2bbd9b574f9e19814933e2e948ca19d52a99dd5f openssl-1.1.1w wxwidgets-3.2.6
63 OTP-25.3.2.4 9e6d04dd18bef6136fc2b45cc60fe1348c4664a7 2024-10-25T23:54:16Z bdb23c1b6d23da81044147efa2227985a55ab064feb475d0d22258137cc954c8 openssl-1.1.1w wxwidgets-3.2.6
64 OTP-25.3.2.3 da340fd39fc6550b1432662ffa55c3b6da3db41f 2024-10-25T23:54:17Z f63ab07211826bf34e71f32e8fc9209dfe291a74c7b7896e749d3bf815afa729 openssl-1.1.1w wxwidgets-3.2.6
65 OTP-25.3.2.21 eb0176f76725c1d6cc594ac3c899cf5340f6a4aa 2025-05-08T16:43:21Z 2d5d58162888119919dc03e1b1a65c4a4dadb9081317f070336b9d9410fab360 openssl-1.1.1w wxwidgets-3.2.6
66 OTP-25.3.2.20 3d83272458f7b0fb05aed4981a15cfa72ef7d2ba 2025-04-16T15:07:42Z 1bb2f2efc91d4c6efeb9c9d3f16635286fe1af49b0aeb2f1b12aa8f5b4eedb0d openssl-1.1.1w wxwidgets-3.2.6
67 OTP-25.3.2.2 ba144817d5478b15a50ef0c398d925232005277e 2024-10-25T23:49:44Z 2e75e4cfcdd0437f618881d0e229cdea3b4d437a5ac0777b9cd9e2edcd1dc3d9 openssl-1.1.1w wxwidgets-3.2.6
68 OTP-25.3.2.19 2dc11e177ba8e5e051a2e88b731ec6de0eb8bb4c 2025-03-28T14:40:58Z 1997fa6b329a737cd4dabb06b1c21ccb77a3759b3191526d207ae9ef7764d741 openssl-1.1.1w wxwidgets-3.2.6
69 OTP-25.3.2.18 e1346297304a626ef9126f77e8b943d51646fe5a 2025-02-20T16:09:10Z 185c3eac7b10fb6864f72331a8b13145caa71cee6115f9cc5c6658cf84ff710f openssl-1.1.1w wxwidgets-3.2.6
70 OTP-25.3.2.17 90a7540d93530990531ec48a14594efea8974ca2 2025-02-12T15:08:50Z 33bbc526906eb14ffba2f0213ba3105476cdb395cc7026212d37fccd8d2c0410 openssl-1.1.1w wxwidgets-3.2.6
71 OTP-25.3.2.16 b21c9ee6961e5b6aa1595d1f7547b349973ea833 2024-12-05T15:49:06Z 89ef79aabbd97f4ae27f5ae91d5a68fd122de0b14f6d76ab3055766a5e24cbe7 openssl-1.1.1w wxwidgets-3.2.6
72 OTP-25.3.2.15 cd91473539f38e88d10cf9efce3551afa1dbdb45 2024-10-25T23:48:26Z 427455c139fca6937bd56f0fd041d4aabb512c699c30270e7c604b46e1275c13 openssl-1.1.1w wxwidgets-3.2.6
73 OTP-25.3.2.14 412febbe2eb15958f92dd6f908b14cfcd2ff2c16 2024-10-25T23:45:50Z 0316bd01404b8ed92807bdd903fcf2a1d5efe0534e4f524192e48f54d46fe013 openssl-1.1.1w wxwidgets-3.2.6
74 OTP-25.3.2.13 00c3a73a1a043f3ca76cc2cfd20ac5ccc1e3377a 2024-10-25T23:44:26Z 2823f24541a189d5024e2c121ff9d2032d40b6893f2dacfefa40a8ccdec790b7 openssl-1.1.1w wxwidgets-3.2.6
75 OTP-25.3.2.12 cee6d023f30d5cedb4eaa2b1384b49597a9bde66 2024-10-25T23:41:52Z 592fa60e391e2a10802e797ea260417b44c4f1e53c57bf5cf72da7a0274c5ee9 openssl-1.1.1w wxwidgets-3.2.6
76 OTP-25.3.2.11 e1e117f0e95cb373f9bd5e159e54e6ffae1bb32b 2024-10-25T23:38:27Z e29ae556a166a0cd71d4e855581c7e4e8231c40d0506cb29395d6d3a87cfe96b openssl-1.1.1w wxwidgets-3.2.6
77 OTP-25.3.2.10 733439dc03b21ea92c096b6cc31befc133cd9081 2024-10-25T23:37:09Z 1d1b51d5d09ccbaae94ca7f53d1d145bb92e10f90699a5306c020c994fc19d38 openssl-1.1.1w wxwidgets-3.2.6
78 OTP-25.3.2.1 3f0a5f136aa72f785ca86df64c4384db2e9c8bbb 2024-10-25T23:34:24Z 9155c5fc846d98128da1b0651729cfa381e38a33b9b9253bcd5c208574b1b811 openssl-1.1.1w wxwidgets-3.2.6
79 OTP-25.3.2 0418c10ec37fa374867eae49f2f776c72c55d623 2024-10-25T23:33:11Z 73f44c0dfeb77f46e1be5a6e8a8edc32202fe0a6fa1e52468f4c5ad5144679ee openssl-1.1.1w wxwidgets-3.2.6
80 OTP-25.3.1 c487c0ea418315edd4a8614854e82c5359f4b8f8 2024-10-25T23:30:56Z b351a214f26f0acb73e0d034eadeea27ffc83ed048a117bb121324e04f48104c openssl-1.1.1w wxwidgets-3.2.6
81 OTP-25.3 5400ccf243a31d664153a4b9ceb9de3edfce1e0e 2024-10-25T23:29:58Z e619064424f2e9b61fa06ea1c28fdeca9dab915910a8f2dbfe6fe933d02cbf57 openssl-1.1.1w wxwidgets-3.2.6
82 OTP-25.2.3 07cf1c5caab19852ccf85ae7000d788913f3411d 2024-10-25T23:27:02Z 9cfa97270bcb7107753a2e5d22afc72fa144eb83204dfb25ec5be0f92d0d55c3 openssl-1.1.1w wxwidgets-3.2.6
83 OTP-25.2.2 8adae7eebbc791433d5f0f58daab558a8fbe847d 2024-10-25T23:23:02Z 9d99b562eaaedca1b85cb90c3fa7c4348ee350d35176fc1703d4b3b9ed70eb2f openssl-1.1.1w wxwidgets-3.2.6
84 OTP-25.2.1 43361e793b63d57570a5a46da4a5cb4a1c3563c5 2024-10-25T23:22:57Z bc25a8c440bdb7ce597c25362430d3bd4a69338d013fe786547c4b169d416166 openssl-1.1.1w wxwidgets-3.2.6
85 OTP-25.2 d6eb1c53d688a242bfb5e3b4febcea66c49c0fe7 2024-10-25T23:18:52Z 06dabd5bf940f12315a3ce4c422de5279debaa7d22e4222d60ff9e8314ddf997 openssl-1.1.1w wxwidgets-3.2.6
86 OTP-25.1.2.1 7dc04c755eef47b34f5763dcfc8d16913c1b7a08 2024-10-25T23:18:49Z b991aa4334859db303bbeeaa4b707536e01f2b3250152379e3bf68e4be1e39d3 openssl-1.1.1w wxwidgets-3.2.6
87 OTP-25.1.2 38ad8e28421c745c06ef9bd55f6e6204cd1f15ef 2024-10-25T23:14:57Z 3ae9c79be39211330e9a3609df06e5de7c5413c9191507901a04e939d4c2bc0d openssl-1.1.1w wxwidgets-3.2.6
88 OTP-25.1.1 be6f05d34736fadf37328058f00e788cb88da61b 2024-10-25T23:14:47Z e26266e2cc4ac2a7b34e76aabec0a3f9a7c44479b13297938fb479d1f043c77c openssl-1.1.1w wxwidgets-3.2.6
89 OTP-25.1 6efb5e31df6bc512ed6c466584ef15b846dcecab 2024-10-25T23:09:56Z 80a1dad1f1fc792c6aec58fc2236937637589167d1f9072e748e7f0ac8e88a56 openssl-1.1.1w wxwidgets-3.2.6
90 OTP-25.0.4 c028b855ee3f12c835ff3538a90ac5dbc155631b 2024-10-25T23:09:55Z 4e7e2f39cb14e36641c9b7d8255629ccccd11cf2ce466797ab0c75bf3369c3e4 openssl-1.1.1w wxwidgets-3.2.6
91 OTP-25.0.3 89c04fb1836fb865565125a4d5880b93e784d856 2024-10-25T23:08:37Z b92aece9b6a5b1d010fac6bd603f12b3c3d1e897c18c77a1ba75e28c246082c1 openssl-1.1.1w wxwidgets-3.2.6
92 OTP-25.0.2 ac0c9879c68b23278178a7afe738285b33ff1832 2024-10-25T23:05:22Z 1fcd537d0254783b3fa5906831cb8e4ed042f667948908d541812eba5f0df0a8 openssl-1.1.1w wxwidgets-3.2.6
93 OTP-25.0.1 cf18f250a40f33cc648d869eac833cd9aee86ed6 2024-10-25T23:02:52Z 133d88f6a8b3e734bce16b226c956e56b10f198a442d872069cd3a850c0fd9ab openssl-1.1.1w wxwidgets-3.2.6
94 OTP-25.0-rc3 47f121af8ee55a0dbe2a8c9ab85031ba052bad6b 2024-10-25T22:57:10Z 9a42a8210f21099380bcf471fc5cb2914ac24fe0424b250f3bcc80de3d79a099 openssl-1.1.1w wxwidgets-3.2.6
95 OTP-25.0-rc2 85d0a8366e64f8272e332a63a2cba59afa3f7eb9 2024-10-25T22:57:09Z f06a17a07f0744fd60671fdf89845617712dd200e138dfbb4cc54a20b0ad2a51 openssl-1.1.1w wxwidgets-3.2.6
96 OTP-25.0-rc1 3c68ceea1f93119bed871866c690fbf5a95048c1 2024-10-25T23:00:53Z 368d833b711ad3a11b3241e6abee7184f103476a8d46e6d2d4940f7b454ec708 openssl-1.1.1w wxwidgets-3.2.6
97 OTP-25.0 4ed7957623e5ccbd420a09a506bd6bc9930fe93c 2024-10-25T22:03:32Z d3728dd03c29d29237c2bc682884f5fad5535b41256a78f3314240e6458215b2 openssl-1.1.1w wxwidgets-3.2.6
+97
View File
@@ -0,0 +1,97 @@
ref_name,ref,datetime,sha256,openssl,wxwidgets
master,09e092774c00416bb1635880ef210d13aa99fe98,2025-05-25T00:21:50Z,5a405999f2332111d10d70699ec659d7766a34c4339c915fe75aca16324a68e6,openssl-3.1.6,wxwidgets-3.2.6
maint-27,c388a2d1b3f9918652276d4798692dd4d8ef97fc,2025-05-25T00:28:26Z,c1c79695b4559eba35cc4df207b6b6063fa38bd2f67bbf1531f43dddfff171e1,openssl-3.1.6,wxwidgets-3.2.6
maint-26,7335f79eeaa0094c274dab2aa2ced9e138027c75,2025-05-25T00:24:18Z,74323d309a36c3cd21a7e4daa4989852c6077949d1ee5a4ab2403ddba5757234,openssl-3.1.6,wxwidgets-3.2.6
maint-25,52199ed7e79646b73bacc47c92967ce9970b2373,2025-05-25T00:22:01Z,cc76a4f8a183c5b077a955a520b7ff12afe4063bcae74de26e9bdd71b5fb39a0,openssl-1.1.1w,wxwidgets-3.2.6
maint,c16299eb821718afd337db67f89c0fac56f79496,2025-05-25T00:19:44Z,b345cb6ac07ba03469833927f4de4e3e44885e44996d7f3e3e30e9b4f6dce0dc,openssl-3.1.6,wxwidgets-3.2.6
OTP-28.0-rc4,bdd4594181242f0d681b2e464b8bf12205fba30b,2025-05-05T18:58:38Z,584ee2ce5b63331ba57bf362fb20a6e28b7e0b26040ea9100d5ee7522a7148ce,openssl-3.1.6,wxwidgets-3.2.6
OTP-28.0-rc3,cf38f1efc91853e384542ce105639226b7367ea2,2025-04-16T11:51:19Z,bce2b8383898fb5386bfc14ca4462e509ed7f5a0466fe5d215fd8a2dfb2f5c64,openssl-3.1.6,wxwidgets-3.2.6
OTP-28.0-rc2,5ddf7a91568cdc29cb85f43640dbdb40fb3b3985,2025-03-19T09:16:11Z,e1d04af4b57b921b0edbddf0595bbda3d89f50db67460a04ce77ede3bad1b90a,openssl-3.1.6,wxwidgets-3.2.6
OTP-28.0-rc1,ba8f061732c41ad4bca7895e47acb5d26f54c032,2025-02-12T10:47:48Z,028793678f35df042a565fb17552717506bcfbbce6e7dc395ed9f896cb7eee62,openssl-3.1.6,wxwidgets-3.2.6
OTP-28.0,7a57568c13dedf4ab82ea2b881619788749bbdc5,2025-05-21T08:16:14Z,31a8a7deb607f936a24024a6b3ed278a2fd16af608687e1e2f91c9a6554b43f8,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.3.4,fe31f32661e4e90ae4a1bb32551d2937f7c4e12a,2025-05-08T13:53:15Z,2d63ddb0d51d2964e9d5f01bb2a54c43ec4840cffb243f6a70d300628e891b99,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.3.3,48a429f47c03e0fee574417345be90efec815abc,2025-04-16T14:24:16Z,b923cfb68d483cd3de99f1c00944e36b5596a7239c77675e5d07ce675357109f,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.3.2,94c2583f43441ecd788e85ad00982b03e6b572f7,2025-04-04T08:53:14Z,7e6f744f0b92bcf36697db476988ecfd9be96840667667561496cfa631bae402,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.3.1,901752e05d3ef678b22ecddb7379e8fe2a5facdd,2025-03-28T13:21:24Z,a1b94b8ce7c151c59e309599bc2c290c824e4805b66b135f5ff2db261bb1eac0,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.3,15637bf0ed9e2a5d015ae9260c0912e2de2d7108,2025-03-05T10:13:39Z,f52be7289b13755ee20121a40e2a910f707fce3c2e4f1d358a525377da7789de,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.2.4,4df6b11359260d5e01161a651a35c7391021a218,2025-02-20T15:13:30Z,7797d076b5e0d8df7f36fcb73b3d88898da8ab98d801441fb78a06bf609db6ac,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.2.3,7eb2efcf82912f24e3d8ccf4854b42f28b5955bd,2025-02-17T17:14:28Z,bd7f58deb6c97cd75fe63f9d36395d1675aec4ca0914f8f0f389fd7f0d2286d1,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.2.2,d7f17f87b48465e4a3ff8d427df1551f91672d2f,2025-02-06T15:01:49Z,ef44d779e4f8cfebdd59240a41b3ef4e99bd2e35ca84f219b7842d42f1ec0721,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.2.1,c5725e0f7397b4c1296190bd96ac0fa50b850f20,2025-01-23T18:18:42Z,13151d5f3f07efa4b30c9bd824b34d7d85f289bf28baf633e504d5eb4f8177ae,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.2,46f2418451d1991d2060dc5b4d7d88f8259c9291,2024-12-11T10:22:06Z,91fd068ed9748b83f95b6e4a8c60e59562567a507cf6d4da8f8d44a88523ce54,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.1.3,e8ab3f7fdc59da5dd4dc8ef8c1c7bcec22b52faa,2024-12-05T15:17:20Z,ea878ed7d9c13c2aa44f6ea5af8321e1111967828577e5532d6ee04d92f7194c,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.1.2,1926819171af845832795d87bf1be0220710852b,2024-10-28T13:12:50Z,7a634452ab85a23d210ef482c89af7e7e8448e063a1ccaf92e815daf52b1a135,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.1.1,67ded430d9be65e2e6c11bba323c0eb62d07cd1f,2024-10-28T13:12:16Z,36790419f0f30260174474d2bda9a3a8e269b0f3ebc6d873af03a3da93243565,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.1,9ae2ef54fc6dacb5bfbe2dc6fc6f2522d57ce1fb,2024-10-26T01:31:19Z,99601924bf4b9656e4ecaff9936d4a3c15761b69a64cec24a8b89f6cb4f0e4c7,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.0.1,ee9628e7ed09ef02e767994a6da5b7a225316aaa,2024-10-26T01:24:32Z,f95748869c9206d394369932532ca2c23a6d21447607c6705cea4d5ab28c921d,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.0-rc3,5df3992d695da4d7e8777cf7605279ce9d131f1c,2024-10-26T01:20:53Z,b8cdb3aba95f10ca0b2c61a0a6e2383dfc1d9cee49ac77d1955f6f0e5e80e58a,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.0-rc2,e651174c569694c92b1794ddd0a1a4a199610091,2024-10-26T01:23:23Z,4e0351fcac3399a217fddf6af30db45377ffbba1fe59c5d3e7dc6d364c077aec,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.0-rc1,b74bd21d5cb52e0fdc5ea321439c428783feea23,2024-10-26T01:13:02Z,cf0b249e72a1ec1db93c4d081bdf20309383a0ab47971f392484323ab58b62af,openssl-3.1.6,wxwidgets-3.2.6
OTP-27.0,f1c72ea22f0d0479807fbe543191f7a1ef325838,2024-10-29T19:30:52Z,41b4ad3e7081151c10b964d1b63982704d6a840da8a525bda0423f42028d180c,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.5.9,f900850abbd2c45b618675d1342ac85492ed1c5d,2025-02-20T16:14:22Z,2f1cba5d0a752edab7f4394bc361854b69cd89fe71f06acfc9e42b82b9a42324,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.5.8,45fd6b3adb81f0b245d9baf4dcbdde049221fbff,2025-02-12T14:13:26Z,21d6aa90527a2fa16a47a73ad739925c6d8811d47d530a81a987cb53f2def3bb,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.5.7,fa62351cef47e7dc502c5d0b1348ef8988b5d7b8,2025-01-27T12:57:08Z,c204588b446faf19c189ca536803b818c5b8b46c529a3b0b7df67a11d92b8412,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.5.6,1f4a3b013b1df4034d6fb63623e77bfb142cadda,2024-12-05T14:50:08Z,db9635c0b1d6d79dc0a66bdf7b64c41a1323b8790551a6df3ddb659f3deb1d38,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.5.5,81399ff534e71be2425a0cae96e26c104fcde2f3,2024-11-01T07:16:35Z,fc58d3d471a552451e6682df652fe989d5be639e9179e3d6b44deb78d4867501,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.5.4,b6e7e233d0b781728e745dc04f4cb2645c6632ec,2024-10-26T01:07:55Z,bd3f246ddd8448c1cb877dd9d9137ab7e77f9700608b4c0f68968a81f13fbb04,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.5.3,84152c2c9d85128d3cce471f645f154c34132d82,2024-10-26T00:58:33Z,941970ed37bb76d690e03355b7d4e6770af076d89b62f542ac140efafdb7a179,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.5.2,c1805ad6200cec57bf86640fb9a1c715db515b78,2024-10-26T00:55:50Z,628bcc158e5662004135241e7ab3e71146860c9fc5d1f86829061da38119144a,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.5.12,a2f903599fe779380ec197c8ab41a193eec2d148,2025-05-08T15:46:20Z,6cd58a09426aff768fb0117b27e60cd2b671c1336424aada0d48e47e26d4449f,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.5.11,c2fcd5185c0651630196b6997be848a344c4aa71,2025-04-16T14:47:54Z,dec9c637e619dbd9add023c50a5ba0b23a30657d543417d7ff0d9033abdbbebe,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.5.10,eaa1b25cd65de117e82a4fbf709cb5cf6836f5ff,2025-03-28T14:48:04Z,aa5a5759222e4eec003f5aae0f2804e2e487da4c81feaed7305c3a9e87fcdbfd,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.5.1,858efd5b35b572c71a8010ad323c4127eef5bc29,2024-10-26T00:51:06Z,587a9b9f7d5178895194691fdb57fab4d9b819cba644129381a73944eadbc821,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.5,412bff5196fc0ab88a61fe37ca30e5226fc7872d,2024-10-26T00:49:32Z,8eb273cf5c459829cca28a8caada5b0e289f43c126b0718fa85888731dccf7d4,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.4,e26c5206dc98ec1b8f978fceaa61fd1354266ccb,2024-10-26T00:43:46Z,ed9a515471bcf07ce392b0d3837f001b555f55d670f07f32cdd6c5ce510d78fb,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.3,928d03e6da416208fce7b9a7dbbfbb4f25d26c37,2024-10-26T00:44:24Z,92ec2364d9948b4885714aca32a1beb1115c753cf0a2b19b03012bc1805fe556,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.2,b83df13eec5446beab06dd24315d37a5b0633fd2,2024-10-26T00:39:35Z,e23a011e026687b66a25da9a1f6bcc4da94494c5de1eba6440b5b25b6f00ddb8,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2.1,ca8b893f9d5bdd0957b78514ba523032e762c644,2024-10-26T00:33:26Z,459bbf4efe65a4575bd16b26ab7d69d39327433233a712ebbe1dccd531fcf87c,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.2,7fc0898502cb3370b7c6d523a7393cd101808493,2024-10-26T00:33:56Z,6b9760085de085f3a12d20935f338fc99ee67fd35d2e62a7e3e9cffb9b21242c,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.1.2,c41d424db42ba84b72f3e25167470c3555723d87,2024-10-26T00:33:32Z,82ba154649c17be8ff45268239d36e4d34e82a520ee57a49b9b337e3fa77d69d,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.1.1,2bdd30b872ab91dc376998d2c417f2a8b514d1aa,2024-10-26T00:28:08Z,d5ce0b59d827c751ab2f68e5e7f1757dabee399040eaedcfba491c8c79c66cc3,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.1,e962af35263618665c1df57df5135c0c703ad502,2024-10-26T00:26:33Z,236ea16e738e5c57deae3ff424ede7944ffce14fac8b939a18ba2ccad85e4d81,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.0.2,d051172925a5c84b2f21850a188a533f885f201c,2024-10-26T00:25:48Z,8cb58daa3694229068f5a3f621c5508907a20593955abfd17185720505946764,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.0.1,b54b86ad4f1253f46fd4552a73923756660c1d53,2024-10-26T00:19:22Z,fb7d35f7838fd9422cdc215f2177953fa43bf72357628c59eefeb4c0852c5121,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.0-rc3,1f897adc9df5e0de5d5a85633a8629a7e45ddeab,2024-10-26T00:16:30Z,ff2a6fe3e3c6f7aa851604c0ff3163cfe3dbf9ed06d2f1a62f753a758d9d39bc,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.0-rc2,dac89a6acc1a93a615930ca18f1dbf4e9323b038,2024-10-26T00:15:34Z,c9f23a971cde0b7bb25d0b82a18f55f958ac169d499593c17b3d0c5d847a4714,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.0-rc1,127026003180a834e9fa5d5919c824a184faeb92,2024-10-26T00:12:17Z,abf7d8ffafe4dafc39df96c062a0aad392f03c0abbe9a5d9f7a5b01189e48f9d,openssl-3.1.6,wxwidgets-3.2.6
OTP-26.0,8c0ea6bd3306cfd6ca19730d180a2a93a716e1ee,2024-10-26T00:11:24Z,8952b4fb76ce8d1b95b2de8643ddf19ad84993563860b313382915b290ef2d97,openssl-3.1.6,wxwidgets-3.2.6
OTP-25.3.2.9,68fa9c42426380772784eed26d24747bfee38fcc,2024-10-26T00:08:03Z,5702fa82c48a9732a5f1196cb32b617c475851e3471fd2b6e7e719792dfc032a,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.8,c08f5acfb4e47933d8128d0b41b01487d0eb97a1,2024-10-26T00:06:15Z,c6c1929c5408e9d6fc66c1b606e0926f362cd057db838b6013dac54b94cab39d,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.7,d3c9eeb17042e5567337e1f87c924b25186daae0,2024-10-26T00:04:48Z,fe43af77747d7034204451ed630c4851d86c23432ce89d5f253505988656036a,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.6,fd0e27a5c1ca7afde30b10c1b33a35ebb3313fd1,2024-10-26T00:00:23Z,83bf16f30737ec14bf32a1acbfd86f65b89be2fa8b8bd4462c70c6c48d1e61b1,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.5,5cb360d524a5777ed4243ac03a0162a95f545a16,2024-10-26T00:01:37Z,ad254c611b29df084470bf3f757e619287b52c3145dced61a46aaa85bd58b36b,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.4,9e6d04dd18bef6136fc2b45cc60fe1348c4664a7,2024-10-25T23:56:58Z,e1fd6458c109d6fc3f8ebca01b5d29a718d9612a7ffbac464ce870daf69cd6fa,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.3,da340fd39fc6550b1432662ffa55c3b6da3db41f,2024-10-25T23:55:04Z,3b40c8fbee2bab28e5d979994dce3dbb0761df348a21798b1c50467783781324,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.21,eb0176f76725c1d6cc594ac3c899cf5340f6a4aa,2025-05-08T16:49:06Z,8aed83bc19798efd25e0a32fb1eb174904a2881b3d9a8039d86f7aff6375cdb1,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.20,3d83272458f7b0fb05aed4981a15cfa72ef7d2ba,2025-04-16T15:09:30Z,7456c582f71f1f8448cd6d2349302985e4691bc24785f72495da7db9989c54f0,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.2,ba144817d5478b15a50ef0c398d925232005277e,2024-10-25T23:54:34Z,e7d36cab3aa0096c549f8e8fcd381fb3f4005dba698fc1f096dd9373b3862cd8,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.19,2dc11e177ba8e5e051a2e88b731ec6de0eb8bb4c,2025-03-28T14:45:35Z,23b29d4fa18af2f0252b7d878316d492d114a0d3c2a97eed5e874601b36bddc7,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.18,e1346297304a626ef9126f77e8b943d51646fe5a,2025-02-20T16:10:45Z,adf16cfeab7e02003be2e13b23e37bc7952b45025e2400a008acab0e36c805db,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.17,90a7540d93530990531ec48a14594efea8974ca2,2025-02-12T15:11:54Z,6bd872e819aabdf2c07f81d6a0436f1a639c778440cf10be3dff783a88a9e4fc,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.16,b21c9ee6961e5b6aa1595d1f7547b349973ea833,2024-12-05T15:46:47Z,571677874adeeb77e585b0e732a13ccfe707497a6abfd45aa2c11df59ba4c46a,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.15,cd91473539f38e88d10cf9efce3551afa1dbdb45,2024-10-25T23:49:57Z,1f0d974438da48dbd15823a3e2753d5ca4a5aeccef49d7814af40393a3aff26f,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.14,412febbe2eb15958f92dd6f908b14cfcd2ff2c16,2024-10-25T23:49:51Z,9584a37799b64b3f095e36f000b0574ed5119ed8200899065da298b7e59aac32,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.13,00c3a73a1a043f3ca76cc2cfd20ac5ccc1e3377a,2024-10-25T23:44:27Z,eed02812b0104e5fa530bc2a932266fe5102412ced43efcbd7ce2ed9962c4017,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.12,cee6d023f30d5cedb4eaa2b1384b49597a9bde66,2024-10-25T23:43:41Z,c033ffd03966263de25794a1768813a0434c77e575b546a0b087fd587d5b63fa,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.11,e1e117f0e95cb373f9bd5e159e54e6ffae1bb32b,2024-10-25T23:42:59Z,5dbcce0b562c03c273c29acb92e56d0d8a1fd25da15a665ffc3f621d8abdf94a,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.10,733439dc03b21ea92c096b6cc31befc133cd9081,2024-10-25T23:40:26Z,ec0305a15e69fa9aa669fc2c95b34ded49597e77be84121da7bba104ac92f06c,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2.1,3f0a5f136aa72f785ca86df64c4384db2e9c8bbb,2024-10-25T23:37:53Z,08c5b69026a6405d8b7f684cc295d75c09c1caaa8b339019dda35daa29db11ba,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.2,0418c10ec37fa374867eae49f2f776c72c55d623,2024-10-25T23:36:51Z,8bd9f9a7f4580258b69dc6e4408ea300adc375c652ed519c5a51783aac200793,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3.1,c487c0ea418315edd4a8614854e82c5359f4b8f8,2024-10-25T23:34:37Z,d8b7c21118650c8f2703b09b4af92ced093e497e54e876e77c0ca66f75a91605,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.3,5400ccf243a31d664153a4b9ceb9de3edfce1e0e,2024-10-25T23:28:52Z,92a0ff47f7358c3d54dd2662f31209fcd429e625662891c34f995ae4f5046dcb,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.2.3,07cf1c5caab19852ccf85ae7000d788913f3411d,2024-10-25T23:29:00Z,73663617ee99d142ade4fb1f22148542d1c2cc81d34cb4dc9ca3a6df0fd6934b,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.2.2,8adae7eebbc791433d5f0f58daab558a8fbe847d,2024-10-25T23:26:48Z,e4f1f0d8e822e2c65ea10d187b1123d421583db7c58a8ca75159d4387274b294,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.2.1,43361e793b63d57570a5a46da4a5cb4a1c3563c5,2024-10-25T23:24:37Z,0ea3e0bf2e0e4b392cf5673df947087c9be8383c9a6bee33ce371529737c7e23,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.2,d6eb1c53d688a242bfb5e3b4febcea66c49c0fe7,2024-10-25T23:22:03Z,adb12459803d0eb2c7033af4a1262a788ef7d00a43bf3be83cb25d7ab3a63370,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.1.2.1,7dc04c755eef47b34f5763dcfc8d16913c1b7a08,2024-10-25T23:21:03Z,67fe4b03b2d2539397df718c2d0161012fa4c6586e342021d6d47c04574551d5,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.1.2,38ad8e28421c745c06ef9bd55f6e6204cd1f15ef,2024-10-25T23:16:01Z,4a1705e5976b51e24159dc7cd06d25d58aa0dbe343e30119c6211a26edf825d1,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.1.1,be6f05d34736fadf37328058f00e788cb88da61b,2024-10-25T23:16:23Z,62640b84c7a211c3d66919dd21505e42c9cc6fbf2deaafc71b1d7afbdba0a851,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.1,6efb5e31df6bc512ed6c466584ef15b846dcecab,2024-10-25T23:14:41Z,121b4ff6f86788cffb889836602f148dcb71ff60104cee838d5b953e2ddfc864,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.0.4,c028b855ee3f12c835ff3538a90ac5dbc155631b,2024-10-25T23:10:57Z,bedcacf4cddf158f68c6972a86be6fe1362957741738c53f37ba77d5902abed1,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.0.3,89c04fb1836fb865565125a4d5880b93e784d856,2024-10-25T23:09:39Z,fc5e45caad51eb4b684eef752ea8eb96385de1d826b4551e07f8e0b03df2c87b,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.0.2,ac0c9879c68b23278178a7afe738285b33ff1832,2024-10-25T23:04:51Z,cdec63b483271cff74566977f346271ce3cc3508599de150d427a2e97e67fe4b,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.0.1,cf18f250a40f33cc648d869eac833cd9aee86ed6,2024-10-25T23:05:17Z,04f463cee1e252480916f221556e72bf1b1d03df45d58c6d09afd9adefd6699d,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.0-rc3,47f121af8ee55a0dbe2a8c9ab85031ba052bad6b,2024-10-25T22:57:47Z,d287456c7bf237c5884d07445cfca277eb541e2fbae49d0d3b70946ba8132e59,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.0-rc2,85d0a8366e64f8272e332a63a2cba59afa3f7eb9,2024-10-25T22:57:08Z,949bad8c339694cbf4e4f6a84a3dd36914718e37358e257705512ea7e6605c44,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.0-rc1,3c68ceea1f93119bed871866c690fbf5a95048c1,2024-10-25T23:04:36Z,9a39912e8fb6c12f9bc7e589be7cc176667d3b8a9c48c525a83e069f1ef18b1b,openssl-1.1.1w,wxwidgets-3.2.6
OTP-25.0,4ed7957623e5ccbd420a09a506bd6bc9930fe93c,2024-10-25T22:09:27Z,a6d318a64dc1593b6bea301a799352229b904ac6ff18a1c1fcaec97f7718f83d,openssl-1.1.1w,wxwidgets-3.2.6
1 ref_name ref datetime sha256 openssl wxwidgets
2 master 09e092774c00416bb1635880ef210d13aa99fe98 2025-05-25T00:21:50Z 5a405999f2332111d10d70699ec659d7766a34c4339c915fe75aca16324a68e6 openssl-3.1.6 wxwidgets-3.2.6
3 maint-27 c388a2d1b3f9918652276d4798692dd4d8ef97fc 2025-05-25T00:28:26Z c1c79695b4559eba35cc4df207b6b6063fa38bd2f67bbf1531f43dddfff171e1 openssl-3.1.6 wxwidgets-3.2.6
4 maint-26 7335f79eeaa0094c274dab2aa2ced9e138027c75 2025-05-25T00:24:18Z 74323d309a36c3cd21a7e4daa4989852c6077949d1ee5a4ab2403ddba5757234 openssl-3.1.6 wxwidgets-3.2.6
5 maint-25 52199ed7e79646b73bacc47c92967ce9970b2373 2025-05-25T00:22:01Z cc76a4f8a183c5b077a955a520b7ff12afe4063bcae74de26e9bdd71b5fb39a0 openssl-1.1.1w wxwidgets-3.2.6
6 maint c16299eb821718afd337db67f89c0fac56f79496 2025-05-25T00:19:44Z b345cb6ac07ba03469833927f4de4e3e44885e44996d7f3e3e30e9b4f6dce0dc openssl-3.1.6 wxwidgets-3.2.6
7 OTP-28.0-rc4 bdd4594181242f0d681b2e464b8bf12205fba30b 2025-05-05T18:58:38Z 584ee2ce5b63331ba57bf362fb20a6e28b7e0b26040ea9100d5ee7522a7148ce openssl-3.1.6 wxwidgets-3.2.6
8 OTP-28.0-rc3 cf38f1efc91853e384542ce105639226b7367ea2 2025-04-16T11:51:19Z bce2b8383898fb5386bfc14ca4462e509ed7f5a0466fe5d215fd8a2dfb2f5c64 openssl-3.1.6 wxwidgets-3.2.6
9 OTP-28.0-rc2 5ddf7a91568cdc29cb85f43640dbdb40fb3b3985 2025-03-19T09:16:11Z e1d04af4b57b921b0edbddf0595bbda3d89f50db67460a04ce77ede3bad1b90a openssl-3.1.6 wxwidgets-3.2.6
10 OTP-28.0-rc1 ba8f061732c41ad4bca7895e47acb5d26f54c032 2025-02-12T10:47:48Z 028793678f35df042a565fb17552717506bcfbbce6e7dc395ed9f896cb7eee62 openssl-3.1.6 wxwidgets-3.2.6
11 OTP-28.0 7a57568c13dedf4ab82ea2b881619788749bbdc5 2025-05-21T08:16:14Z 31a8a7deb607f936a24024a6b3ed278a2fd16af608687e1e2f91c9a6554b43f8 openssl-3.1.6 wxwidgets-3.2.6
12 OTP-27.3.4 fe31f32661e4e90ae4a1bb32551d2937f7c4e12a 2025-05-08T13:53:15Z 2d63ddb0d51d2964e9d5f01bb2a54c43ec4840cffb243f6a70d300628e891b99 openssl-3.1.6 wxwidgets-3.2.6
13 OTP-27.3.3 48a429f47c03e0fee574417345be90efec815abc 2025-04-16T14:24:16Z b923cfb68d483cd3de99f1c00944e36b5596a7239c77675e5d07ce675357109f openssl-3.1.6 wxwidgets-3.2.6
14 OTP-27.3.2 94c2583f43441ecd788e85ad00982b03e6b572f7 2025-04-04T08:53:14Z 7e6f744f0b92bcf36697db476988ecfd9be96840667667561496cfa631bae402 openssl-3.1.6 wxwidgets-3.2.6
15 OTP-27.3.1 901752e05d3ef678b22ecddb7379e8fe2a5facdd 2025-03-28T13:21:24Z a1b94b8ce7c151c59e309599bc2c290c824e4805b66b135f5ff2db261bb1eac0 openssl-3.1.6 wxwidgets-3.2.6
16 OTP-27.3 15637bf0ed9e2a5d015ae9260c0912e2de2d7108 2025-03-05T10:13:39Z f52be7289b13755ee20121a40e2a910f707fce3c2e4f1d358a525377da7789de openssl-3.1.6 wxwidgets-3.2.6
17 OTP-27.2.4 4df6b11359260d5e01161a651a35c7391021a218 2025-02-20T15:13:30Z 7797d076b5e0d8df7f36fcb73b3d88898da8ab98d801441fb78a06bf609db6ac openssl-3.1.6 wxwidgets-3.2.6
18 OTP-27.2.3 7eb2efcf82912f24e3d8ccf4854b42f28b5955bd 2025-02-17T17:14:28Z bd7f58deb6c97cd75fe63f9d36395d1675aec4ca0914f8f0f389fd7f0d2286d1 openssl-3.1.6 wxwidgets-3.2.6
19 OTP-27.2.2 d7f17f87b48465e4a3ff8d427df1551f91672d2f 2025-02-06T15:01:49Z ef44d779e4f8cfebdd59240a41b3ef4e99bd2e35ca84f219b7842d42f1ec0721 openssl-3.1.6 wxwidgets-3.2.6
20 OTP-27.2.1 c5725e0f7397b4c1296190bd96ac0fa50b850f20 2025-01-23T18:18:42Z 13151d5f3f07efa4b30c9bd824b34d7d85f289bf28baf633e504d5eb4f8177ae openssl-3.1.6 wxwidgets-3.2.6
21 OTP-27.2 46f2418451d1991d2060dc5b4d7d88f8259c9291 2024-12-11T10:22:06Z 91fd068ed9748b83f95b6e4a8c60e59562567a507cf6d4da8f8d44a88523ce54 openssl-3.1.6 wxwidgets-3.2.6
22 OTP-27.1.3 e8ab3f7fdc59da5dd4dc8ef8c1c7bcec22b52faa 2024-12-05T15:17:20Z ea878ed7d9c13c2aa44f6ea5af8321e1111967828577e5532d6ee04d92f7194c openssl-3.1.6 wxwidgets-3.2.6
23 OTP-27.1.2 1926819171af845832795d87bf1be0220710852b 2024-10-28T13:12:50Z 7a634452ab85a23d210ef482c89af7e7e8448e063a1ccaf92e815daf52b1a135 openssl-3.1.6 wxwidgets-3.2.6
24 OTP-27.1.1 67ded430d9be65e2e6c11bba323c0eb62d07cd1f 2024-10-28T13:12:16Z 36790419f0f30260174474d2bda9a3a8e269b0f3ebc6d873af03a3da93243565 openssl-3.1.6 wxwidgets-3.2.6
25 OTP-27.1 9ae2ef54fc6dacb5bfbe2dc6fc6f2522d57ce1fb 2024-10-26T01:31:19Z 99601924bf4b9656e4ecaff9936d4a3c15761b69a64cec24a8b89f6cb4f0e4c7 openssl-3.1.6 wxwidgets-3.2.6
26 OTP-27.0.1 ee9628e7ed09ef02e767994a6da5b7a225316aaa 2024-10-26T01:24:32Z f95748869c9206d394369932532ca2c23a6d21447607c6705cea4d5ab28c921d openssl-3.1.6 wxwidgets-3.2.6
27 OTP-27.0-rc3 5df3992d695da4d7e8777cf7605279ce9d131f1c 2024-10-26T01:20:53Z b8cdb3aba95f10ca0b2c61a0a6e2383dfc1d9cee49ac77d1955f6f0e5e80e58a openssl-3.1.6 wxwidgets-3.2.6
28 OTP-27.0-rc2 e651174c569694c92b1794ddd0a1a4a199610091 2024-10-26T01:23:23Z 4e0351fcac3399a217fddf6af30db45377ffbba1fe59c5d3e7dc6d364c077aec openssl-3.1.6 wxwidgets-3.2.6
29 OTP-27.0-rc1 b74bd21d5cb52e0fdc5ea321439c428783feea23 2024-10-26T01:13:02Z cf0b249e72a1ec1db93c4d081bdf20309383a0ab47971f392484323ab58b62af openssl-3.1.6 wxwidgets-3.2.6
30 OTP-27.0 f1c72ea22f0d0479807fbe543191f7a1ef325838 2024-10-29T19:30:52Z 41b4ad3e7081151c10b964d1b63982704d6a840da8a525bda0423f42028d180c openssl-3.1.6 wxwidgets-3.2.6
31 OTP-26.2.5.9 f900850abbd2c45b618675d1342ac85492ed1c5d 2025-02-20T16:14:22Z 2f1cba5d0a752edab7f4394bc361854b69cd89fe71f06acfc9e42b82b9a42324 openssl-3.1.6 wxwidgets-3.2.6
32 OTP-26.2.5.8 45fd6b3adb81f0b245d9baf4dcbdde049221fbff 2025-02-12T14:13:26Z 21d6aa90527a2fa16a47a73ad739925c6d8811d47d530a81a987cb53f2def3bb openssl-3.1.6 wxwidgets-3.2.6
33 OTP-26.2.5.7 fa62351cef47e7dc502c5d0b1348ef8988b5d7b8 2025-01-27T12:57:08Z c204588b446faf19c189ca536803b818c5b8b46c529a3b0b7df67a11d92b8412 openssl-3.1.6 wxwidgets-3.2.6
34 OTP-26.2.5.6 1f4a3b013b1df4034d6fb63623e77bfb142cadda 2024-12-05T14:50:08Z db9635c0b1d6d79dc0a66bdf7b64c41a1323b8790551a6df3ddb659f3deb1d38 openssl-3.1.6 wxwidgets-3.2.6
35 OTP-26.2.5.5 81399ff534e71be2425a0cae96e26c104fcde2f3 2024-11-01T07:16:35Z fc58d3d471a552451e6682df652fe989d5be639e9179e3d6b44deb78d4867501 openssl-3.1.6 wxwidgets-3.2.6
36 OTP-26.2.5.4 b6e7e233d0b781728e745dc04f4cb2645c6632ec 2024-10-26T01:07:55Z bd3f246ddd8448c1cb877dd9d9137ab7e77f9700608b4c0f68968a81f13fbb04 openssl-3.1.6 wxwidgets-3.2.6
37 OTP-26.2.5.3 84152c2c9d85128d3cce471f645f154c34132d82 2024-10-26T00:58:33Z 941970ed37bb76d690e03355b7d4e6770af076d89b62f542ac140efafdb7a179 openssl-3.1.6 wxwidgets-3.2.6
38 OTP-26.2.5.2 c1805ad6200cec57bf86640fb9a1c715db515b78 2024-10-26T00:55:50Z 628bcc158e5662004135241e7ab3e71146860c9fc5d1f86829061da38119144a openssl-3.1.6 wxwidgets-3.2.6
39 OTP-26.2.5.12 a2f903599fe779380ec197c8ab41a193eec2d148 2025-05-08T15:46:20Z 6cd58a09426aff768fb0117b27e60cd2b671c1336424aada0d48e47e26d4449f openssl-3.1.6 wxwidgets-3.2.6
40 OTP-26.2.5.11 c2fcd5185c0651630196b6997be848a344c4aa71 2025-04-16T14:47:54Z dec9c637e619dbd9add023c50a5ba0b23a30657d543417d7ff0d9033abdbbebe openssl-3.1.6 wxwidgets-3.2.6
41 OTP-26.2.5.10 eaa1b25cd65de117e82a4fbf709cb5cf6836f5ff 2025-03-28T14:48:04Z aa5a5759222e4eec003f5aae0f2804e2e487da4c81feaed7305c3a9e87fcdbfd openssl-3.1.6 wxwidgets-3.2.6
42 OTP-26.2.5.1 858efd5b35b572c71a8010ad323c4127eef5bc29 2024-10-26T00:51:06Z 587a9b9f7d5178895194691fdb57fab4d9b819cba644129381a73944eadbc821 openssl-3.1.6 wxwidgets-3.2.6
43 OTP-26.2.5 412bff5196fc0ab88a61fe37ca30e5226fc7872d 2024-10-26T00:49:32Z 8eb273cf5c459829cca28a8caada5b0e289f43c126b0718fa85888731dccf7d4 openssl-3.1.6 wxwidgets-3.2.6
44 OTP-26.2.4 e26c5206dc98ec1b8f978fceaa61fd1354266ccb 2024-10-26T00:43:46Z ed9a515471bcf07ce392b0d3837f001b555f55d670f07f32cdd6c5ce510d78fb openssl-3.1.6 wxwidgets-3.2.6
45 OTP-26.2.3 928d03e6da416208fce7b9a7dbbfbb4f25d26c37 2024-10-26T00:44:24Z 92ec2364d9948b4885714aca32a1beb1115c753cf0a2b19b03012bc1805fe556 openssl-3.1.6 wxwidgets-3.2.6
46 OTP-26.2.2 b83df13eec5446beab06dd24315d37a5b0633fd2 2024-10-26T00:39:35Z e23a011e026687b66a25da9a1f6bcc4da94494c5de1eba6440b5b25b6f00ddb8 openssl-3.1.6 wxwidgets-3.2.6
47 OTP-26.2.1 ca8b893f9d5bdd0957b78514ba523032e762c644 2024-10-26T00:33:26Z 459bbf4efe65a4575bd16b26ab7d69d39327433233a712ebbe1dccd531fcf87c openssl-3.1.6 wxwidgets-3.2.6
48 OTP-26.2 7fc0898502cb3370b7c6d523a7393cd101808493 2024-10-26T00:33:56Z 6b9760085de085f3a12d20935f338fc99ee67fd35d2e62a7e3e9cffb9b21242c openssl-3.1.6 wxwidgets-3.2.6
49 OTP-26.1.2 c41d424db42ba84b72f3e25167470c3555723d87 2024-10-26T00:33:32Z 82ba154649c17be8ff45268239d36e4d34e82a520ee57a49b9b337e3fa77d69d openssl-3.1.6 wxwidgets-3.2.6
50 OTP-26.1.1 2bdd30b872ab91dc376998d2c417f2a8b514d1aa 2024-10-26T00:28:08Z d5ce0b59d827c751ab2f68e5e7f1757dabee399040eaedcfba491c8c79c66cc3 openssl-3.1.6 wxwidgets-3.2.6
51 OTP-26.1 e962af35263618665c1df57df5135c0c703ad502 2024-10-26T00:26:33Z 236ea16e738e5c57deae3ff424ede7944ffce14fac8b939a18ba2ccad85e4d81 openssl-3.1.6 wxwidgets-3.2.6
52 OTP-26.0.2 d051172925a5c84b2f21850a188a533f885f201c 2024-10-26T00:25:48Z 8cb58daa3694229068f5a3f621c5508907a20593955abfd17185720505946764 openssl-3.1.6 wxwidgets-3.2.6
53 OTP-26.0.1 b54b86ad4f1253f46fd4552a73923756660c1d53 2024-10-26T00:19:22Z fb7d35f7838fd9422cdc215f2177953fa43bf72357628c59eefeb4c0852c5121 openssl-3.1.6 wxwidgets-3.2.6
54 OTP-26.0-rc3 1f897adc9df5e0de5d5a85633a8629a7e45ddeab 2024-10-26T00:16:30Z ff2a6fe3e3c6f7aa851604c0ff3163cfe3dbf9ed06d2f1a62f753a758d9d39bc openssl-3.1.6 wxwidgets-3.2.6
55 OTP-26.0-rc2 dac89a6acc1a93a615930ca18f1dbf4e9323b038 2024-10-26T00:15:34Z c9f23a971cde0b7bb25d0b82a18f55f958ac169d499593c17b3d0c5d847a4714 openssl-3.1.6 wxwidgets-3.2.6
56 OTP-26.0-rc1 127026003180a834e9fa5d5919c824a184faeb92 2024-10-26T00:12:17Z abf7d8ffafe4dafc39df96c062a0aad392f03c0abbe9a5d9f7a5b01189e48f9d openssl-3.1.6 wxwidgets-3.2.6
57 OTP-26.0 8c0ea6bd3306cfd6ca19730d180a2a93a716e1ee 2024-10-26T00:11:24Z 8952b4fb76ce8d1b95b2de8643ddf19ad84993563860b313382915b290ef2d97 openssl-3.1.6 wxwidgets-3.2.6
58 OTP-25.3.2.9 68fa9c42426380772784eed26d24747bfee38fcc 2024-10-26T00:08:03Z 5702fa82c48a9732a5f1196cb32b617c475851e3471fd2b6e7e719792dfc032a openssl-1.1.1w wxwidgets-3.2.6
59 OTP-25.3.2.8 c08f5acfb4e47933d8128d0b41b01487d0eb97a1 2024-10-26T00:06:15Z c6c1929c5408e9d6fc66c1b606e0926f362cd057db838b6013dac54b94cab39d openssl-1.1.1w wxwidgets-3.2.6
60 OTP-25.3.2.7 d3c9eeb17042e5567337e1f87c924b25186daae0 2024-10-26T00:04:48Z fe43af77747d7034204451ed630c4851d86c23432ce89d5f253505988656036a openssl-1.1.1w wxwidgets-3.2.6
61 OTP-25.3.2.6 fd0e27a5c1ca7afde30b10c1b33a35ebb3313fd1 2024-10-26T00:00:23Z 83bf16f30737ec14bf32a1acbfd86f65b89be2fa8b8bd4462c70c6c48d1e61b1 openssl-1.1.1w wxwidgets-3.2.6
62 OTP-25.3.2.5 5cb360d524a5777ed4243ac03a0162a95f545a16 2024-10-26T00:01:37Z ad254c611b29df084470bf3f757e619287b52c3145dced61a46aaa85bd58b36b openssl-1.1.1w wxwidgets-3.2.6
63 OTP-25.3.2.4 9e6d04dd18bef6136fc2b45cc60fe1348c4664a7 2024-10-25T23:56:58Z e1fd6458c109d6fc3f8ebca01b5d29a718d9612a7ffbac464ce870daf69cd6fa openssl-1.1.1w wxwidgets-3.2.6
64 OTP-25.3.2.3 da340fd39fc6550b1432662ffa55c3b6da3db41f 2024-10-25T23:55:04Z 3b40c8fbee2bab28e5d979994dce3dbb0761df348a21798b1c50467783781324 openssl-1.1.1w wxwidgets-3.2.6
65 OTP-25.3.2.21 eb0176f76725c1d6cc594ac3c899cf5340f6a4aa 2025-05-08T16:49:06Z 8aed83bc19798efd25e0a32fb1eb174904a2881b3d9a8039d86f7aff6375cdb1 openssl-1.1.1w wxwidgets-3.2.6
66 OTP-25.3.2.20 3d83272458f7b0fb05aed4981a15cfa72ef7d2ba 2025-04-16T15:09:30Z 7456c582f71f1f8448cd6d2349302985e4691bc24785f72495da7db9989c54f0 openssl-1.1.1w wxwidgets-3.2.6
67 OTP-25.3.2.2 ba144817d5478b15a50ef0c398d925232005277e 2024-10-25T23:54:34Z e7d36cab3aa0096c549f8e8fcd381fb3f4005dba698fc1f096dd9373b3862cd8 openssl-1.1.1w wxwidgets-3.2.6
68 OTP-25.3.2.19 2dc11e177ba8e5e051a2e88b731ec6de0eb8bb4c 2025-03-28T14:45:35Z 23b29d4fa18af2f0252b7d878316d492d114a0d3c2a97eed5e874601b36bddc7 openssl-1.1.1w wxwidgets-3.2.6
69 OTP-25.3.2.18 e1346297304a626ef9126f77e8b943d51646fe5a 2025-02-20T16:10:45Z adf16cfeab7e02003be2e13b23e37bc7952b45025e2400a008acab0e36c805db openssl-1.1.1w wxwidgets-3.2.6
70 OTP-25.3.2.17 90a7540d93530990531ec48a14594efea8974ca2 2025-02-12T15:11:54Z 6bd872e819aabdf2c07f81d6a0436f1a639c778440cf10be3dff783a88a9e4fc openssl-1.1.1w wxwidgets-3.2.6
71 OTP-25.3.2.16 b21c9ee6961e5b6aa1595d1f7547b349973ea833 2024-12-05T15:46:47Z 571677874adeeb77e585b0e732a13ccfe707497a6abfd45aa2c11df59ba4c46a openssl-1.1.1w wxwidgets-3.2.6
72 OTP-25.3.2.15 cd91473539f38e88d10cf9efce3551afa1dbdb45 2024-10-25T23:49:57Z 1f0d974438da48dbd15823a3e2753d5ca4a5aeccef49d7814af40393a3aff26f openssl-1.1.1w wxwidgets-3.2.6
73 OTP-25.3.2.14 412febbe2eb15958f92dd6f908b14cfcd2ff2c16 2024-10-25T23:49:51Z 9584a37799b64b3f095e36f000b0574ed5119ed8200899065da298b7e59aac32 openssl-1.1.1w wxwidgets-3.2.6
74 OTP-25.3.2.13 00c3a73a1a043f3ca76cc2cfd20ac5ccc1e3377a 2024-10-25T23:44:27Z eed02812b0104e5fa530bc2a932266fe5102412ced43efcbd7ce2ed9962c4017 openssl-1.1.1w wxwidgets-3.2.6
75 OTP-25.3.2.12 cee6d023f30d5cedb4eaa2b1384b49597a9bde66 2024-10-25T23:43:41Z c033ffd03966263de25794a1768813a0434c77e575b546a0b087fd587d5b63fa openssl-1.1.1w wxwidgets-3.2.6
76 OTP-25.3.2.11 e1e117f0e95cb373f9bd5e159e54e6ffae1bb32b 2024-10-25T23:42:59Z 5dbcce0b562c03c273c29acb92e56d0d8a1fd25da15a665ffc3f621d8abdf94a openssl-1.1.1w wxwidgets-3.2.6
77 OTP-25.3.2.10 733439dc03b21ea92c096b6cc31befc133cd9081 2024-10-25T23:40:26Z ec0305a15e69fa9aa669fc2c95b34ded49597e77be84121da7bba104ac92f06c openssl-1.1.1w wxwidgets-3.2.6
78 OTP-25.3.2.1 3f0a5f136aa72f785ca86df64c4384db2e9c8bbb 2024-10-25T23:37:53Z 08c5b69026a6405d8b7f684cc295d75c09c1caaa8b339019dda35daa29db11ba openssl-1.1.1w wxwidgets-3.2.6
79 OTP-25.3.2 0418c10ec37fa374867eae49f2f776c72c55d623 2024-10-25T23:36:51Z 8bd9f9a7f4580258b69dc6e4408ea300adc375c652ed519c5a51783aac200793 openssl-1.1.1w wxwidgets-3.2.6
80 OTP-25.3.1 c487c0ea418315edd4a8614854e82c5359f4b8f8 2024-10-25T23:34:37Z d8b7c21118650c8f2703b09b4af92ced093e497e54e876e77c0ca66f75a91605 openssl-1.1.1w wxwidgets-3.2.6
81 OTP-25.3 5400ccf243a31d664153a4b9ceb9de3edfce1e0e 2024-10-25T23:28:52Z 92a0ff47f7358c3d54dd2662f31209fcd429e625662891c34f995ae4f5046dcb openssl-1.1.1w wxwidgets-3.2.6
82 OTP-25.2.3 07cf1c5caab19852ccf85ae7000d788913f3411d 2024-10-25T23:29:00Z 73663617ee99d142ade4fb1f22148542d1c2cc81d34cb4dc9ca3a6df0fd6934b openssl-1.1.1w wxwidgets-3.2.6
83 OTP-25.2.2 8adae7eebbc791433d5f0f58daab558a8fbe847d 2024-10-25T23:26:48Z e4f1f0d8e822e2c65ea10d187b1123d421583db7c58a8ca75159d4387274b294 openssl-1.1.1w wxwidgets-3.2.6
84 OTP-25.2.1 43361e793b63d57570a5a46da4a5cb4a1c3563c5 2024-10-25T23:24:37Z 0ea3e0bf2e0e4b392cf5673df947087c9be8383c9a6bee33ce371529737c7e23 openssl-1.1.1w wxwidgets-3.2.6
85 OTP-25.2 d6eb1c53d688a242bfb5e3b4febcea66c49c0fe7 2024-10-25T23:22:03Z adb12459803d0eb2c7033af4a1262a788ef7d00a43bf3be83cb25d7ab3a63370 openssl-1.1.1w wxwidgets-3.2.6
86 OTP-25.1.2.1 7dc04c755eef47b34f5763dcfc8d16913c1b7a08 2024-10-25T23:21:03Z 67fe4b03b2d2539397df718c2d0161012fa4c6586e342021d6d47c04574551d5 openssl-1.1.1w wxwidgets-3.2.6
87 OTP-25.1.2 38ad8e28421c745c06ef9bd55f6e6204cd1f15ef 2024-10-25T23:16:01Z 4a1705e5976b51e24159dc7cd06d25d58aa0dbe343e30119c6211a26edf825d1 openssl-1.1.1w wxwidgets-3.2.6
88 OTP-25.1.1 be6f05d34736fadf37328058f00e788cb88da61b 2024-10-25T23:16:23Z 62640b84c7a211c3d66919dd21505e42c9cc6fbf2deaafc71b1d7afbdba0a851 openssl-1.1.1w wxwidgets-3.2.6
89 OTP-25.1 6efb5e31df6bc512ed6c466584ef15b846dcecab 2024-10-25T23:14:41Z 121b4ff6f86788cffb889836602f148dcb71ff60104cee838d5b953e2ddfc864 openssl-1.1.1w wxwidgets-3.2.6
90 OTP-25.0.4 c028b855ee3f12c835ff3538a90ac5dbc155631b 2024-10-25T23:10:57Z bedcacf4cddf158f68c6972a86be6fe1362957741738c53f37ba77d5902abed1 openssl-1.1.1w wxwidgets-3.2.6
91 OTP-25.0.3 89c04fb1836fb865565125a4d5880b93e784d856 2024-10-25T23:09:39Z fc5e45caad51eb4b684eef752ea8eb96385de1d826b4551e07f8e0b03df2c87b openssl-1.1.1w wxwidgets-3.2.6
92 OTP-25.0.2 ac0c9879c68b23278178a7afe738285b33ff1832 2024-10-25T23:04:51Z cdec63b483271cff74566977f346271ce3cc3508599de150d427a2e97e67fe4b openssl-1.1.1w wxwidgets-3.2.6
93 OTP-25.0.1 cf18f250a40f33cc648d869eac833cd9aee86ed6 2024-10-25T23:05:17Z 04f463cee1e252480916f221556e72bf1b1d03df45d58c6d09afd9adefd6699d openssl-1.1.1w wxwidgets-3.2.6
94 OTP-25.0-rc3 47f121af8ee55a0dbe2a8c9ab85031ba052bad6b 2024-10-25T22:57:47Z d287456c7bf237c5884d07445cfca277eb541e2fbae49d0d3b70946ba8132e59 openssl-1.1.1w wxwidgets-3.2.6
95 OTP-25.0-rc2 85d0a8366e64f8272e332a63a2cba59afa3f7eb9 2024-10-25T22:57:08Z 949bad8c339694cbf4e4f6a84a3dd36914718e37358e257705512ea7e6605c44 openssl-1.1.1w wxwidgets-3.2.6
96 OTP-25.0-rc1 3c68ceea1f93119bed871866c690fbf5a95048c1 2024-10-25T23:04:36Z 9a39912e8fb6c12f9bc7e589be7cc176667d3b8a9c48c525a83e069f1ef18b1b openssl-1.1.1w wxwidgets-3.2.6
97 OTP-25.0 4ed7957623e5ccbd420a09a506bd6bc9930fe93c 2024-10-25T22:09:27Z a6d318a64dc1593b6bea301a799352229b904ac6ff18a1c1fcaec97f7718f83d openssl-1.1.1w wxwidgets-3.2.6
+99
View File
@@ -0,0 +1,99 @@
OTP-26.0 8c0ea6bd3306cfd6ca19730d180a2a93a716e1ee 2026-04-24T21:11:44Z 9210a9e4b3f12cf32dd2f42857dc980e2776d52505c0c34858ef6d50a186dd22
OTP-26.0.1 b54b86ad4f1253f46fd4552a73923756660c1d53 2026-04-24T21:10:25Z f1c399db68ea5885434201dd48313bebdccf2222e68268b09214dd3401400faa
OTP-26.0.2 d051172925a5c84b2f21850a188a533f885f201c 2026-04-24T21:08:41Z d0260e2f76ddfffa46dfd5090cfb6464eed2aa3f09dfb032b01cd2882a760e10
OTP-26.1 e962af35263618665c1df57df5135c0c703ad502 2026-04-24T20:58:59Z 623ea1623afbb19feeb257fdc92d17a82a35a8ecea32925c0c89a2a6d3dd9853
OTP-26.1.1 2bdd30b872ab91dc376998d2c417f2a8b514d1aa 2026-04-24T20:42:54Z 68eb1802931e87c70c9ea8bcc6de68062785cd6c67abc0696f2e07803403f12c
OTP-26.1.2 c41d424db42ba84b72f3e25167470c3555723d87 2026-04-24T20:41:58Z 6851172f8d6bbeed99e9aeb73dc0e8df4cdfb69ec4275ccfbd6c85d402786608
OTP-26.2 7fc0898502cb3370b7c6d523a7393cd101808493 2026-04-24T20:40:23Z 8c0f14ec76b26ca0a8bc7fe1d536b3edc7513ab48096d5c09452953140a01f61
OTP-26.2.1 ca8b893f9d5bdd0957b78514ba523032e762c644 2026-04-24T20:29:53Z 7569ff704e74b681825dd14577ec4784a43822da84e2590fc93d13160cd71716
OTP-26.2.2 b83df13eec5446beab06dd24315d37a5b0633fd2 2026-04-24T20:13:25Z 85c443095df61087f288601af92af7c07f7190570a4aa55eee9114a2d00ccf2b
OTP-26.2.3 928d03e6da416208fce7b9a7dbbfbb4f25d26c37 2026-04-24T20:12:42Z 067b97c62cc5bc4753dedc7e63f1b6503bc02e89d67eda49c1c23ba9e54beaa4
OTP-26.2.4 e26c5206dc98ec1b8f978fceaa61fd1354266ccb 2026-04-24T20:11:19Z f6a83da7f5fab9285d1c3e5731dcd65b6a93a5f7285fe4ef08e9c2347d241b30
OTP-26.2.5 412bff5196fc0ab88a61fe37ca30e5226fc7872d 2026-04-24T20:00:51Z 53ab42240cbacaa9e33682527abf7991cde3653401a2216f0f83e26cb50a9f8b
OTP-26.2.5.1 858efd5b35b572c71a8010ad323c4127eef5bc29 2026-04-24T19:43:57Z 833b9a2e7955e3d09d872ba821fa8eb1fbad55e63ef119209e93bd445d82f90d
OTP-26.2.5.10 f607645b971572b03f9f45551b1804f41fac8fa7 2026-04-24T18:43:56Z c0023d40d000daddd979b494172c0ba51c33857082e598d962448ed3c617f568
OTP-26.2.5.11 9f6c4eb54823324d1e6f8cb95c15feb09f09044e 2026-04-24T18:43:17Z 500f8aa1a0784c17715e6bcc10ea9761cc56ad196c335e4c90909e0e4a05c075
OTP-26.2.5.12 7335f79eeaa0094c274dab2aa2ced9e138027c75 2026-04-24T18:31:47Z 1c6deef6d752ed7b838820b973be5078f2f110daa9208c9a29a59709787126da
OTP-26.2.5.13 0ac548b57c0491196c27e39518b5f6acf9326c1e 2026-04-24T18:14:48Z 325b0c25d2981d064edce1188c7583e02f89b366a22571299461b62b323f6cea
OTP-26.2.5.14 c1ce39f1f7bafa253514a8fa646dc00112b066bb 2026-04-24T18:14:10Z 0aa90ffab8371e2f32114564254eb2c706aefa6163107739301e7373db4a3dc0
OTP-26.2.5.15 4d9b61940e8d4dd00059306983022e3114fdf245 2026-04-24T18:13:42Z b25e8597f9e9fa21c7ccdcea268370ef0eec3897be46975cb128c34072d3ddb9
OTP-26.2.5.16 ce72bbc20a4236d69ac716624ccb799921ac5903 2026-04-24T18:02:15Z 84b96e04576832cbebcc98bae783152efb290d09913de160ab926b00a0e0dc9e
OTP-26.2.5.17 3532818e19647ae5675396eb501400783e5ca693 2026-04-24T17:45:04Z 15b674046eefa090491609f151f9d7f9c3eb355d38bbd4bf34108f09c373cae2
OTP-26.2.5.18 8c304e09e4d9301f56f6d7b2c4c9f60b4f9d9425 2026-04-24T17:44:16Z 795ca3e87bda7564182f9f5a9c1450c00f719d64e26ce5e2dca905ecb83e5437
OTP-26.2.5.19 cdb375af6b456946b1ff3fc993d122018f20b031 2026-04-24T17:43:44Z 33603c379bef7f41a459bfea2c308d885f38118fc67430fd1745fbd22a3b72b7
OTP-26.2.5.2 c1805ad6200cec57bf86640fb9a1c715db515b78 2026-04-24T19:43:13Z 18d7bafd68d9030144632674e2d2c08285d6c5ce3ae210af4e8642f83d8f5e37
OTP-26.2.5.20 e5d6d95c9aac559b59b78c66eb558ee54bd4e006 2026-04-24T17:33:05Z f11bea66d601ff23affb32158d18b209e6e475a063706572c3be835e6edd9fdc
OTP-26.2.5.21 c9ce879f4ca194adc5393f52b2c4cd57b3c3d89d 2026-05-31T16:45:05Z 98897de6d71ef8c5542c822598a538f3269a32c56d819fdb69858fbe7329e403
OTP-26.2.5.3 84152c2c9d85128d3cce471f645f154c34132d82 2026-04-24T19:42:01Z ea3e17728b77b1cd7c7386e0fe5fe927f26f772e595930f09bc70abde6365115
OTP-26.2.5.4 b6e7e233d0b781728e745dc04f4cb2645c6632ec 2026-04-24T19:31:30Z 753f5b0fcb908fa0b7a1e00234feea24ae71e5ed9f73284b501ae089f202ce59
OTP-26.2.5.5 57f154f5ceb592ffa5360f7e338577fa04aa0d5f 2026-04-24T19:14:05Z 6e16453c2e32f7c8e81f26a0aa7ba6bd2cbeeaaebe8c174518cce813d4938931
OTP-26.2.5.6 51548614b588c667a4230c17e2b187474dd70d63 2026-04-24T19:13:25Z 1867dc3687b07bac702247c02cd8284d0b5175ebf0aa3b069f86394cbdfabc4a
OTP-26.2.5.7 3b059b6caf4e087c8c207ae7012bb50736fdf18c 2026-04-24T19:12:19Z 6259f7e5dcfe4fa0808ae09a06d43492c8b8f21215ca07a1e510ed4e01e2859c
OTP-26.2.5.8 a7a875106c7af7f094b04a765e93dd90522ef7da 2026-04-24T19:01:05Z 2f5c1866af6bab64e4c49c05536e0acd687545809368c0bc7859af7c90477d0d
OTP-26.2.5.9 a2da0bad3f2d49dc1878f46f2d2961144ae0e0cb 2026-04-24T18:44:30Z 600704ad8c34abf66cda2e013ce4e386c8439d63b4c4d1522b74286a5ceea7b0
OTP-27.0 601a012837ea0a5c8095bf24223132824177124d 2026-04-24T17:05:00Z 98ad5cbd4a74cee15697b8cf973afd6c39264d104206aab6bc4864cad97c37cd
OTP-27.0-rc1 b74bd21d5cb52e0fdc5ea321439c428783feea23 2026-04-24T17:15:43Z 587a51911d99d2696c020a9dd73fedd37172c955a3c3b5e700614a601df35f43
OTP-27.0-rc2 e651174c569694c92b1794ddd0a1a4a199610091 2026-04-24T17:14:33Z 5c8928cd68e1c86b65a7f771201d0135aa2616ea28aecd9fba03b5e4ccc7ae4f
OTP-27.0-rc3 5df3992d695da4d7e8777cf7605279ce9d131f1c 2026-04-24T17:14:17Z 62604f6c2a4345f452f82122aee67afd5d366c4a04cb9aa52cd3ad18ce5b32ea
OTP-27.0.1 ee9628e7ed09ef02e767994a6da5b7a225316aaa 2026-04-24T17:02:00Z a854f39d318ba6133c41ba9275b2d1613e85bc8446086998dd927c7ff8d22fa9
OTP-27.1 9ae2ef54fc6dacb5bfbe2dc6fc6f2522d57ce1fb 2026-04-24T17:00:08Z 80df8276b9d03827cab3b9989d08acf6f98dc65f025deae0554de377f3472618
OTP-27.1.1 f4d130fd3512875ee95ce05b30f77e7c7689915f 2026-04-24T17:00:04Z b6a9963e6c02e5cf6338248ef20328c0a6974f8ecfc3ecc606656bead6567451
OTP-27.1.2 44ffe8811dfcf3d2fe04d530c6e8fac5ca384e02 2026-04-24T16:51:20Z 6a7ebd11ebc4998c658eb1738c4f91ae262809814dc22705d5a2e19118935ae2
OTP-27.1.3 800613cca84970750658b294ddd7977843b3bc5d 2026-04-24T16:47:44Z 50ed511fb2a63cecdbaff83377119e63a93b8ae4276322fadf5204a112696920
OTP-27.2 6bf99d64a0df3feceb25c166c3a3cb3f80594f59 2026-04-24T16:45:54Z b44c23696d0e97d440a0565f9a8c8438c44908efa008e7642bfd7402390a0b12
OTP-27.2.1 4726e39654c7a7412f7c2f66c7eb567c978a9947 2026-04-24T16:45:47Z 38282ac000f0278d99cbe379b4f7f67e3ddda96e2be3eea5cce2b7e3eac34c6d
OTP-27.2.2 8a4e04e9c48d94ef1216b0426fa71ccfdd78f7d3 2026-04-24T16:37:48Z 1935890b96e104a4545b50ba3184c74a7820438425966ea6637ca6777f981804
OTP-27.2.3 b6ab3a385ec72e346a44807d53e2109a51cde613 2026-04-24T16:34:00Z bde8c6311cc8242481dad5f1e3f33c920a1be71885fa8e779d9a006fb8cc0764
OTP-27.2.4 fc23816894479e0da3a22faaf90c16db3071ade5 2026-04-24T16:31:37Z a560882f429d425c2acc96c634b8ae05eb7b317beca0981e2b8f6ae1a324cb79
OTP-27.3 05737d130706c7189a8e6750d9c2252d2cc7987e 2026-04-24T16:31:34Z 8375d270d91a93fb00c4bb472fe3865575b76d7b602c373080c8c7e345d19734
OTP-27.3.1 76266a91989378ce53159eee4bd16773e248f5f3 2026-04-24T16:24:17Z ef2a695e00f6fb661d59592448574a9e44e763252d957a48afeaeabf966adf78
OTP-27.3.2 7b8942ef7b540bbd1393999e56d0e96b6ab3c276 2026-04-24T16:20:13Z c3c94d3abeea1438abf957bc2b707b1cefdef6b6e3f807440be7eb961d74dde5
OTP-27.3.3 10e20b1dbe39b056fab430e50b08cb4f3696ae87 2026-04-24T21:22:04Z bce0743ff5eac77d07217f8c2e624b703c44c2e83d987f3202f7bb9e69348dfa
OTP-27.3.4 c388a2d1b3f9918652276d4798692dd4d8ef97fc 2026-04-24T16:17:08Z e3325746961fb1280848038ff06c4cfc2b903cf793f9113303aaf8e43f6e2c7e
OTP-27.3.4.1 9b7b5431260e05a16eec3ecd530a232d0995d932 2026-04-24T16:03:35Z 40475e473e5d9e45edce59ec13442ee43062ad8a0380280253d10312623df9c1
OTP-27.3.4.10 0aa261a7765c9698aabc7f7c5be878a8850a9c5f 2026-04-24T15:30:13Z c8d7b7d8a0a0a338304b6919bb1b4934bf553fcf8bf7a7e5719634f4077492d0
OTP-27.3.4.11 c0ce26bb20ab5fcd6e214fa285aec5a409772e61 2026-04-24T15:30:00Z ebccce035c0b3d890f72ae6868a7bbbbc8530147158df206bff12a448793cc16
OTP-27.3.4.12 a2394acad3e3b8fa74d40905cb79bac2ab68258a 2026-05-31T15:52:31Z 6ea6ce3c3195a5a8b190a1f96b8f2b78d9ec3383218e37ef68a7882c5531335b
OTP-27.3.4.13 f835a5a32aeeb70778c958b5c01a401973e8fbe2 2026-06-10T13:08:02Z 8f4feb43f4370f8d2e47ceaa572fdeb20c726b831c3eb4a4b3fdc241e9db9884
OTP-27.3.4.2 ccff5995c5adf4b5f54adee7ba1a5948053384f9 2026-04-24T16:10:44Z e14df30b6e0422f64b5ac4896c2d4957ec7a87e3c23bf3f1f1a4407e28a3e040
OTP-27.3.4.3 940ec0f6f0370ecf5cd93cae31fd91f4651ddca6 2026-04-24T16:04:51Z d2f8046e4be2f4be98af4eeb584fb17affe9421e1a4a0b7d7ae938f20253abb7
OTP-27.3.4.4 3a2e1c435fe547a93b1a8c27c2554da72b49f16d 2026-04-24T16:07:12Z 371ec67c2ae4e389737c0d16a44288103407f075a6a4aef9afd02ba43eae6040
OTP-27.3.4.5 36239aebc3bc6b873da9ea519c41fb3befbc518d 2026-04-24T15:49:38Z aab9a6bac28cf7c1d3800f8201d02953753415119716ca6a80b103ffd9d22160
OTP-27.3.4.6 f1b17a1fb4d2bc74501608852547f8d9b504f7e3 2026-04-24T15:52:26Z a278a261c37fd3f32d8c04240e99d258103857d6af15fd7ad201c6aa0a1ffd1a
OTP-27.3.4.7 e56f9815d9f9389768afa2bc45c7233a7db838fd 2026-04-24T15:47:46Z c03da29e8eae9fe36c74976c13bd027f0eeea7713a7dd8c96bb823f1674b2131
OTP-27.3.4.8 61633c62611720cc27f92026d075a1f2862ce522 2026-04-24T15:50:33Z a8c645b6720463f4fea2d13e2c5f677a628c6fac6480d7588ae3d63d2dc8a0d6
OTP-27.3.4.9 4aa809ae4eb4a20ad89c23837376acf179877f39 2026-04-24T15:43:28Z 1d00d44c7ea910e6f828dffef1d386cc86c18f98e0260c72bfb23c54dc915e04
OTP-28.0 9e6f6742c4d9e9915ee8af0dcb7d97cf1f836116 2026-04-24T21:19:07Z b54d35fc7df5f9045694f7d855126effca8b5fc440df7b9ecd269a7eb0b37a98
OTP-28.0-rc1 74ed6b0ed20da257f11fc64399a1c8dd4f967fe7 2026-04-24T15:28:16Z 25591d8a6e3b97b8a8fa39e46015084b5fbab99a359be6fd28477f4ef4149cd8
OTP-28.0-rc2 b7c33191648c8b280c3bc8baf5434b125e88f0ef 2026-04-24T15:16:49Z 95cd0eb89ce5e27f1fe2a190d569e2cb875558ed8a3cecbe0a0045b33f5c993f
OTP-28.0-rc3 feae4e669818cb794a1755036c1b11f672634f8f 2026-04-24T15:16:46Z ba9e38b3d3299cd80a0a14770d3c167e0575a721638e2d68232443868aa0999e
OTP-28.0-rc4 56f63ad95cd71ee00b535e6db4e8be180baa6066 2026-04-24T15:15:45Z 016dc114bf08f7c7698c472603c47d70ef56d8cf147dd9d2f6b7aca6958e9fbf
OTP-28.0.1 d9454dbccbaaad4b8796095c8e653b71b066dfaf 2026-04-24T15:03:16Z 7329d39b4008ecb35769a2f8cb5f92832c465767d5bc8131caa7708fb00acbd1
OTP-28.0.2 d04f6a0b261cf23e316e48e2febe14b30c592dc5 2026-04-24T15:03:05Z bd8ed588c263d5f7f27371718265582cd9d87e04d8a3c72e87831601132d4420
OTP-28.0.3 756621cebe01ec43df61d9627380ca7e1e301c9b 2026-04-24T15:02:47Z 0ad74c4a455cad900aa56bde2c04dc4dfa46c0c0217afc440786f83547ba6df0
OTP-28.0.4 eec5ff40a2ae2c3b3c6d952709ba4f16a6769024 2026-04-24T14:47:33Z 19aa151e9e2a610fddc018066ffd7ec98162a8a021184f70a2771127e665ca58
OTP-28.1 34316363201de07437e14e79ef559fde7becb0ee 2026-04-24T14:47:30Z c9728fc7975d03e8a3299ed6e564c62dd9a2d130420f6066d1c2f179f01c390e
OTP-28.1.1 b2e2bc472deeb5deb6fcddf7406364e42f6c3d0a 2026-04-24T14:47:26Z 07514587f9187cc75abf7759310332e95a4b6ac9b2fa0e2de919f3b8bb9c1406
OTP-28.2 dff037f64e8eaa0a591866e967ee2b7164329376 2026-04-24T14:47:14Z b0cd18e0d5e09ba12e37cd5944ec8c6aceb0266583fb4209f144bcac4494ba44
OTP-28.3 ab489c0b260c637a9487f8753909ea94dacbbec2 2026-04-24T14:31:40Z 401b8ef30f50587488f884da7d1f61d67638d71cad4496fea2d196479124e9c5
OTP-28.3.1 aa5b1d3366762ff8f420f2aa6a52604b481530c9 2026-04-24T14:31:36Z 04e88c160c3b55eea59175798b52745e111ba36649cbc6d35f947e8e8b413a33
OTP-28.3.2 b74eae92e1dee97d57a9ab3ea3c36e8b701a9ca6 2026-04-24T14:31:29Z ea8be9b0a374602b080570eb0244720d643ecb54ff7611a9f3945c116087d2c6
OTP-28.3.3 dfd646eef0dd6b1f3674a7b6c7c7ff944939139b 2026-04-24T14:31:21Z 34b0dd70b1eb74b9de0ed82f69b6db664f6d90e603cfcfa3d3c060f65b7777bc
OTP-28.4 927bcc220b923ba1fef574618e82a3b7a2a4471d 2026-04-24T14:16:07Z 257e53beb1143154a80a7c2454261d6abd824b09629d79b99eb4588804247557
OTP-28.4.1 c8fca7e34e4db5d977ccf292cc2490ddb05b5879 2026-04-24T14:15:55Z 73eba3639b9873c267b7f4df62078d6f22b146882fd6d5241dbab3be9e0b616c
OTP-28.4.2 002fa5032baa0f6a8c4587c81f60e3273775a4d1 2026-04-24T14:15:52Z 1e25cfb65127e2e94913482a2486d38b5ce44c59b1c2858689df9de31a5ddcbd
OTP-28.4.3 359d91e66ffdede8f7855565087d324581c28f2e 2026-04-24T14:15:47Z 81d53e2ec4230b521b2f66ac64458e66cd634b2f205ee59e72ea54733644f0d0
OTP-28.5 f4506ee46d68694a1d23ca81c314092fd83e8f85 2026-04-24T14:00:14Z 6deadb6b6252376aaac89e5c837c72ec24c44bf3025856ade71d3c14afe66014
OTP-28.5.0.1 5770157eabdd4e8b0b83d64fd8b207c0150c2b64 2026-05-31T15:14:41Z 9fa866ad9abea5807b77919c27be3bbbe3806b4998abf6350d06e42068e290ec
OTP-28.5.0.2 4567096bddd1ecddb7c973019ca7e769f486aa8f 2026-06-10T10:54:11Z 01b02af31fb20937b146cf68a2a3ee5b129c45be5f74e65b101058d5650c1dc8
OTP-29.0 550d7b7898706c7822362c42e7b93120c1d1f29a 2026-05-13T09:41:44Z d20385dfafb49ef36303858c7577de8d8931102b6482fcbbdd83991638c122bd
OTP-29.0-rc1 04f1ebb18053d48f18e2a52e6ebe09b5f3d25580 2026-04-24T14:00:36Z b0a44585175f50d1170e0dd5606b3a502bbd82ce8d61daebe294b6c97812408b
OTP-29.0-rc2 92322002e7287640f7615fed89a677505b44bfdd 2026-04-24T14:00:19Z b952e731d7ee6d51822d2d261c809a2d4464efd1a87463bcf2c7f4495e7431e6
OTP-29.0-rc3 7721ab7462a426c107964b0f1e47207475e085e3 2026-04-24T13:59:40Z 83ecffb614710e05867ba28175e2b9e90d0b68157bf8c1c83793d7d75d5b6d97
OTP-29.0.1 f26c7e590c5d1b3afa0dee38093442df117822e3 2026-05-31T14:36:40Z 05b41f99f8d4eeb6944d0201054bc38edb293503353f676df3afbf1042475486
OTP-29.0.2 36b336d7675edfb976768465c5067bc8bc16ee9a 2026-06-10T08:39:21Z 905919b09cf6c27decdabc4367af81a9ed248acd340a4b80fa55c3df14489093
maint d31b060b5c25715a47cc3611be7ef017c341bcd5 2026-06-11T13:02:03Z dd981f09ae93c4030de6a33f65b655e3257cfe15477d6a83c61d79317e298905
maint-27 f835a5a32aeeb70778c958b5c01a401973e8fbe2 2026-06-10T13:02:32Z 4e3ea4facd9f5f8023628412f35a4ec13991cb5879093de99692002b187a94ff
maint-28 4567096bddd1ecddb7c973019ca7e769f486aa8f 2026-06-10T10:48:53Z 0656c4606790a6d84faef3b1c46cba705de9e6a7dea4787d3fdeb0dc3d738721
maint-29 36b336d7675edfb976768465c5067bc8bc16ee9a 2026-06-10T08:33:37Z 3d7b337c4b2ba12d797c493154a79ee32ae7a8f156b14f943b9216b47e77af4f
master 56f75c4dd241431978e6e13788822e4c1a18b0f7 2026-06-11T13:02:03Z 493650afcdeead215e8a10c16605a430e64c24fc4476ba90aa69cf5e0f314279
+1 -1
View File
@@ -11,7 +11,7 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v4.2.2
- uses: erlef/setup-beam@v1
with:
otp-version: "26.0.2"
+2 -2
View File
@@ -13,7 +13,7 @@ version = "1.0.0"
# https://gleam.run/writing-gleam/gleam-toml/.
[dependencies]
gleam_stdlib = ">= 0.34.0 and < 2.0.0"
gleam_stdlib = "0.60.0"
[dev-dependencies]
gleeunit = ">= 1.0.0 and < 2.0.0"
gleeunit = "1.3.0"
+11
View File
@@ -0,0 +1,11 @@
# This file was generated by Gleam
# You typically do not need to edit this file
packages = [
{ name = "gleam_stdlib", version = "0.60.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "621D600BB134BC239CB2537630899817B1A42E60A1D46C5E9F3FAE39F88C800B" },
{ name = "gleeunit", version = "1.3.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "0E6C83834BA65EDCAAF4FE4FB94AC697D9262D83E6F58A750D63C9F6C8A9D9FF" },
]
[requirements]
gleam_stdlib = { version = "0.60.0" }
gleeunit = { version = "1.3.0" }
+869 -72
View File
File diff suppressed because it is too large Load Diff
+439 -128
View File
@@ -1,3 +1,17 @@
import assert from 'node:assert'
import http from 'node:http'
import fs from 'node:fs'
import os from 'node:os'
import path from 'node:path'
import { describe, it } from 'node:test'
import * as csv from 'csv-parse/sync'
import elixirMatchers from '../matchers/elixir-matchers.json' with { type: 'json' }
import erlangMatchers from '../matchers/erlang-matchers.json' with { type: 'json' }
const { problemMatcher } = elixirMatchers
const { problemMatcher: erlangProblemMatcher } = erlangMatchers
process.env.NODE_ENV = 'test'
simulateInput('otp-version', '25.1.2')
simulateInput('otp-architecture', '64')
simulateInput('elixir-version', '1.14.2')
@@ -7,14 +21,7 @@ simulateInput('install-hex', 'true')
simulateInput('github-token', process.env.GITHUB_TOKEN)
simulateInput('hexpm-mirrors', 'https://builds.hex.pm', { multiline: true })
const assert = require('assert')
const http = require('http')
const fs = require('fs')
const os = require('os')
const path = require('path')
const setupBeam = require('../src/setup-beam')
const { problemMatcher } = require('../matchers/elixir-matchers.json')
const { describe, it } = require('node:test')
const { default: setupBeam } = await import('../src/setup-beam.js')
const matrix = {
otp: {
@@ -22,7 +29,10 @@ const matrix = {
'ubuntu-20.04': parseBuild('test/otp/ubuntu-20.04/builds.txt'),
'ubuntu-22.04': parseBuild('test/otp/ubuntu-22.04/builds.txt'),
'ubuntu-24.04': parseBuild('test/otp/ubuntu-24.04/builds.txt'),
'ubuntu-26.04': parseBuild('test/otp/ubuntu-26.04/builds.txt'),
windows: parseReleases('test/otp/releases.json'),
'macos-aarch64': parseCsv('test/otp/macos/aarch64-apple-darwin.csv'),
'macos-x86_64': parseCsv('test/otp/macos/x86_64-apple-darwin.csv'),
},
elixir: parseBuild('test/elixir/builds.txt'),
gleam: parseReleases('test/gleam/releases.json'),
@@ -58,12 +68,21 @@ function parseReleases(version) {
}
}
function parseCsv(file) {
let versions = {}
let fileH = fs.readFileSync(file, 'utf8')
csv
.parse(fileH, { columns: true })
.forEach((line) => (versions[line.ref_name] = line.ref_name))
return versions
}
describe('OTP install', () => {
it('fails for invalid OS version', async () => {
const otpOSVersion = 'ubuntu-08.04'
const otpVersion = 'OTP-23.2'
assert.rejects(
await assert.rejects(
async () => {
await setupBeam.install('otp', {
hexMirror: 'https://builds.hex.pm',
@@ -83,7 +102,7 @@ describe('OTP install', () => {
describe('Elixir install', () => {
it('fails for version 0.11 without OTP', async () => {
const exVersion = '0.11'
assert.rejects(
await assert.rejects(
async () => {
await setupBeam.install('elixir', {
hexMirror: 'https://builds.hex.pm',
@@ -100,7 +119,7 @@ describe('Elixir install', () => {
it('fails for version 1.0.0 on OTP 17 (without OTP)', async () => {
const exVersion = 'v1.0.0-otp-17'
assert.rejects(
await assert.rejects(
async () => {
await setupBeam.install('elixir', {
hexMirror: 'https://builds.hex.pm',
@@ -119,7 +138,7 @@ describe('Elixir install', () => {
describe('Gleam install', () => {
it('fails for unknown OTP', async () => {
const gleamVersion = '0.1.3'
assert.rejects(
await assert.rejects(
async () => {
await setupBeam.install('gleam', { gleamVersion })
},
@@ -135,7 +154,7 @@ describe('Gleam install', () => {
describe('rebar3 install', () => {
it('fails for unknown OTP', async () => {
const r3Version = '0.14.4'
assert.rejects(
await assert.rejects(
async () => {
await setupBeam.install('rebar3', { r3Version })
},
@@ -159,23 +178,20 @@ describe('.getOTPVersion(_) - Erlang', () => {
'https://repo.hex.pm, https://cdn.jsdelivr.net/hex',
{ multiline: true },
)
const previousRunnerArch = process.env.RUNNER_ARCH
if (process.platform === 'linux') {
process.env.RUNNER_ARCH = 'X64'
it('is Ok for known linux version', async () => {
before = simulateInput('version-type', 'strict')
spec = '26'
spec = '27.0'
osVersion = 'ubuntu-24.04'
expected = 'maint-26'
expected = 'OTP-27.0'
got = await setupBeam.getOTPVersion(spec, osVersion)
assert.deepStrictEqual(got, expected)
simulateInput('version-type', before)
before = simulateInput('version-type', 'strict')
spec = '27.0'
osVersion = 'ubuntu-24.04'
osVersion = 'ubuntu-26.04'
expected = 'OTP-27.0'
got = await setupBeam.getOTPVersion(spec, osVersion)
assert.deepStrictEqual(got, expected)
@@ -189,21 +205,21 @@ describe('.getOTPVersion(_) - Erlang', () => {
assert.deepStrictEqual(got, expected)
simulateInput('version-type', before)
spec = '19.3.x'
osVersion = 'ubuntu-16.04'
expected = 'OTP-19.3.6.13'
spec = '20.3.x'
osVersion = 'ubuntu-20.04'
expected = 'OTP-20.3.8.26'
got = await setupBeam.getOTPVersion(spec, osVersion)
assert.deepStrictEqual(got, expected)
spec = '^19.3.6'
osVersion = 'ubuntu-16.04'
expected = 'OTP-19.3.6.13'
spec = '^20.3.8'
osVersion = 'ubuntu-20.04'
expected = 'OTP-20.3.8.26'
got = await setupBeam.getOTPVersion(spec, osVersion)
assert.deepStrictEqual(got, expected)
spec = '^19.3'
osVersion = 'ubuntu-18.04'
expected = 'OTP-19.3.6.13'
spec = '^20.3'
osVersion = 'ubuntu-20.04'
expected = 'OTP-20.3.8.26'
got = await setupBeam.getOTPVersion(spec, osVersion)
assert.deepStrictEqual(got, expected)
@@ -266,7 +282,7 @@ describe('.getOTPVersion(_) - Erlang', () => {
assert.deepStrictEqual(got, expected)
spec = '23.0'
osVersion = 'windows-2019'
osVersion = 'windows-2022'
expected = '23.0.4'
got = await setupBeam.getOTPVersion(spec, osVersion)
assert.deepStrictEqual(got, expected)
@@ -287,7 +303,7 @@ describe('.getOTPVersion(_) - Erlang', () => {
assert.deepStrictEqual(got, expected)
spec = '23.0'
osVersion = 'windows-2019'
osVersion = 'windows-2022'
expected = '23.0.4'
got = await setupBeam.getOTPVersion(spec, osVersion)
assert.deepStrictEqual(got, expected)
@@ -297,19 +313,48 @@ describe('.getOTPVersion(_) - Erlang', () => {
}
if (process.platform === 'linux') {
it('is Ok for known linux ARM64 version', async () => {
it('is main-... only if strict/maint-... is used as input', async () => {
const arm64Options = setupBeam.githubARMRunnerArchs()
const previousRunnerArch = process.env.RUNNER_ARCH
process.env.RUNNER_ARCH =
arm64Options[Math.floor(Math.random() * arm64Options.length)]
before = simulateInput('version-type', 'strict')
spec = '26'
osVersion = 'ubuntu-24.04'
expected = 'maint-26'
got = await setupBeam.getOTPVersion(spec, osVersion)
assert.deepStrictEqual(got, expected)
await assert.rejects(
async () => {
await setupBeam.getOTPVersion('27', 'ubuntu-24.04')
},
(err) => {
assert.ok(err instanceof Error)
return true
},
`Fetching strict OTP version maint-<v> with input <v> is supposed to fail`,
)
simulateInput('version-type', before)
before = simulateInput('version-type', 'strict')
assert.strictEqual(
await setupBeam.getOTPVersion('maint-27', 'ubuntu-24.04'),
'maint-27',
)
simulateInput('version-type', before)
before = simulateInput('version-type', 'loose')
assert.strictEqual(
await setupBeam.getOTPVersion('maint-27', 'ubuntu-24.04'),
'maint-27',
)
simulateInput('version-type', before)
process.env.RUNNER_ARCH = previousRunnerArch
})
it('is Ok for known linux ARM64 version', async () => {
const arm64Options = setupBeam.githubARMRunnerArchs()
const previousRunnerArch = process.env.RUNNER_ARCH
process.env.RUNNER_ARCH =
arm64Options[Math.floor(Math.random() * arm64Options.length)]
before = simulateInput('version-type', 'strict')
spec = '27.0'
osVersion = 'ubuntu-24.04'
@@ -367,21 +412,16 @@ describe('.getOTPVersion(_) - Erlang', () => {
expected = 'master'
got = await setupBeam.getOTPVersion(spec, osVersion)
assert.deepStrictEqual(got, expected)
process.env.RUNNER_ARCH = previousRunnerArch
})
it('is Ok for known linux AMD64 version', async () => {
const amd64Options = setupBeam.githubAMDRunnerArchs()
const previousRunnerArch = process.env.RUNNER_ARCH
process.env.RUNNER_ARCH =
amd64Options[Math.floor(Math.random() * amd64Options.length)]
before = simulateInput('version-type', 'strict')
spec = '26'
osVersion = 'ubuntu-24.04'
expected = 'maint-26'
got = await setupBeam.getOTPVersion(spec, osVersion)
assert.deepStrictEqual(got, expected)
simulateInput('version-type', before)
before = simulateInput('version-type', 'strict')
spec = '27.0'
osVersion = 'ubuntu-24.04'
@@ -457,11 +497,78 @@ describe('.getOTPVersion(_) - Erlang', () => {
expected = 'master'
got = await setupBeam.getOTPVersion(spec, osVersion)
assert.deepStrictEqual(got, expected)
process.env.RUNNER_ARCH = previousRunnerArch
})
}
if (process.platform === 'darwin') {
it('is main-... only if strict/maint-... is used as input', async () => {
const arm64Options = setupBeam.githubARMRunnerArchs()
const previousRunnerArch = process.env.RUNNER_ARCH
process.env.RUNNER_ARCH =
arm64Options[Math.floor(Math.random() * arm64Options.length)]
before = simulateInput('version-type', 'strict')
await assert.rejects(
async () => {
await setupBeam.getOTPVersion('27')
},
(err) => {
assert.ok(err instanceof Error)
return true
},
`Fetching strict OTP version maint-<v> with input <v> is supposed to fail`,
)
simulateInput('version-type', before)
before = simulateInput('version-type', 'strict')
assert.strictEqual(await setupBeam.getOTPVersion('maint-27'), 'maint-27')
simulateInput('version-type', before)
before = simulateInput('version-type', 'loose')
assert.strictEqual(await setupBeam.getOTPVersion('maint-27'), 'maint-27')
simulateInput('version-type', before)
process.env.RUNNER_ARCH = previousRunnerArch
})
it('is Ok for known macos ARM64 version', async () => {
const arm64Options = setupBeam.githubARMRunnerArchs()
const previousRunnerArch = process.env.RUNNER_ARCH
process.env.RUNNER_ARCH =
arm64Options[Math.floor(Math.random() * arm64Options.length)]
before = simulateInput('version-type', 'strict')
spec = '28.0'
osVersion = 'macos-15-arm64'
expected = 'OTP-28.0'
got = await setupBeam.getOTPVersion(spec, osVersion)
assert.deepStrictEqual(got, expected)
simulateInput('version-type', before)
process.env.RUNNER_ARCH = previousRunnerArch
})
it('is Ok for known macos AMD64 version', async () => {
const amd64Options = setupBeam.githubARMRunnerArchs()
const previousRunnerArch = process.env.RUNNER_ARCH
process.env.RUNNER_ARCH =
amd64Options[Math.floor(Math.random() * amd64Options.length)]
before = simulateInput('version-type', 'strict')
spec = '28.0'
osVersion = 'macos-15'
expected = 'OTP-28.0'
got = await setupBeam.getOTPVersion(spec, osVersion)
assert.deepStrictEqual(got, expected)
simulateInput('version-type', before)
process.env.RUNNER_ARCH = previousRunnerArch
})
}
simulateInput('hexpm-mirrors', hexMirrors, { multiline: true })
process.env.RUNNER_ARCH = previousRunnerArch
})
describe('OTP arch-specific install', () => {
@@ -473,7 +580,7 @@ describe('OTP arch-specific install', () => {
const spec = '26'
const osVersion = 'ubuntu-24.04'
assert.rejects(
await assert.rejects(
async () => {
await setupBeam.getOTPVersion(spec, osVersion)
},
@@ -484,87 +591,114 @@ describe('OTP arch-specific install', () => {
`Fetching OTP Version with invalid Github runner architecture is supposed to fail`,
)
}
process.env.RUNNER_ARCH = previousRunnerArch
})
})
describe('.getRunnerOSVersion(_)', () => {
it('maps x86 ImageOS values to their container', async () => {
const previousImageOS = process.env.ImageOS
process.env.ImageOS = 'ubuntu22'
assert.strictEqual(setupBeam.getRunnerOSVersion(), 'ubuntu-22.04')
process.env.ImageOS = 'ubuntu24'
assert.strictEqual(setupBeam.getRunnerOSVersion(), 'ubuntu-24.04')
process.env.ImageOS = previousImageOS
})
it('maps arm64 ImageOS variants to the same container as x86', async () => {
const previousImageOS = process.env.ImageOS
process.env.ImageOS = 'ubuntu22-arm64'
assert.strictEqual(setupBeam.getRunnerOSVersion(), 'ubuntu-22.04')
process.env.ImageOS = 'ubuntu24-arm64'
assert.strictEqual(setupBeam.getRunnerOSVersion(), 'ubuntu-24.04')
process.env.ImageOS = previousImageOS
})
it('throws for genuinely unknown ImageOS values', async () => {
const previousImageOS = process.env.ImageOS
process.env.ImageOS = 'plan9'
assert.throws(
() => setupBeam.getRunnerOSVersion(),
/Tried to map a target OS/,
)
process.env.ImageOS = previousImageOS
})
})
describe('.getOTPVersion(_) - Elixir', () => {
let got
let expected
let spec
let otpVersion
let before
const hexMirrors = simulateInput('hexpm-mirrors', 'https://repo.hex.pm', {
multiline: true,
})
it('returns the expected value', async () => {
spec = '1.1.x'
otpVersion = 'OTP-17'
expected = 'v1.1.1-otp-17'
got = await setupBeam.getElixirVersion(spec, otpVersion)
assert.deepStrictEqual(got, expected)
if (process.platform === 'linux') {
it('returns the expected value', async () => {
spec = '1.18.x'
otpVersion = 'OTP-27'
expected = 'v1.18.4-otp-27'
await setupBeam.installOTP(otpVersion)
got = await setupBeam.getElixirVersion(spec, otpVersion)
assert.deepStrictEqual(got, expected)
spec = '1.10.4'
otpVersion = 'OTP-23'
expected = 'v1.10.4-otp-23'
got = await setupBeam.getElixirVersion(spec, otpVersion)
assert.deepStrictEqual(got, expected)
spec = '1.18.2'
otpVersion = 'OTP-27'
expected = 'v1.18.2-otp-27'
await setupBeam.installOTP(otpVersion)
got = await setupBeam.getElixirVersion(spec, otpVersion)
assert.deepStrictEqual(got, expected)
spec = '1.16.2-otp-26'
otpVersion = 'OTP-27'
expected = 'v1.16.2-otp-26'
got = await setupBeam.getElixirVersion(spec, otpVersion)
assert.deepStrictEqual(got, expected)
spec = '1.16.2-otp-26'
otpVersion = 'OTP-27'
expected = 'v1.16.2-otp-26'
await setupBeam.installOTP(otpVersion)
got = await setupBeam.getElixirVersion(spec, otpVersion)
assert.deepStrictEqual(got, expected)
spec = '1.12.1'
otpVersion = 'OTP-24.0.2'
expected = 'v1.12.1-otp-24'
got = await setupBeam.getElixirVersion(spec, otpVersion)
assert.deepStrictEqual(got, expected)
spec = '1.12.1'
otpVersion = 'OTP-24.3.4'
expected = 'v1.12.1-otp-24'
await setupBeam.installOTP(otpVersion)
got = await setupBeam.getElixirVersion(spec, otpVersion)
assert.deepStrictEqual(got, expected)
before = simulateInput('version-type', 'strict')
spec = '1.14.0'
otpVersion = 'main'
expected = 'v1.14.0'
got = await setupBeam.getElixirVersion(spec, otpVersion)
assert.deepStrictEqual(got, expected)
simulateInput('version-type', before)
before = simulateInput('version-type', 'strict')
spec = '1.19'
otpVersion = 'master'
expected = 'v1.19-otp-28'
await setupBeam.installOTP(otpVersion)
got = await setupBeam.getElixirVersion(spec, otpVersion)
assert.deepStrictEqual(got, expected)
simulateInput('version-type', before)
before = simulateInput('version-type', 'strict')
spec = 'v1.11.0-rc.0'
otpVersion = 'OTP-23'
expected = 'v1.11.0-rc.0-otp-23'
got = await setupBeam.getElixirVersion(spec, otpVersion)
assert.deepStrictEqual(got, expected)
simulateInput('version-type', before)
before = simulateInput('version-type', 'strict')
spec = 'v1.15.0-rc.2'
otpVersion = 'OTP-26.0'
expected = 'v1.15.0-rc.2-otp-26'
await setupBeam.installOTP(otpVersion)
got = await setupBeam.getElixirVersion(spec, otpVersion)
assert.deepStrictEqual(got, expected)
simulateInput('version-type', before)
before = simulateInput('version-type', 'strict')
spec = 'v1.11.0-rc.0-otp-23'
otpVersion = 'OTP-23'
expected = 'v1.11.0-rc.0-otp-23'
got = await setupBeam.getElixirVersion(spec, otpVersion)
assert.deepStrictEqual(got, expected)
simulateInput('version-type', before)
before = simulateInput('version-type', 'strict')
spec = 'v1.11.0'
otpVersion = '22.3.4.2'
expected = 'v1.11.0-otp-22'
got = await setupBeam.getElixirVersion(spec, otpVersion)
assert.deepStrictEqual(got, expected)
simulateInput('version-type', before)
before = simulateInput('version-type', 'strict')
spec = 'main'
otpVersion = '23.1'
expected = 'main-otp-23'
got = await setupBeam.getElixirVersion(spec, otpVersion)
assert.deepStrictEqual(got, expected)
simulateInput('version-type', before)
})
simulateInput('hexpm-mirrors', hexMirrors, { multiline: true })
before = simulateInput('version-type', 'strict')
spec = 'main'
otpVersion = '25.2'
expected = 'main-otp-25'
await setupBeam.installOTP(otpVersion)
got = await setupBeam.getElixirVersion(spec, otpVersion)
assert.deepStrictEqual(got, expected)
simulateInput('version-type', before)
})
}
})
describe('.getOTPVersion(_) - Gleam', () => {
@@ -580,6 +714,12 @@ describe('.getOTPVersion(_) - Gleam', () => {
got = await setupBeam.getGleamVersion(spec, otpVersion)
assert.deepStrictEqual(got, expected)
spec = 'nightly'
otpVersion = '28'
expected = 'nightly'
got = await setupBeam.getGleamVersion(spec, otpVersion)
assert.deepStrictEqual(got, expected)
spec = '0.13.2'
otpVersion = 'OTP-24'
expected = 'v0.13.2'
@@ -602,18 +742,18 @@ describe('.getOTPVersion(_) - rebar3', () => {
let spec
it('returns the expected value', async () => {
spec = '3.10.x'
expected = '3.10.0'
spec = '3.26.x'
expected = '3.26.0'
got = await setupBeam.getRebar3Version(spec)
assert.deepStrictEqual(got, expected)
spec = '3.11'
expected = '3.11.1'
spec = '3.25'
expected = '3.25.1'
got = await setupBeam.getRebar3Version(spec)
assert.deepStrictEqual(got, expected)
spec = '3.10'
expected = '3.10.0'
spec = '3.26'
expected = '3.26.0'
got = await setupBeam.getRebar3Version(spec)
assert.deepStrictEqual(got, expected)
})
@@ -833,21 +973,51 @@ describe('.getVersionFromSpec(_)', () => {
got = setupBeam.getVersionFromSpec(spec, matrix.otp['ubuntu-20.04'])
assert.deepStrictEqual(got, expected)
spec = '> 0'
expected = 'OTP-26.2.5'
got = setupBeam.getVersionFromSpec(spec, matrix.otp['ubuntu-22.04'])
assert.deepStrictEqual(got, expected)
spec = 'latest'
expected = 'OTP-27.0-rc3'
got = setupBeam.getVersionFromSpec(spec, matrix.otp['ubuntu-22.04'])
assert.deepStrictEqual(got, expected)
spec = '> 0'
expected = 'OTP-27.0'
got = setupBeam.getVersionFromSpec(spec, matrix.otp['ubuntu-24.04'])
assert.deepStrictEqual(got, expected)
spec = 'latest'
expected = 'OTP-27.0'
got = setupBeam.getVersionFromSpec(spec, matrix.otp['ubuntu-24.04'])
assert.deepStrictEqual(got, expected)
spec = '> 0'
expected = 'OTP-29.0.2'
got = setupBeam.getVersionFromSpec(spec, matrix.otp['ubuntu-26.04'])
assert.deepStrictEqual(got, expected)
spec = 'latest'
expected = 'OTP-29.0.2'
got = setupBeam.getVersionFromSpec(spec, matrix.otp['ubuntu-26.04'])
assert.deepStrictEqual(got, expected)
spec = 'latest'
expected = '27.0-rc3'
got = setupBeam.getVersionFromSpec(spec, matrix.otp.windows)
assert.deepStrictEqual(got, expected)
spec = 'latest'
expected = 'OTP-28.0'
got = setupBeam.getVersionFromSpec(spec, matrix.otp['macos-aarch64'])
assert.deepStrictEqual(got, expected)
spec = 'latest'
expected = 'OTP-28.0'
got = setupBeam.getVersionFromSpec(spec, matrix.otp['macos-x86_64'])
assert.deepStrictEqual(got, expected)
spec = 'latest'
expected = 'v1.16.2'
got = setupBeam.getVersionFromSpec(spec, matrix.elixir)
@@ -859,29 +1029,31 @@ describe('.getVersionFromSpec(_)', () => {
assert.deepStrictEqual(got, expected)
spec = 'latest'
expected = '3.23.0'
expected = '3.27.0'
got = setupBeam.getVersionFromSpec(spec, matrix.rebar3)
assert.deepStrictEqual(got, expected)
})
})
describe('version file', () => {
describe('.tool-versions file', () => {
const otpVersion = unsimulateInput('otp-version')
const elixirVersion = unsimulateInput('elixir-version')
const gleamVersion = unsimulateInput('gleam-version')
const rebar3Version = unsimulateInput('rebar3-version')
it('is parsed correctly', async () => {
const erlang = '27'
const elixir = '1.17.0'
const gleam = '0.23.0'
const rebar3 = '3.24.0'
const toolVersions = `# a comment
erlang ref:v${erlang}# comment, no space, and ref:v
const erlang = '27.3.4.1'
const elixir = '1.18.4'
const gleam = '1.9.1'
let toolVersions = `# a comment
erlang ref:v${erlang}
elixir ref:${elixir} # comment, with space and ref:
not-gleam 0.23 # not picked up
gleam ${gleam} \nrebar ${rebar3}`
gleam ${gleam} \n`
const filename = 'test/.tool-versions'
if (process.platform === 'win32') {
// Force \r\n to test in Windows
toolVersions = toolVersions.replace(/\n/g, '\r\n')
}
fs.writeFileSync(filename, toolVersions)
process.env.GITHUB_WORKSPACE = ''
const appVersions = setupBeam.parseVersionFile(filename)
@@ -905,15 +1077,62 @@ gleam ${gleam} \nrebar ${rebar3}`
assert.ok(async () => {
await setupBeam.install('gleam', { toolVersion: gleam })
})
})
simulateInput('otp-version', otpVersion)
simulateInput('elixir-version', elixirVersion)
simulateInput('gleam-version', gleamVersion)
})
describe('mise.toml file', () => {
const otpVersion = unsimulateInput('otp-version')
const elixirVersion = unsimulateInput('elixir-version')
const gleamVersion = unsimulateInput('gleam-version')
it('is parsed correctly', async () => {
const erlang = '27.3.4.1'
const elixir = '1.18.4'
const gleam = '1.9.1'
let miseToml = `[tools]
"erlang" = "${erlang}"
elixir = { version = "${elixir}", postinstall="mix deps.get" } # comment, with space and ref:
"not-gleam" = 0.23 # not picked up
"gleam" = "${gleam}"
[env]
_.file = ".env"\n`
const filename = 'test/mise.toml'
if (process.platform === 'win32') {
// Force \r\n to test in Windows
miseToml = miseToml.replace(/\n/g, '\r\n')
}
fs.writeFileSync(filename, miseToml)
process.env.GITHUB_WORKSPACE = ''
const appVersions = setupBeam.parseVersionFile(filename)
assert.strictEqual(appVersions.get('erlang'), erlang)
assert.strictEqual(appVersions.get('elixir'), elixir)
const absoluteFilename = path.join(os.tmpdir(), 'mise.toml')
fs.writeFileSync(absoluteFilename, miseToml)
process.env.GITHUB_WORKSPACE = process.cwd()
const absoluteAppVersions = setupBeam.parseVersionFile(absoluteFilename)
assert.strictEqual(absoluteAppVersions.get('erlang'), erlang)
assert.strictEqual(absoluteAppVersions.get('elixir'), elixir)
assert.ok(async () => {
await setupBeam.install('rebar3', { toolVersion: rebar3 })
await setupBeam.install('otp', { toolVersion: erlang })
})
assert.ok(async () => {
await setupBeam.install('elixir', { toolVersion: elixir })
})
assert.ok(async () => {
await setupBeam.install('gleam', { toolVersion: gleam })
})
})
simulateInput('otp-version', otpVersion)
simulateInput('elixir-version', elixirVersion)
simulateInput('gleam-version', gleamVersion)
simulateInput('rebar3-version', rebar3Version)
})
describe('.get(_)', () => {
@@ -1007,6 +1226,98 @@ describe("Elixir Mix matcher's", () => {
})
})
describe("Erlang matcher's", () => {
it('erlc errors are properly matched', () => {
const [matcher] = erlangProblemMatcher.find(
({ owner }) => owner === 'erlc-error',
).pattern
const output = 'src/mymod.erl:42:5: head mismatch'
const match = output.match(matcher.regexp)
assert.equal(match[1], 'src/mymod.erl')
assert.equal(match[2], '42')
assert.equal(match[3], '5')
assert.equal(match[4], 'head mismatch')
})
it('erlc errors do not match warnings', () => {
const [matcher] = erlangProblemMatcher.find(
({ owner }) => owner === 'erlc-error',
).pattern
const output = 'src/mymod.erl:42:5: Warning: variable X is unused'
const match = output.match(matcher.regexp)
assert.equal(match, null)
})
it('erlc warnings are properly matched', () => {
const [matcher] = erlangProblemMatcher.find(
({ owner }) => owner === 'erlc-warning',
).pattern
const output = 'src/mymod.erl:10:3: Warning: variable X is unused'
const match = output.match(matcher.regexp)
assert.equal(match[1], 'src/mymod.erl')
assert.equal(match[2], '10')
assert.equal(match[3], '3')
assert.equal(match[4], 'variable X is unused')
})
it('dialyzer warnings are matched via erlc patterns', () => {
const [matcher] = erlangProblemMatcher.find(
({ owner }) => owner === 'erlc-warning',
).pattern
const output =
'src/mymod.erl:25:1: warning: Function foo/0 has no local return'
const match = output.match(matcher.regexp)
assert.equal(match[1], 'src/mymod.erl')
assert.equal(match[2], '25')
assert.equal(match[3], '1')
assert.equal(match[4], 'Function foo/0 has no local return')
})
it('CT failures are properly matched', () => {
const [filePattern, reasonPattern] = erlangProblemMatcher.find(
({ owner }) => owner === 'ct-failure',
).pattern
const firstOutput = 'test/mymod_SUITE.erl failed on line 55'
const secondOutput = 'Reason: {badmatch,{error,timeout}}'
const fileMatch = firstOutput.match(filePattern.regexp)
assert.equal(fileMatch[1], 'test/mymod_SUITE.erl')
assert.equal(fileMatch[2], '55')
const reasonMatch = secondOutput.match(reasonPattern.regexp)
assert.equal(reasonMatch[1], '{badmatch,{error,timeout}}')
})
it('EUnit failures are properly matched', () => {
const [headerPattern, funcPattern, callPattern, errorPattern] =
erlangProblemMatcher.find(
({ owner }) => owner === 'eunit-failure',
).pattern
const header = 'mymod_test: hello_test....*failed*'
const func =
'in function mymod_test:hello_test/0 (test/mymod_test.erl, line 12)'
const call = 'in call from mymod_test:hello_test/0'
const error = '**error:{badmatch,false}'
assert.ok(header.match(headerPattern.regexp))
const funcMatch = func.match(funcPattern.regexp)
assert.equal(funcMatch[1], 'test/mymod_test.erl')
assert.equal(funcMatch[2], '12')
assert.ok(call.match(callPattern.regexp))
const errorMatch = error.match(errorPattern.regexp)
assert.equal(errorMatch[1], '{badmatch,false}')
})
})
function unsimulateInput(key) {
return simulateInput(key, '')
}