Skip to content

Release workflow: auto-derive version + fix linux-arm64 linker - #2

Merged
alexeagle merged 2 commits into
masterfrom
figma-release-arm64-lld
Jun 22, 2026
Merged

Release workflow: auto-derive version + fix linux-arm64 linker#2
alexeagle merged 2 commits into
masterfrom
figma-release-arm64-lld

Conversation

@alexeagle

Copy link
Copy Markdown

Follow-up to #1. Contains two commits:

1. Auto-derive release version from ref (lost in #1's merge)

PR #1 merged only its first commit, so the auto-counter redesign we'd agreed on never reached master. This re-applies it: the workflow takes a single ref input (e.g. 8.6.0-figma) and a setup job computes everything — no hand-typed version string:

  • base version = ref minus -figma... (validated x.y.z), asserted to descend from the upstream <base> tag.
  • fork build counter = max(existing <base>-figma.N) + 1 — no collisions or skips.
  • embed label / tag = <base>-figma.<counter>; the resolved SHA is pinned for all legs.

2. Fix linux-arm64 linker crash

The first end-to-end run (build) built linux-x86_64 and darwin-arm64 cleanly but failed linking on linux-arm64:

/usr/bin/ld.gold: internal error in try_fix_erratum_843419_optimized, at ../../gold/aarch64.cc:2114

A known crash in GNU gold's aarch64 erratum-843419 workaround (Bazel's auto-detected toolchain forces gold when /usr/bin/ld.gold exists). Fix: install lld on the aarch64 runner and append --linkopt=-fuse-ld=lld there (gcc honours the last -fuse-ld). The two working legs are untouched.

Validation

  • x86_64 + darwin legs already built end-to-end in Add Figma Bazel release workflow #1's run.
  • arm64 fix not yet exercised — will confirm on the next Run workflow (ref 8.6.0-figma).

🤖 Generated with Claude Code

alexeagle and others added 2 commits June 22, 2026 09:57
Replace the hand-typed embed_label input with a single `ref` input and a
`setup` job that computes everything, removing the only human-chosen
version string:

  * upstream base = ref with `-figma...` stripped (validated as x.y.z),
    and the ref is asserted to descend from the upstream <base> tag so a
    mislabeled branch fails fast instead of producing a wrong release.
  * fork build counter = max existing `<base>-figma.N` release + 1, so
    re-cuts can't collide with or skip a prior build number.
  * embed label / tag = `<base>-figma.<counter>`.

The resolved commit sha is pinned in `setup` and checked out by every
build leg and the release job, so all platforms build an identical tree
and the release targets that exact commit.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The first end-to-end run failed only on the linux-arm64 leg while
linking //src/main/cpp:client:

  /usr/bin/ld.gold: internal error in try_fix_erratum_843419_optimized,
  at ../../gold/aarch64.cc:2114

That is a known crash in GNU gold's aarch64 erratum-843419 workaround;
Bazel's auto-detected toolchain forces gold when /usr/bin/ld.gold is
present. Install lld on the aarch64 runner and append
--linkopt=-fuse-ld=lld there (gcc honours the last -fuse-ld, overriding
the toolchain's gold). The linux-x86_64 and darwin-arm64 legs, which
built cleanly, are unchanged (empty link_flags).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@alexeagle
alexeagle merged commit 7123ff3 into master Jun 22, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants