mirror of
https://github.com/erlef/setup-beam.git
synced 2026-07-22 22:56:07 +00:00
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.
This commit is contained in:
committed by
GitHub
parent
d55fdba43f
commit
2abe6cda7a
+23
-2
@@ -1051,12 +1051,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`
|
||||
}
|
||||
@@ -1120,7 +1122,26 @@ async function install(toolName, opts) {
|
||||
},
|
||||
},
|
||||
}
|
||||
installOpts.darwin = installOpts.linux
|
||||
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 = {
|
||||
|
||||
Reference in New Issue
Block a user