feat: Support Linux ARM64 GNU

This commit is contained in:
2026-08-28 22:49:58 -06:00
parent 0946e3ec64
commit f0661b4ea4
4 changed files with 26 additions and 32 deletions
+4 -1
View File
@@ -166,6 +166,9 @@ jobs:
os: ubuntu-latest
use-cross: true
cargo-flags: ''
- target: aarch64-unknown-linux-gnu
os: ubuntu-24.04-arm
cargo-flags: ''
- target: aarch64-apple-darwin
os: macos-latest
use-cross: true
@@ -253,7 +256,7 @@ jobs:
run: echo "BUILD_CMD=cross" >> $GITHUB_ENV
- name: Install latest LLVM/Clang
if: matrix.os == 'ubuntu-latest'
if: startsWith(matrix.os, 'ubuntu')
run: |
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
+11 -16
View File
@@ -61,24 +61,19 @@ if ($os -eq 'windows') {
if ($arch -eq 'x86_64') { $candidates += 'coyote-x86_64-apple-darwin.tar.gz' }
else { $candidates += 'coyote-aarch64-apple-darwin.tar.gz' }
} elseif ($os -eq 'linux') {
if ($arch -eq 'x86_64') {
# Mirror install_coyote.sh: only offer the gnu build when glibc is detected.
$libc = 'musl'
try { getconf GNU_LIBC_VERSION *> $null; if ($LASTEXITCODE -eq 0) { $libc = 'gnu' } } catch { }
try { if ((ldd --version 2>&1 | Out-String) -imatch 'glibc') { $libc = 'gnu' } } catch { }
if ($libc -eq 'gnu') {
$libssl3 = $false
try { if ((ldconfig -p 2>&1 | Out-String) -match 'libssl\.so\.3') { $libssl3 = $true } } catch { }
if ($libssl3) {
$candidates += 'coyote-x86_64-unknown-linux-gnu.tar.gz'
} else {
Write-Info "glibc detected but OpenSSL 3 (libssl.so.3) not found; using musl build"
}
$libc = 'musl'
try { getconf GNU_LIBC_VERSION *> $null; if ($LASTEXITCODE -eq 0) { $libc = 'gnu' } } catch { }
try { if ((ldd --version 2>&1 | Out-String) -imatch 'glibc') { $libc = 'gnu' } } catch { }
if ($libc -eq 'gnu') {
$libssl3 = $false
try { if ((ldconfig -p 2>&1 | Out-String) -match 'libssl\.so\.3') { $libssl3 = $true } } catch { }
if ($libssl3) {
$candidates += "coyote-$arch-unknown-linux-gnu.tar.gz"
} else {
Write-Info "glibc detected but OpenSSL 3 (libssl.so.3) not found; using musl build"
}
$candidates += 'coyote-x86_64-unknown-linux-musl.tar.gz'
} else {
$candidates += 'coyote-aarch64-unknown-linux-musl.tar.gz'
}
$candidates += "coyote-$arch-unknown-linux-musl.tar.gz"
} else {
Fail "Unsupported OS for this installer: $os"
}
+10 -14
View File
@@ -116,23 +116,19 @@ if [[ "$OS" == "darwin" ]]; then
ASSET_CANDIDATES+=("coyote-aarch64-apple-darwin.tar.gz")
fi
elif [[ "$OS" == "linux" ]]; then
if [[ "$ARCH" == "x86_64" ]]; then
LIBC="musl"
if command -v getconf >/dev/null 2>&1 && getconf GNU_LIBC_VERSION >/dev/null 2>&1; then LIBC="gnu"; fi
if ldd --version 2>&1 | grep -qi glibc; then LIBC="gnu"; fi
LIBC="musl"
if command -v getconf >/dev/null 2>&1 && getconf GNU_LIBC_VERSION >/dev/null 2>&1; then LIBC="gnu"; fi
if ldd --version 2>&1 | grep -qi glibc; then LIBC="gnu"; fi
if [[ "$LIBC" == "gnu" ]]; then
if ldconfig -p 2>/dev/null | grep -q 'libssl\.so\.3'; then
ASSET_CANDIDATES+=("coyote-x86_64-unknown-linux-gnu.tar.gz")
else
log "glibc detected but OpenSSL 3 (libssl.so.3) not found; using musl build"
fi
if [[ "$LIBC" == "gnu" ]]; then
if ldconfig -p 2>/dev/null | grep -q 'libssl\.so\.3'; then
ASSET_CANDIDATES+=("coyote-${ARCH}-unknown-linux-gnu.tar.gz")
else
log "glibc detected but OpenSSL 3 (libssl.so.3) not found; using musl build"
fi
ASSET_CANDIDATES+=("coyote-x86_64-unknown-linux-musl.tar.gz")
else
ASSET_CANDIDATES+=("coyote-aarch64-unknown-linux-musl.tar.gz")
fi
ASSET_CANDIDATES+=("coyote-${ARCH}-unknown-linux-musl.tar.gz")
else
echo "Error: unsupported OS for this installer: $OS" >&2; exit 1
fi
+1 -1
View File
@@ -72,7 +72,7 @@ fn preferred_update_target() -> Option<&'static str> {
match (env::consts::OS, env::consts::ARCH) {
("linux", "x86_64") if cfg!(target_env = "gnu") => Some("x86_64-unknown-linux-gnu"),
("linux", "x86_64") => Some("x86_64-unknown-linux-musl"),
// No aarch64 gnu asset is published; musl is the only option.
("linux", "aarch64") if cfg!(target_env = "gnu") => Some("aarch64-unknown-linux-gnu"),
("linux", "aarch64") => Some("aarch64-unknown-linux-musl"),
_ => None,
}