Skip to content

CI: add aarch64-linux - support - fable 4.1 contrib - #41

Open
jvmvik wants to merge 1 commit into
masterfrom
aarch64-linux-ci
Open

jvmvik wants to merge 1 commit into
masterfrom
aarch64-linux-ci

Conversation

@jvmvik

@jvmvik jvmvik commented Sep 26, 2026 •

Copy link
Copy Markdown

What

  • ci.yml: new aarch64-linux-source job on GitHub's ubuntu-24.04-arm runners (Ruby 3.3 and 4.0): rake compile, rake test, and an ASAN leak check. Until now nothing in CI compiled or ran the gem on aarch64; the published aarch64-linux gem was built (cross-compiled in rake-compiler-dock) but never executed.
  • gem-build.yml: new test-native job that installs each cross-compiled native gem on its real target (aarch64-linux, x86_64-linux, arm64-darwin) and runs the suite; publish now depends on it.
  • rakelib/test.rake: ASAN_OPTIONS=use_sigaltstack=0 for test:asan. On aarch64 every ASAN run died with ERROR: Failed to munmap before printing results (Ruby's own sigaltstack vs ASAN's; Ruby 3.3.10 / libasan8 / Debian 13 arm64). Harmless on x86_64 (only disables ASAN's stack-overflow reporting).
  • .gitignore: .bundle-v13/ (local bundle dir used while testing in containers).

Verified

In an aarch64-linux container (Debian 13, Ruby 3.3.10 +YJIT): 307 runs / 4643 assertions pass from source; ASAN reports no leaks originating in lexbor or ext/nokolexbor (only Ruby VM/YJIT end-of-process allocations); the published 0.8.0-aarch64-linux gem loads and returns the same selector results as the source build.

…nd test cross-compiled native gems before publish

- ci.yml: new aarch64-linux-source job (ubuntu-24.04-arm; Ruby 3.3 and 4.0):
  rake compile, rake test, ASAN leak check. Until now no job compiled or
  tested on aarch64; the published aarch64-linux gem was built but never run.
- gem-build.yml: new test-native job installs each cross-compiled gem on its
  real target (aarch64-linux, x86_64-linux, arm64-darwin) and runs the suite;
  publish now depends on it. Catches broken prebuilt binaries (cf. wreq-rb's
  aarch64-linux gem with an undefined symbol).
- rakelib/test.rake: ASAN_OPTIONS=use_sigaltstack=0 so test:asan works on
  aarch64 (Ruby's sigaltstack vs ASAN's: 'ERROR: Failed to munmap').

Verified in an aarch64-linux container (Debian 13, Ruby 3.3.10 +YJIT):
307 runs / 4643 assertions pass from source; ASAN reports no leaks originating
in lexbor or ext/nokolexbor; the published 0.8.0-aarch64-linux gem loads and
matches the source build.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@jvmvik jvmvik added the enhancement New feature or request label Sep 26, 2026
@jvmvik jvmvik changed the title CI: test aarch64-linux (native source build + ASAN on arm runners; test cross-compiled native gems before publish) CI: add aarch64-linux - support - fable 4.1 contrib Sep 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants