Skip to content

ci: patch codspeed v4.0.4 for gnu11 compatibility#8906

Closed
naoNao89 wants to merge 3 commits intouutils:mainfrom
naoNao89:fix/codspeed-4.0.4-gnu11-compatibility
Closed

ci: patch codspeed v4.0.4 for gnu11 compatibility#8906
naoNao89 wants to merge 3 commits intouutils:mainfrom
naoNao89:fix/codspeed-4.0.4-gnu11-compatibility

Conversation

@naoNao89
Copy link
Contributor

Fixes CodSpeedHQ/codspeed-rust#139 and #8858

bug: cross tool (used in our CI) ships with older GCC that doesn't support gnu17. Codspeed v4.0.4 hardcodes -std=gnu17 in its build.rs, causing builds to fail on i686-unknown-linux-gnu and x86_64-unknown-linux-gnu targets.

fix: our CI workflow now patches codspeed at runtime before building. It clones the codspeed source, changes gnu17 to gnu11 in build.rs, and tells cargo to use the patched version via a temporary cargo patch directive.

This unblocks our CI cross-compilation builds while we wait for upstream (CodSpeedHQ/codspeed-rust#139) to fix it properly. The patch is CI-only and doesn't touch our source tree.

@naoNao89 naoNao89 force-pushed the fix/codspeed-4.0.4-gnu11-compatibility branch from 1689884 to 7dbd1d1 Compare October 14, 2025 00:37
@github-actions
Copy link

GNU testsuite comparison:

Skipping an intermittent issue tests/timeout/timeout (passes in this run but fails in the 'main' branch)

@github-actions
Copy link

GNU testsuite comparison:

Skip an intermittent issue tests/misc/tee (fails in this run but passes in the 'main' branch)
Skipping an intermittent issue tests/timeout/timeout (passes in this run but fails in the 'main' branch)

Dynamically patches codspeed build.rs during CI to use gnu11 instead of gnu17, addressing CodSpeedHQ/codspeed-rust#139 for older GCC toolchain compatibility in cross-compilation containers.

Implementation:
- Clone and patch codspeed v4.0.4 with retry logic
- Validate build.rs and verify patch application
- Inject [patch.crates-io] configuration at runtime
- Platform-aware sed handling (macOS/Linux)
- Update Cargo.lock for patched dependency

The patch applies only during CI runs and does not persist in source control.
Fixes cspell error for OSTYPE shell variable used in CI workflow
Move CODSPEED_TMP from system temp (/tmp) to workspace directory (.codspeed-patch) to ensure Docker containers used by cross can access the patched source. Add cleanup to remove temporary directory after use.
@sylvestre sylvestre force-pushed the fix/codspeed-4.0.4-gnu11-compatibility branch from 1fb2499 to 4d310fd Compare October 16, 2025 01:47
@github-actions
Copy link

GNU testsuite comparison:

Skip an intermittent issue tests/timeout/timeout (fails in this run but passes in the 'main' branch)
Skipping an intermittent issue tests/tail/overlay-headers (passes in this run but fails in the 'main' branch)

@sylvestre
Copy link
Contributor

@naoNao89 ping?

@cakebaker
Copy link
Contributor

Closing this PR as codspeed v4.0.5 resolved the issue. Anyway, thanks for your PR!

@cakebaker cakebaker closed this Oct 21, 2025
@naoNao89 naoNao89 deleted the fix/codspeed-4.0.4-gnu11-compatibility branch October 21, 2025 07:26
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.

Build of v4 fails on i686-unknown-linux-gnu/x86_64-unknown-linux-gnu with cross

3 participants