Fix Linux binary artifact paths and add static build support#41
Merged
Conversation
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 Report✅ All modified and coverable lines are covered by tests. 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
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
hazardandhazpredtest 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:
.github/workflows/ci.ymlnow installsmusl-toolsto enable building static binaries, and distinguishes between dynamic and static builds for Linux, improving deployment compatibility across different Linux distributions.hazardandhazpredare 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:
hazardandhazpredundertests/corpus/*/reference/v4.4.6-macos-arm64/, supporting the new macOS ARM64 platform in the test suite. This includes.lstand.metafiles 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.