build: don't check for sidecars during donut-proxy build

This commit is contained in:
zhom
2025-11-29 14:02:31 +04:00
parent 84af35c4f5
commit 5d7ed0430e
4 changed files with 27 additions and 68 deletions
-6
View File
@@ -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
+1 -13
View File
@@ -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
+1 -13
View File
@@ -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
+25 -36
View File
@@ -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
}