diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fc48d71..096f623 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,7 +14,6 @@ jobs: test: name: Test runs-on: ${{ matrix.os }} - continue-on-error: true strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] @@ -51,6 +50,9 @@ jobs: # Create config file Add-Content -Path "$env:USERPROFILE\.cargo\config.toml" -Value "[target.x86_64-unknown-linux-musl]" Add-Content -Path "$env:USERPROFILE\.cargo\config.toml" -Value 'linker = "rust-lld"' + - name: Set up Docker (Windows and macOS) + if: matrix.os == 'windows-latest' || matrix.os == 'macos-latest' + uses: docker-practice/actions-setup-docker@v1 - name: Cache cargo registry uses: actions/cache@v4 with: @@ -68,9 +70,19 @@ jobs: key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} - name: Verify cross-compilation setup run: | - rustup target list --installed | grep musl + echo "Installed targets:" + rustup target list --installed + echo "Cargo version:" cargo --version + echo "Rustc version:" rustc --version + echo "Available linkers:" + 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 rust-lld || echo "rust-lld not found" + echo "Cargo config:" + cat ~/.cargo/config.toml || echo "No cargo config found" - name: Build run: cargo build --verbose - name: Run unit tests diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0455164..36dbf5c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -4,7 +4,7 @@ repos: hooks: - id: rustfmt name: rustfmt - entry: cargo fmt -- + entry: cargo fmt -- --check language: system types: [rust] pass_filenames: false diff --git a/src/builder/mod.rs b/src/builder/mod.rs index 3d8ef0d..4919ab9 100644 --- a/src/builder/mod.rs +++ b/src/builder/mod.rs @@ -1,7 +1,7 @@ use anyhow::{Context, Result}; use std::path::{Path, PathBuf}; use std::process::Command; -use tracing::{debug, info}; +use tracing::{debug, error, info}; #[cfg(test)] mod tests; @@ -87,7 +87,11 @@ impl RustBuilder { let output = cmd.output().context("Failed to execute cargo build")?; if !output.status.success() { + let stdout = String::from_utf8_lossy(&output.stdout); let stderr = String::from_utf8_lossy(&output.stderr); + error!("Cargo build failed!"); + error!("stdout:\n{}", stdout); + error!("stderr:\n{}", stderr); anyhow::bail!("Cargo build failed: {}", stderr); }