mirror of
https://github.com/erlef/setup-beam.git
synced 2026-07-26 09:40:48 +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:
Vendored
+23
-2
@@ -58558,12 +58558,14 @@ async function install(toolName, opts) {
|
|||||||
tool: 'Gleam',
|
tool: 'Gleam',
|
||||||
linux: {
|
linux: {
|
||||||
downloadToolURL: () => {
|
downloadToolURL: () => {
|
||||||
|
const arch = getRunnerOSArchitecture()
|
||||||
let gz
|
let gz
|
||||||
if (
|
if (
|
||||||
versionSpec === 'nightly' ||
|
versionSpec === 'nightly' ||
|
||||||
node_modules_semver.gt(versionSpec, 'v0.22.1')
|
node_modules_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 {
|
} else {
|
||||||
gz = `gleam-${versionSpec}-linux-amd64.tar.gz`
|
gz = `gleam-${versionSpec}-linux-amd64.tar.gz`
|
||||||
}
|
}
|
||||||
@@ -58627,7 +58629,26 @@ async function install(toolName, opts) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
installOpts.darwin = installOpts.linux
|
installOpts.darwin = {
|
||||||
|
downloadToolURL: () => {
|
||||||
|
const arch = getRunnerOSArchitecture()
|
||||||
|
let gz
|
||||||
|
if (versionSpec === 'nightly' || node_modules_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
|
break
|
||||||
case 'rebar3':
|
case 'rebar3':
|
||||||
installOpts = {
|
installOpts = {
|
||||||
|
|||||||
+23
-2
@@ -1051,12 +1051,14 @@ async function install(toolName, opts) {
|
|||||||
tool: 'Gleam',
|
tool: 'Gleam',
|
||||||
linux: {
|
linux: {
|
||||||
downloadToolURL: () => {
|
downloadToolURL: () => {
|
||||||
|
const arch = getRunnerOSArchitecture()
|
||||||
let gz
|
let gz
|
||||||
if (
|
if (
|
||||||
versionSpec === 'nightly' ||
|
versionSpec === 'nightly' ||
|
||||||
semver.gt(versionSpec, 'v0.22.1')
|
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 {
|
} else {
|
||||||
gz = `gleam-${versionSpec}-linux-amd64.tar.gz`
|
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
|
break
|
||||||
case 'rebar3':
|
case 'rebar3':
|
||||||
installOpts = {
|
installOpts = {
|
||||||
|
|||||||
Reference in New Issue
Block a user