Skip to content

infra: drop llvm-19 install from setup-build-host#1897

Merged
gianni-cor merged 2 commits into
mainfrom
setup-build-host
May 5, 2026
Merged

infra: drop llvm-19 install from setup-build-host#1897
gianni-cor merged 2 commits into
mainfrom
setup-build-host

Conversation

@jpgaribotti

Copy link
Copy Markdown
Contributor

What problem does this PR solve?

  • setup-build-host is pinned by SHA at every caller (today: reusable-prebuilds.yml, cpp-lint.yaml), so any change to its inline sudo ./llvm.sh 19 all step only takes effect once each caller bumps its @<sha> pin.
  • The follow-up monorepo-wide LLVM 22 migration (PR QVAC-18455: bump LLVM/Clang to 22 across the monorepo via setup-llvm #1896) needs every C++ workflow to call the new setup-llvm composite action (infra: add setup-llvm composite action #1894) and bump its setup-build-host SHA pin in lockstep — otherwise the same job ends up double-installing LLVM (19 inline here + 22 from setup-llvm) for every prebuild and cpp-lint run until both pins are synced.
  • Because main uses squash-merges, the only way to make those two changes land atomically is to publish the LLVM-removed setup-build-host as its own merge commit first, so the follow-up PR can pin to it.

How does it solve it?

  • Removes the Linux-only Install llvm-19 step from .github/actions/setup-build-host/action.yml so the action no longer ships any Clang toolchain on its own.
  • Rewords the action description to drop the "install llvm-19" claim and add an explicit callout: callers that need a versioned LLVM toolchain (every C++ workflow today) MUST invoke setup-llvm themselves on linux/windows runners; that action is the single source of truth for the LLVM major used across the monorepo.
  • All other steps (Maximize disk space on Linux, Windows long-paths / CMake generator / arm64 SDK rename, base X11 dev headers + caller-supplied extras on Linux, Android NDK env + cross toolchain) are unchanged.

How was it tested?

  • Verified the only callers of setup-build-host in the repo are reusable-prebuilds.yml (line 170) and cpp-lint.yaml (line 66), and both currently pin to setup-build-host@1d9b21658… — i.e. they keep installing llvm-19 inline until they bump the pin. So no in-tree consumer is broken by this commit on its own.
  • The follow-up PR (QVAC-18455: bump LLVM/Clang to 22 across the monorepo via setup-llvm #1896) covers the full migration: it bumps the setup-build-host SHA pin to this commit and adds an explicit tetherto/qvac/.github/actions/setup-llvm@<sha> step to every C++ workflow, where end-to-end CI is exercised against LLVM 22.

Breaking Changes

  • No behavior change for callers still pinned to the previous setup-build-host SHA — they keep installing llvm-19 inline.
  • For callers that bump to this SHA: setup-build-host no longer provides any Clang/LLVM toolchain on Linux. Those callers MUST invoke tetherto/qvac/.github/actions/setup-llvm@<sha> themselves on Linux and Windows runners, otherwise bare-make generate / clang-tidy / clang-format / llvm-cov will not be available on PATH.

BEFORE:

- name: Setup build host
  uses: tetherto/qvac/.github/actions/setup-build-host@<old-sha>
  with:
    platform: linux
    arch: x64
# (LLVM/Clang implicitly installed by setup-build-host on Linux)

AFTER:

- name: Setup build host
  uses: tetherto/qvac/.github/actions/setup-build-host@<new-sha>
  with:
    platform: linux
    arch: x64

- name: Setup LLVM
  uses: tetherto/qvac/.github/actions/setup-llvm@<setup-llvm-sha>
  # defaults: version=22, windows-version=22.1.0

setup-build-host is pinned by SHA at every caller, so changes to its
install path only take effect once each caller bumps its `@<sha>` pin.
Land this first so the follow-up PR — which switches every C++
workflow to call the dedicated `setup-llvm` composite action (#1894)
and bumps the setup-build-host pin in lockstep — can do both moves in
one squash-merge without double-installing LLVM (19 here + 22 in
setup-llvm) on every prebuild / cpp-lint job in the interim.

Callers pinned to the old SHA are unaffected. Callers that bump to
this SHA MUST invoke `setup-llvm` themselves on Linux and Windows
runners; this action no longer provides a Clang toolchain.
@jpgaribotti jpgaribotti requested a review from a team as a code owner May 5, 2026 10:40
@github-actions

github-actions Bot commented May 5, 2026

Copy link
Copy Markdown
Contributor

Tier-based Approval Status

**PR Tier:** TIER1

**Current Status:** ✅ APPROVED

**Requirements:**
- 1 Team Member approval ✅ (1/1)
- 1 Team Lead OR Management approval ✅ (1/1)



---
*This comment is automatically updated when reviews change.*

@gianni-cor

Copy link
Copy Markdown
Contributor

/review

@gianni-cor gianni-cor merged commit df55c85 into main May 5, 2026
8 checks passed
@gianni-cor gianni-cor deleted the setup-build-host branch May 5, 2026 10:53
tamer-hassan-tether pushed a commit that referenced this pull request May 5, 2026
setup-build-host is pinned by SHA at every caller, so changes to its
install path only take effect once each caller bumps its `@<sha>` pin.
Land this first so the follow-up PR — which switches every C++
workflow to call the dedicated `setup-llvm` composite action (#1894)
and bumps the setup-build-host pin in lockstep — can do both moves in
one squash-merge without double-installing LLVM (19 here + 22 in
setup-llvm) on every prebuild / cpp-lint job in the interim.

Callers pinned to the old SHA are unaffected. Callers that bump to
this SHA MUST invoke `setup-llvm` themselves on Linux and Windows
runners; this action no longer provides a Clang toolchain.

Co-authored-by: gianni-cor <gianfranco.cordella@tether.io>
Proletter pushed a commit that referenced this pull request May 24, 2026
setup-build-host is pinned by SHA at every caller, so changes to its
install path only take effect once each caller bumps its `@<sha>` pin.
Land this first so the follow-up PR — which switches every C++
workflow to call the dedicated `setup-llvm` composite action (#1894)
and bumps the setup-build-host pin in lockstep — can do both moves in
one squash-merge without double-installing LLVM (19 here + 22 in
setup-llvm) on every prebuild / cpp-lint job in the interim.

Callers pinned to the old SHA are unaffected. Callers that bump to
this SHA MUST invoke `setup-llvm` themselves on Linux and Windows
runners; this action no longer provides a Clang toolchain.

Co-authored-by: gianni-cor <gianfranco.cordella@tether.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants