Add linux_arm64 builds for Ebitengine and Bevy

Batocera and the ES-family distributions run on ARM as much as on
x86_64 — Raspberry Pi, Odroid, the retro handhelds — and a linux_x64
binary installs there but will not start. There was no Linux ARM asset
kind at all: KINDS had linux_x86 and linux_x64 and mac_arm64, but
nothing for 64-bit ARM Linux.

Registering the kind is deliberately separate from producing it: a
platform service only includes BuildLinuxArm64 once its pipeline builds
the artifact, otherwise /api/builds would report it missing for every
release. Hence Ebitengine and Bevy only. Godot needs a Linux arm64
export preset in each game repo first; LÖVE fuses an upstream AppImage
that ships x86_64 only; TIC-80's export command has no ARM target.

Ebitengine needs cgo on Linux, so binary_build gained a cross-compiler
argument — and unsets CC for native targets, otherwise a build after
the ARM one silently picks up the cross gcc.

Verified by cross-compiling both demos in the rebuilt images: each
produced a genuine AArch64 ELF (e_machine 183), not a silent fallback.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-16 20:57:23 +02:00
co-authored by Claude Opus 5
parent 87e23545d1
commit e8c3e2f792
12 changed files with 55 additions and 7 deletions
+1
View File
@@ -160,6 +160,7 @@ export default {
win_x64: 'Windows (64-bit)',
linux_x86: 'Linux (32-bit)',
linux_x64: 'Linux (64-bit)',
linux_arm64: 'Linux (ARM 64-bit)',
mac_x64: 'macOS (Intel)',
mac_arm64: 'macOS (Apple Silicon)',
mac_universal: 'macOS',
+1
View File
@@ -160,6 +160,7 @@ export default {
win_x64: 'Windows (64 bit)',
linux_x86: 'Linux (32 bit)',
linux_x64: 'Linux (64 bit)',
linux_arm64: 'Linux (ARM 64 bit)',
mac_x64: 'macOS (Intel)',
mac_arm64: 'macOS (Apple Silicon)',
mac_universal: 'macOS',
@@ -120,6 +120,7 @@ const columnGroups = [
color: 'group-amber',
kinds: [
{ kind: 'linux_x64', sub: '64 bit' },
{ kind: 'linux_arm64', sub: 'ARM 64 bit' },
],
},
{
@@ -314,7 +314,7 @@ const downloadUrl = (path: string) =>
// az asset-táblázat sorai és sorrendjük; a html nem letöltés, azt a Play gomb viszi
const TABLE_KIND_ORDER = [
'cartridge', 'source', 'docs',
'win_x64', 'win_x86', 'linux_x64', 'linux_x86',
'win_x64', 'win_x86', 'linux_x64', 'linux_arm64', 'linux_x86',
'mac_universal', 'mac_arm64', 'mac_x64',
]