diff --git a/.github/workflows/lint-rs.yml b/.github/workflows/lint-rs.yml index 19e9879..55f50ac 100644 --- a/.github/workflows/lint-rs.yml +++ b/.github/workflows/lint-rs.yml @@ -115,8 +115,6 @@ jobs: - name: Build donut-proxy sidecar shell: bash working-directory: ./src-tauri - env: - TARGET: ${{ steps.host_target.outputs.target }} run: cargo build --bin donut-proxy - name: Copy donut-proxy binary to Tauri binaries @@ -139,14 +137,10 @@ jobs: working-directory: src-tauri - name: Run clippy check and deny warnings - env: - TARGET: ${{ steps.host_target.outputs.target }} run: cargo clippy --all-targets --all-features -- -D warnings -D clippy::all working-directory: src-tauri - name: Run Rust tests - env: - TARGET: ${{ steps.host_target.outputs.target }} run: cargo test working-directory: src-tauri diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3b87998..03c1469 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -160,8 +160,7 @@ jobs: - name: Build donut-proxy sidecar shell: bash working-directory: ./src-tauri - run: | - cargo build --bin donut-proxy --target ${{ matrix.target }} --release + run: cargo build --bin donut-proxy --target ${{ matrix.target }} --release - name: Copy donut-proxy binary to Tauri binaries shell: bash @@ -171,14 +170,6 @@ jobs: cp src-tauri/target/${{ matrix.target }}/release/donut-proxy.exe src-tauri/binaries/donut-proxy-${{ matrix.target }}.exe else cp src-tauri/target/${{ matrix.target }}/release/donut-proxy src-tauri/binaries/donut-proxy-${{ matrix.target }} - fi - # Verify binary was copied - ls -la src-tauri/binaries/donut-proxy-${{ matrix.target }}* - # Ensure binary exists and is executable - if [[ "${{ matrix.platform }}" == "windows-latest" ]]; then - test -f src-tauri/binaries/donut-proxy-${{ matrix.target }}.exe || exit 1 - else - test -f src-tauri/binaries/donut-proxy-${{ matrix.target }} || exit 1 chmod +x src-tauri/binaries/donut-proxy-${{ matrix.target }} fi @@ -187,9 +178,6 @@ jobs: # continue-on-error: true - name: Build frontend - env: - TARGET: ${{ matrix.target }} - PROFILE: release run: pnpm build - name: Build Tauri app diff --git a/.github/workflows/rolling-release.yml b/.github/workflows/rolling-release.yml index 30825c5..11364f9 100644 --- a/.github/workflows/rolling-release.yml +++ b/.github/workflows/rolling-release.yml @@ -159,8 +159,7 @@ jobs: - name: Build donut-proxy sidecar shell: bash working-directory: ./src-tauri - run: | - cargo build --bin donut-proxy --target ${{ matrix.target }} --release + run: cargo build --bin donut-proxy --target ${{ matrix.target }} --release - name: Copy donut-proxy binary to Tauri binaries shell: bash @@ -170,14 +169,6 @@ jobs: cp src-tauri/target/${{ matrix.target }}/release/donut-proxy.exe src-tauri/binaries/donut-proxy-${{ matrix.target }}.exe else cp src-tauri/target/${{ matrix.target }}/release/donut-proxy src-tauri/binaries/donut-proxy-${{ matrix.target }} - fi - # Verify binary was copied - ls -la src-tauri/binaries/donut-proxy-${{ matrix.target }}* - # Ensure binary exists and is executable - if [[ "${{ matrix.platform }}" == "windows-latest" ]]; then - test -f src-tauri/binaries/donut-proxy-${{ matrix.target }}.exe || exit 1 - else - test -f src-tauri/binaries/donut-proxy-${{ matrix.target }} || exit 1 chmod +x src-tauri/binaries/donut-proxy-${{ matrix.target }} fi @@ -186,9 +177,6 @@ jobs: # continue-on-error: true - name: Build frontend - env: - TARGET: ${{ matrix.target }} - PROFILE: release run: pnpm build - name: Generate nightly timestamp diff --git a/src-tauri/build.rs b/src-tauri/build.rs index e05212c..598dde0 100644 --- a/src-tauri/build.rs +++ b/src-tauri/build.rs @@ -40,57 +40,46 @@ fn main() { println!("cargo:rerun-if-changed=src/proxy_runner.rs"); println!("cargo:rerun-if-changed=src/proxy_storage.rs"); - // Ensure the proxy binary exists before Tauri checks for it - // Tauri looks for binaries in the binaries/ directory relative to the manifest - ensure_proxy_binary_exists(); - - tauri_build::build() + // Only run tauri_build if all external binaries exist + // This allows building donut-proxy sidecar without the other binaries present + if external_binaries_exist() { + tauri_build::build() + } else { + println!("cargo:warning=Skipping tauri_build: external binaries not found. This is expected when building sidecar binaries."); + } } -fn ensure_proxy_binary_exists() { +fn external_binaries_exist() -> bool { use std::env; use std::path::PathBuf; let manifest_dir = match env::var("CARGO_MANIFEST_DIR") { Ok(dir) => dir, - Err(_) => return, + Err(_) => return false, }; let target = match env::var("TARGET") { Ok(t) => t, - Err(_) => return, + Err(_) => return false, }; let binaries_dir = PathBuf::from(&manifest_dir).join("binaries"); - let binary_name = format!("donut-proxy-{}", target); - let binary_path = binaries_dir.join(&binary_name); - // If binary doesn't exist, try to copy it from target directory - if !binary_path.exists() { - let profile = env::var("PROFILE").unwrap_or_else(|_| "debug".to_string()); - let source_binary_name = if target.contains("windows") { - "donut-proxy.exe" - } else { - "donut-proxy" - }; + // Check for both required external binaries + let nodecar_name = if target.contains("windows") { + format!("nodecar-{}.exe", target) + } else { + format!("nodecar-{}", target) + }; - let source_dir = if target == env::var("HOST").unwrap_or_default() { - format!("{manifest_dir}/target/{}", profile) - } else { - format!("{manifest_dir}/target/{target}/{}", profile) - }; + let donut_proxy_name = if target.contains("windows") { + format!("donut-proxy-{}.exe", target) + } else { + format!("donut-proxy-{}", target) + }; - let source = PathBuf::from(&source_dir).join(source_binary_name); - if source.exists() { - if let Err(e) = std::fs::create_dir_all(&binaries_dir) { - eprintln!("cargo:warning=Failed to create binaries directory: {}", e); - return; - } - if let Err(e) = std::fs::copy(&source, &binary_path) { - eprintln!("cargo:warning=Failed to copy proxy binary: {}", e); - } - } else { - eprintln!("cargo:warning=Proxy binary not found at {} and source {} doesn't exist. Run 'pnpm copy-proxy-binary' first.", binary_path.display(), source.display()); - } - } + let nodecar_exists = binaries_dir.join(&nodecar_name).exists(); + let donut_proxy_exists = binaries_dir.join(&donut_proxy_name).exists(); + + nodecar_exists && donut_proxy_exists }