ci(lesavka): reuse process contract server build

This commit is contained in:
Brad Stein 2026-05-18 13:33:10 -03:00
parent 72adce5322
commit 147845d079

View File

@ -12,6 +12,7 @@ use std::io::Read;
use std::net::TcpListener; use std::net::TcpListener;
use std::path::PathBuf; use std::path::PathBuf;
use std::process::{Command, Stdio}; use std::process::{Command, Stdio};
use std::sync::OnceLock;
use std::time::{Duration, Instant}; use std::time::{Duration, Instant};
fn cargo_binary(name: &str) -> Option<PathBuf> { fn cargo_binary(name: &str) -> Option<PathBuf> {
@ -45,31 +46,36 @@ fn build_current_binary(name: &str) -> Option<PathBuf> {
if name != "lesavka-server" { if name != "lesavka-server" {
return None; return None;
} }
let cargo = option_env!("CARGO").unwrap_or("cargo"); static SERVER_BINARY: OnceLock<Option<PathBuf>> = OnceLock::new();
let target_dir = workspace_root().join("target/process-contract-debug"); SERVER_BINARY
let _ = fs::remove_dir_all(&target_dir); .get_or_init(|| {
let mut command = Command::new(cargo); let cargo = option_env!("CARGO").unwrap_or("cargo");
let status = command let target_dir = workspace_root().join("target/process-contract-debug");
.current_dir(workspace_root()) let _ = fs::remove_dir_all(&target_dir);
.env_remove("CARGO_BUILD_RUSTFLAGS") let mut command = Command::new(cargo);
.env_remove("CARGO_ENCODED_RUSTFLAGS") let status = command
.env_remove("CARGO_LLVM_COV") .current_dir(workspace_root())
.env_remove("CARGO_LLVM_COV_TARGET_DIR") .env_remove("CARGO_BUILD_RUSTFLAGS")
.env_remove("CARGO_TARGET_DIR") .env_remove("CARGO_ENCODED_RUSTFLAGS")
.env_remove("LLVM_COV") .env_remove("CARGO_LLVM_COV")
.env_remove("RUSTFLAGS") .env_remove("CARGO_LLVM_COV_TARGET_DIR")
.env_remove("RUSTDOCFLAGS") .env_remove("CARGO_TARGET_DIR")
.env_remove("LLVM_PROFILE_FILE") .env_remove("LLVM_COV")
.arg("build") .env_remove("RUSTFLAGS")
.arg("--target-dir") .env_remove("RUSTDOCFLAGS")
.arg(&target_dir) .env_remove("LLVM_PROFILE_FILE")
.args(["-p", "lesavka_server", "--bin", name]) .arg("build")
.status() .arg("--target-dir")
.ok()?; .arg(&target_dir)
status .args(["-p", "lesavka_server", "--bin", name])
.success() .status()
.then(|| target_dir.join("debug").join(name)) .ok()?;
.filter(|path| path.exists() && path.is_file()) status
.success()
.then(|| target_dir.join("debug").join(name))
.filter(|path| path.exists() && path.is_file())
})
.clone()
} }
fn find_binary(name: &str) -> Option<PathBuf> { fn find_binary(name: &str) -> Option<PathBuf> {