Skip to content

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.

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.
@naoNao89 naoNao89 force-pushed the fix/codspeed-4.0.4-gnu11-compatibility branch from 1689884 to 7dbd1d1 Compare October 14, 2025 00:37
Fixes cspell error for OSTYPE shell variable used in CI workflow
Copy link

GNU testsuite comparison:

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

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.
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)

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

1 participant