From 3ec858eb9fb5f703a9dc57413196de349ee9beb8 Mon Sep 17 00:00:00 2001 From: Tunglies <77394545+Tunglies@users.noreply.github.com> Date: Tue, 13 Oct 2026 16:07:05 +0800 Subject: [PATCH] fix(packaging): stop shipping frontend-contract in Linux bundles tauri-cli's get_binaries() adds every file in src-tauri/src/bin/ as a bundle binary, and the deb/rpm packagers copy each one to /usr/bin, so the dev-only bindings generator ended up as /usr/bin/frontend-contract (1.0 MB) in release packages and broke downstream repackaging (Copr: "Installed but unpackaged file(s) found"). There is no bundler option to exclude a binary, so move the generator to an example target, which cargo keeps dev-only and get_binaries() never scans, and invoke it via 'cargo run --example'. Ref https://github.com/clash-verge-rev/clash-verge-rev/pull/8131#issuecomment-6137907930 --- Changelog.md | 4 ++++ scripts/gen-contract.mjs | 2 +- src-tauri/{src/bin => examples}/frontend-contract.rs | 2 ++ 3 files changed, 7 insertions(+), 1 deletion(-) rename src-tauri/{src/bin => examples}/frontend-contract.rs (77%) diff --git a/Changelog.md b/Changelog.md index 36976d462..a37b4132c 100644 --- a/Changelog.md +++ b/Changelog.md @@ -6,6 +6,10 @@ - 修复通过 URL 导入订阅时,即使导入的订阅并非当前使用的订阅,也会重新加载当前配置的问题 - 修复「首页」网站测速失败后卡片一直显示测试中的问题 +**🐧 Linux** + +- Linux:修复 deb/rpm 安装包错误包含多余的 `frontend-contract` 可执行文件,导致下游重新打包失败的问题 +
diff --git a/scripts/gen-contract.mjs b/scripts/gen-contract.mjs index f1103d898..b8731ce20 100644 --- a/scripts/gen-contract.mjs +++ b/scripts/gen-contract.mjs @@ -22,7 +22,7 @@ try { 'run', '-p', 'clash-verge', - '--bin', + '--example', 'frontend-contract', '--locked', '-q', diff --git a/src-tauri/src/bin/frontend-contract.rs b/src-tauri/examples/frontend-contract.rs similarity index 77% rename from src-tauri/src/bin/frontend-contract.rs rename to src-tauri/examples/frontend-contract.rs index ba205060d..a531ffe56 100644 --- a/src-tauri/src/bin/frontend-contract.rs +++ b/src-tauri/examples/frontend-contract.rs @@ -1,3 +1,5 @@ +// Dev-only target: Tauri ships everything under src/bin/ to /usr/bin in deb/rpm +// bundles (PR #8131), so this generator must stay an example, never a bin. fn main() -> Result<(), Box> { let mut args = std::env::args_os().skip(1); let output = args