1
0
Fork 0
mirror of https://github.com/imjasonh/krust synced 2026-07-08 06:45:32 +00:00

Fix CI: Robust cross-compilation setup and tests

This commit fixes CI failures by:

1. Added cargo config setup to all test jobs:
   - Ensures correct linkers are configured before running tests
   - Uses x86_64-linux-musl-gcc for x86_64 targets
   - Uses aarch64-linux-gnu-gcc for ARM64 targets

2. Updated tests to handle cross-compilation gracefully:
   - Single-platform tests always use linux/amd64
   - Multi-platform tests attempt to build for both architectures
   - Tests verify the appropriate error messages if targets are missing
   - No tests are skipped - they either pass or fail with expected errors

3. Enhanced CI verification:
   - Added verification of aarch64-linux-gnu-gcc availability
   - Shows the cargo config being used

This ensures tests run consistently across all environments without skipping.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Jason Hall 2025-06-07 22:52:38 -04:00
parent 45ba88984d
commit 90c871f24d
Failed to extract signature
2 changed files with 72 additions and 53 deletions

View file

@ -50,6 +50,16 @@ jobs:
with:
path: target
key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
- name: Setup cargo config for cross-compilation
run: |
mkdir -p .cargo
cat > .cargo/config.toml << 'EOF'
[target.x86_64-unknown-linux-musl]
linker = "x86_64-linux-musl-gcc"
[target.aarch64-unknown-linux-musl]
linker = "aarch64-linux-gnu-gcc"
EOF
- name: Verify cross-compilation setup (Unix)
run: |
echo "Installed targets:"
@ -62,9 +72,10 @@ jobs:
which x86_64-unknown-linux-musl-gcc || echo "x86_64-unknown-linux-musl-gcc not found"
which x86_64-linux-musl-gcc || echo "x86_64-linux-musl-gcc not found"
which musl-gcc || echo "musl-gcc not found"
which aarch64-linux-gnu-gcc || echo "aarch64-linux-gnu-gcc not found"
which rust-lld || echo "rust-lld not found"
echo "Cargo config:"
cat ~/.cargo/config.toml || echo "No cargo config found"
cat .cargo/config.toml || echo "No cargo config found"
- name: Build
run: cargo build --verbose
- name: Run unit tests
@ -115,6 +126,16 @@ jobs:
run: |
sudo apt-get update
sudo apt-get install -y musl-tools gcc-aarch64-linux-gnu
- name: Setup cargo config for cross-compilation
run: |
mkdir -p .cargo
cat > .cargo/config.toml << 'EOF'
[target.x86_64-unknown-linux-musl]
linker = "x86_64-linux-musl-gcc"
[target.aarch64-unknown-linux-musl]
linker = "aarch64-linux-gnu-gcc"
EOF
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build krust