Skip to content

fix(CI): use Ubuntu 22.04 runners for Linux builds#1581

Merged
TheLastCicada merged 4 commits into
v2-rc2from
fix/linux-glibc-compat
Apr 15, 2026
Merged

fix(CI): use Ubuntu 22.04 runners for Linux builds#1581
TheLastCicada merged 4 commits into
v2-rc2from
fix/linux-glibc-compat

Conversation

@TheLastCicada

@TheLastCicada TheLastCicada commented Apr 15, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Pin Linux build runners to Ubuntu 22.04 (ubuntu-22.04 for x64, ubuntu-22.04-arm for arm64) instead of Ubuntu 24.04
  • Fixes GLIBC_2.38 not found crash when the .deb package is installed on Ubuntu 22.04 systems

Problem

The ubuntu-latest (24.04) and ubuntu-24.04-arm runners have GLIBC 2.39. When npm install compiles the sqlite3 native addon on these runners, the resulting node_sqlite3.node links against a libm symbol introduced in GLIBC 2.38. Deployed to Ubuntu 22.04 (GLIBC 2.35), dlopen fails immediately:

Error: /lib/aarch64-linux-gnu/libm.so.6: version `GLIBC_2.38' not found
  (required by .../sqlite3/build/node_sqlite3.node)

Fix

Ubuntu 22.04 runners have GLIBC 2.35, so the compiled native addon will be compatible with all non-EOL Ubuntu LTS releases (20.04+, 22.04+, 24.04+).

Test plan

  • CI build succeeds on both ubuntu-22.04 and ubuntu-22.04-arm runners
  • Smoke test passes (binary starts and responds on /health)
  • Install resulting .deb on an Ubuntu 22.04 arm64 system and verify cadt starts without GLIBC errors

Note

Low Risk
Low risk CI-only change, but it affects Linux release artifacts and could impact build times or introduce native-build failures if the sqlite3 source build breaks on the pinned runners.

Overview
Updates the build workflow to pin Linux runners to ubuntu-22.04/ubuntu-22.04-arm (instead of ubuntu-latest/24.04) to keep generated binaries compatible with Ubuntu 22.04’s GLIBC.

Adds a Linux-only step to npm rebuild sqlite3 --build-from-source so the bundled node_sqlite3.node is compiled against the runner’s GLIBC rather than using downloaded prebuilts, and documents the rationale directly in the workflow.

Reviewed by Cursor Bugbot for commit d3044c6. Bugbot is set up for automated code reviews on this repo. Configure here.

RC release for docker build fix
Ubuntu 24.04 runners (GLIBC 2.39) produce sqlite3 native addons that
require GLIBC_2.38, which is unavailable on Ubuntu 22.04 deployment
targets (GLIBC 2.35). Pinning to 22.04 runners ensures the compiled
node_sqlite3.node is compatible with all non-EOL Ubuntu LTS releases.
npm install downloads prebuilt node_sqlite3.node binaries compiled
against GLIBC 2.38+. Force source compilation on Ubuntu runners so the
native addon links against the runner's GLIBC (2.35 on ubuntu-22.04).
Explain why Linux runners are pinned to ubuntu-22.04, why sqlite3 is
rebuilt from source, and when the runner version can be updated. Also
fix stale "Setup Node 20.x" step name.
@TheLastCicada TheLastCicada merged commit 8ce837d into v2-rc2 Apr 15, 2026
26 checks passed
@TheLastCicada TheLastCicada deleted the fix/linux-glibc-compat branch April 15, 2026 17:27
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.

1 participant