Skip to content

Fix Linux binary artifact paths and add static build support#41

Merged
ehrlinger merged 7 commits into
mainfrom
release/4.4
May 12, 2026
Merged

Fix Linux binary artifact paths and add static build support#41
ehrlinger merged 7 commits into
mainfrom
release/4.4

Conversation

@ehrlinger

Copy link
Copy Markdown
Owner

This pull request updates the CI workflow to improve Linux binary builds and artifact handling, and adds new macOS ARM64 reference outputs and metadata for both hazard and hazpred test corpora. The workflow now builds and uploads both dynamic and static binaries for better compatibility, and test references are refreshed for the new platform.

CI Workflow Improvements:

  • The CI workflow in .github/workflows/ci.yml now installs musl-tools to enable building static binaries, and distinguishes between dynamic and static builds for Linux, improving deployment compatibility across different Linux distributions.
  • Dynamic and static binaries for both hazard and hazpred are now uploaded as separate artifacts with increased retention, and the artifact upload logic has been updated to reflect the new build outputs and paths.

Test Corpus Updates for macOS ARM64:

  • New or refreshed reference output and metadata files have been added for hazard and hazpred under tests/corpus/*/reference/v4.4.6-macos-arm64/, supporting the new macOS ARM64 platform in the test suite. This includes .lst and .meta files for multiple test cases. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16]

These changes ensure more robust and portable CI builds, and expand test coverage to include macOS ARM64 outputs for both main binaries.

ehrlinger and others added 7 commits May 11, 2026 16:09
The artifact upload step was pointing to 'hazard' at workspace root,
which doesn't exist after an autotools build (binary is at
src/hazard/hazard). Also fixes HAZARD_BIN/HAZPRED_BIN env vars for
the integration test step.

Changes:
- path: src/hazard/hazard + src/hazpred/hazpred (both binaries)
- name: hazard-linux-glibc-<sha> (was hazard-binary-<sha>)
- retention: 30 days (was 7)
- HAZPRED_BIN added to integration test env

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Dynamic glibc binaries from Ubuntu CI require glibc 2.38 which is
incompatible with RHEL 8 (glibc 2.28) and musl-based systems.

Add a second build step using LDFLAGS=-static to produce self-contained
binaries with no glibc dependency. These work on any Linux x86-64
install including RHEL 7/8, CentOS, and musl systems.

Artifact: hazard-linux-x64-static-<sha> (30-day retention)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
glibc-static is RHEL/CentOS naming; Ubuntu libc6-dev already provides
libc.a for static linking. Also musl-tools is not needed for the static
build — LDFLAGS=-static uses glibc's libc.a, not musl.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Static glibc libm lacks the ifunc runtime resolver used by dynamic
libm.so to select SSE4/AVX implementations. Overriding CFLAGS also
suppressed configure.ac's -Wall/-Wextra additions. Using default
autoconf CFLAGS (-g -O2 + configure.ac additions) keeps the static
binary numerically identical to the dynamic CI build.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Captured from v4.4.6 binary on macOS/Apple-clang/arm64 using
tests/refresh-macos-corpus.sh with HAZARD_CAPTURE_REDACT=1.
Self-consistency check: 9 hazard + 8 hazpred, all PASS.

Includes two new corpus members added since v4.4.4:
  hz.te123.OMC (repeated events, X5)
  hz.te123.OMC.renewal (modulated renewal, X20)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The static binary uses a non-ifunc libm that produces different FP
results than the dynamic build. Save the dynamic binary so it can be
used to capture a v4.4.6-linux-x64-glibc corpus reference bucket.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@codecov

codecov Bot commented May 12, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 80.17%. Comparing base (579543b) to head (30920df).

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #41   +/-   ##
=======================================
  Coverage   80.17%   80.17%           
=======================================
  Files          23       23           
  Lines         701      701           
=======================================
  Hits          562      562           
  Misses        139      139           
Flag Coverage Δ
full-build 80.17% <ø> (ø)
unit-tests 78.03% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@ehrlinger ehrlinger merged commit 8370e4f into main May 12, 2026
14 checks passed
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