1f36631777
- CI (release.yml/build.yml): remove fetch-nym + AWS_LC_SYS_PREBUILT_NASM; the default cargo build --release is Tor/arti only now (nip44 fetch kept). - Cargo.toml: nym-sdk is optional behind the `nym` feature so the default build never pulls it. - Delete the dead Nym-era probes (xrelay_smoke, connect_timing, tunnel_measure) that referenced the removed Nym API and broke `cargo test`. - Untrack the internal E2E harnesses (e2e.rs, nostr_e2e.rs) via .gitignore; gate `mod e2e` behind the `e2e-internal` feature so clones still compile. - Refresh stale Nym comments in build.rs and the build scripts.
89 lines
3.0 KiB
Rust
89 lines
3.0 KiB
Rust
use std::env;
|
|
use std::path::PathBuf;
|
|
use std::process::Command;
|
|
|
|
/// The GRIM commit Goblin forked from; builds count commits on top of it.
|
|
const GOBLIN_FORK_BASE: &str = "b51a46b";
|
|
|
|
fn main() {
|
|
built::write_built_file().expect("Failed to acquire build-time information");
|
|
|
|
// Goblin versioning is build-based: Build N = commits since the fork.
|
|
// An explicit GOBLIN_BUILD env wins (CI builds from the public single-commit
|
|
// squash where the fork base isn't an ancestor, so the git count can't run);
|
|
// otherwise count commits since the fork; "dev" only as a last resort.
|
|
let build = env::var("GOBLIN_BUILD")
|
|
.ok()
|
|
.map(|s| s.trim().to_string())
|
|
.filter(|s| !s.is_empty())
|
|
.or_else(|| {
|
|
Command::new("git")
|
|
.args([
|
|
"rev-list",
|
|
"--count",
|
|
&format!("{}..HEAD", GOBLIN_FORK_BASE),
|
|
])
|
|
.output()
|
|
.ok()
|
|
.filter(|o| o.status.success())
|
|
.and_then(|o| String::from_utf8(o.stdout).ok())
|
|
.map(|s| s.trim().to_string())
|
|
.filter(|s| !s.is_empty())
|
|
})
|
|
.unwrap_or_else(|| "dev".to_string());
|
|
println!("cargo:rustc-env=GOBLIN_BUILD={}", build);
|
|
// .git/HEAD only changes on branch switches; the reflog is appended on
|
|
// every commit, so the build number stays current.
|
|
println!("cargo:rerun-if-changed=.git/HEAD");
|
|
println!("cargo:rerun-if-changed=.git/logs/HEAD");
|
|
println!("cargo:rerun-if-env-changed=GOBLIN_BUILD");
|
|
|
|
// Setting up git hooks in the project: rustfmt and so on.
|
|
let git_hooks = format!(
|
|
"git config core.hooksPath {}",
|
|
PathBuf::from("./.hooks").to_str().unwrap()
|
|
);
|
|
|
|
if cfg!(target_os = "windows") {
|
|
Command::new("cmd")
|
|
.args(["/C", &git_hooks])
|
|
.output()
|
|
.expect("failed to execute git config for hooks");
|
|
} else {
|
|
Command::new("sh")
|
|
.args(["-c", &git_hooks])
|
|
.output()
|
|
.expect("failed to execute git config for hooks");
|
|
}
|
|
|
|
// Goblin's private transport is Tor via embedded arti (see src/tor/), linked
|
|
// in-process — no sidecar subprocess and no bundled/embedded helper binary.
|
|
// There is nothing transport-related to build or embed here.
|
|
|
|
// Embed the Goblin icon into goblin.exe so Explorer, the taskbar and Alt-Tab
|
|
// show it even for the bare exe (the .msi shortcuts already carry it). No-op
|
|
// on every non-Windows platform.
|
|
embed_windows_icon();
|
|
}
|
|
|
|
/// Embed `wix/Product.ico` (the yellow Goblin icon) as goblin.exe's application
|
|
/// icon resource. Gated to Windows hosts — that's where the `winresource`
|
|
/// build-dependency is compiled and where the MSVC resource compiler (`rc.exe`,
|
|
/// shipped on the windows-latest runner) is available; our Windows builds are
|
|
/// always native MSVC, so host == target == windows.
|
|
#[cfg(windows)]
|
|
fn embed_windows_icon() {
|
|
if env::var("CARGO_CFG_TARGET_OS").as_deref() != Ok("windows") {
|
|
return;
|
|
}
|
|
let mut res = winresource::WindowsResource::new();
|
|
res.set_icon("wix/Product.ico");
|
|
if let Err(e) = res.compile() {
|
|
// Don't fail the build over the icon — just flag it.
|
|
println!("cargo:warning=winresource icon embed failed: {e}");
|
|
}
|
|
}
|
|
|
|
#[cfg(not(windows))]
|
|
fn embed_windows_icon() {}
|