Files
searchi/apps/desktop/src-tauri/build.rs
T

50 lines
2.4 KiB
Rust

fn main() {
let target = std::env::var("CARGO_CFG_TARGET_OS").expect("target OS");
let name = if target == "windows" {
"searchi-extract-worker.exe"
} else {
"searchi-extract-worker"
};
let helper = std::path::Path::new("resources").join(name);
println!("cargo:rerun-if-changed={}", helper.display());
println!("cargo:rerun-if-changed=resources/extraction-worker.json");
println!("cargo:rerun-if-changed=../../../tools/stage_extraction_worker.py");
println!("cargo:rerun-if-changed=../../../crates/searchi-core/src");
println!("cargo:rerun-if-changed=../../../crates/searchi-media/src");
println!("cargo:rerun-if-changed=../../../crates/searchi-extract-worker/src");
println!("cargo:rerun-if-changed=../../../Cargo.lock");
println!("cargo:rerun-if-changed=../../../Cargo.toml");
for crate_name in ["searchi-core", "searchi-media", "searchi-extract-worker"] {
println!("cargo:rerun-if-changed=../../../crates/{crate_name}/Cargo.toml");
}
if std::env::var("PROFILE").as_deref() == Ok("release") {
let metadata = std::fs::symlink_metadata(&helper).unwrap_or_else(|_| {
panic!("Missing packaged document helper. Run tools/stage_extraction_worker.py before building a release.")
});
assert!(
metadata.file_type().is_file()
&& metadata.len() > 0
&& metadata.len() <= 64 * 1024 * 1024,
"Packaged document helper must be a regular, nonempty file under 64 MiB"
);
}
if std::env::var("PROFILE").as_deref() == Ok("release")
&& matches!(target.as_str(), "windows" | "linux" | "macos")
{
let root = std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("../../..");
let status = std::process::Command::new(if cfg!(windows) { "python" } else { "python3" })
.arg(root.join("tools/stage_extraction_worker.py"))
.args(["--verify-only", "--platform", &target, "--architecture"])
.arg(std::env::var("CARGO_CFG_TARGET_ARCH").expect("target architecture"))
.arg("--destination")
.arg(std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("resources"))
.status()
.expect("Python is required to verify packaged extraction worker provenance");
assert!(
status.success(),
"Packaged extraction worker verification failed; rebuild and stage it"
);
}
tauri_build::build()
}