Repository navigation
Fix GLIBCXX compatibility, streamline build workflows and fix CI caching - #11
Merged
Merged
Conversation
Adds `-static-libstdc++` and `-static-libgcc` to the CMake configuration in both release and debug GitHub Actions workflows. This prevents `GLIBCXX` version mismatch errors (e.g., missing GLIBCXX_3.4.32) when running binaries on older target environments like Raspbian Bookworm on Raspberry Pi Zero W.
- Merged `build-debug.yml` and `build-release.yml` into a unified `build.yml` using a build type matrix - Added `workflow_dispatch` support to `release.yml` to allow manual releases via the GitHub UI - Maintained exact artifact naming and packaging constraints (including conditional `upgrade.sh` inclusion for release builds) - Removed redundant workflow files to reduce CI maintenance overhead
…se trigger - Remove `sudo` from sysroot copies in `build.yml` to prevent permission denied errors when the runner attempts to cache the toolchain directory. - Skip ALSA installation step entirely if toolchain is restored from cache, as it is already included in the cached sysroot. - Use `cp -p` during packaging to preserve file permissions (like executable bits) and include `uninstall.sh` in release builds. - Remove `workflow_dispatch` from `release.yml` to prevent accidental releases named "main" and strictly enforce tag-based releases.
LeoLTM
approved these changes
Jul 14, 2026
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.
Summary
This PR addresses a critical compatibility issue where cross-compiled binaries fail on older target environments (like Raspbian Bookworm on the Pi Zero W) due to missing
GLIBCXXversions.While forcing static linking to fix this, I streamlined the GitHub Actions into a unified matrix workflow and resolved some small bugs regarding action caching permissions, artifact permissions, and release safety.
What changed?
Critical Fix: Static Toolchain Linking
Added
-static-libstdc++and-static-libgccto the CMake flags for both configurations. This bakes the required standard library versions directly into the binary, preventing runtime mismatches on target deployment systems.CI Bugfixes (Caching & Permissions)
sudowhen injecting ALSA headers into the cross-compiler sysroot. Usingsudocaused ownership mismatches that can trigger permission denied errors during the GitHub Actions caching step.cpforcp -pin the packaging step to preserve file permissions (ensuring executable bits remain intact) and addeduninstall.shto the release bundles.Workflow Consolidation & Release Guardrails
build-debug.ymlandbuild-release.ymlfiles into a unifiedbuild.ymlusing a build-type matrix. This cuts down on maintenance and deduplicates setup steps while keeping separate-debug.tar.gzand-release.tar.gzartifacts.workflow_dispatchto allow manual triggering of standard builds via the UI.