From 1e104e0e599b50537f4c685da4c94a7001fec391 Mon Sep 17 00:00:00 2001 From: zhom <2717306+zhom@users.noreply.github.com> Date: Sun, 11 Jan 2026 22:06:24 +0400 Subject: [PATCH] build: properly handle daemon build --- .github/workflows/codeql.yml | 35 +++++++++++++++++++++++++++++++++-- .github/workflows/lint-rs.yml | 15 ++++++++++----- src-tauri/build.rs | 16 +++++++++++----- 3 files changed, 54 insertions(+), 12 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index a73bb83..b42cae9 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -63,8 +63,39 @@ jobs: - name: Install dependencies from lockfile run: pnpm install --frozen-lockfile - - - name: Install rust dependencies + + - name: Build frontend + if: matrix.language == 'rust' + run: pnpm next build + + - name: Get host target + if: matrix.language == 'rust' + id: host_target + shell: bash + run: | + HOST_TARGET=$(rustc -vV | sed -n 's|host: ||p') + echo "target=${HOST_TARGET}" >> $GITHUB_OUTPUT + + - name: Build sidecar binaries + if: matrix.language == 'rust' + shell: bash + working-directory: ./src-tauri + run: | + cargo build --bin donut-proxy --release + cargo build --bin donut-daemon --release + + - name: Copy sidecar binaries to Tauri binaries + if: matrix.language == 'rust' + shell: bash + run: | + mkdir -p src-tauri/binaries + HOST_TARGET="${{ steps.host_target.outputs.target }}" + cp src-tauri/target/release/donut-proxy src-tauri/binaries/donut-proxy-${HOST_TARGET} + cp src-tauri/target/release/donut-daemon src-tauri/binaries/donut-daemon-${HOST_TARGET} + chmod +x src-tauri/binaries/donut-proxy-${HOST_TARGET} + chmod +x src-tauri/binaries/donut-daemon-${HOST_TARGET} + + - name: Build rust dependencies if: matrix.language == 'rust' working-directory: ./src-tauri run: | diff --git a/.github/workflows/lint-rs.yml b/.github/workflows/lint-rs.yml index 6b7d58c..eced014 100644 --- a/.github/workflows/lint-rs.yml +++ b/.github/workflows/lint-rs.yml @@ -82,21 +82,26 @@ jobs: echo "target=${HOST_TARGET}" >> $GITHUB_OUTPUT echo "Host target: ${HOST_TARGET}" - - name: Build donut-proxy sidecar + - name: Build sidecar binaries shell: bash working-directory: ./src-tauri - run: cargo build --bin donut-proxy + run: | + cargo build --bin donut-proxy --release + cargo build --bin donut-daemon --release - - name: Copy donut-proxy binary to Tauri binaries + - name: Copy sidecar binaries to Tauri binaries shell: bash run: | mkdir -p src-tauri/binaries HOST_TARGET="${{ steps.host_target.outputs.target }}" if [[ "$HOST_TARGET" == *"windows"* ]]; then - cp src-tauri/target/debug/donut-proxy.exe src-tauri/binaries/donut-proxy-${HOST_TARGET}.exe + cp src-tauri/target/release/donut-proxy.exe src-tauri/binaries/donut-proxy-${HOST_TARGET}.exe + cp src-tauri/target/release/donut-daemon.exe src-tauri/binaries/donut-daemon-${HOST_TARGET}.exe else - cp src-tauri/target/debug/donut-proxy src-tauri/binaries/donut-proxy-${HOST_TARGET} + cp src-tauri/target/release/donut-proxy src-tauri/binaries/donut-proxy-${HOST_TARGET} + cp src-tauri/target/release/donut-daemon src-tauri/binaries/donut-daemon-${HOST_TARGET} chmod +x src-tauri/binaries/donut-proxy-${HOST_TARGET} + chmod +x src-tauri/binaries/donut-daemon-${HOST_TARGET} fi - name: Run rustfmt check diff --git a/src-tauri/build.rs b/src-tauri/build.rs index 65aaf82..587cc92 100644 --- a/src-tauri/build.rs +++ b/src-tauri/build.rs @@ -75,14 +75,20 @@ fn external_binaries_exist() -> bool { let binaries_dir = PathBuf::from(&manifest_dir).join("binaries"); - // Check for required external binaries - let donut_proxy_name = if target.contains("windows") { - format!("donut-proxy-{}.exe", target) + // Check for all required external binaries (must match tauri.conf.json externalBin) + let (donut_proxy_name, donut_daemon_name) = if target.contains("windows") { + ( + format!("donut-proxy-{}.exe", target), + format!("donut-daemon-{}.exe", target), + ) } else { - format!("donut-proxy-{}", target) + ( + format!("donut-proxy-{}", target), + format!("donut-daemon-{}", target), + ) }; - binaries_dir.join(&donut_proxy_name).exists() + binaries_dir.join(&donut_proxy_name).exists() && binaries_dir.join(&donut_daemon_name).exists() } fn ensure_dist_folder_exists() {