fix(build): re-run logos-delivery build script when the native lib appears

This commit is contained in:
Mojtaba Chenani 2026-08-04 19:05:19 +02:00
parent 71d3217e64
commit d85b7dae80
No known key found for this signature in database
GPG Key ID: A6950679F94D8B56
2 changed files with 17 additions and 2 deletions

View File

@ -4,8 +4,15 @@ A terminal chat application built on top of libchat. End-to-end encrypted messag
## Building
[logos-delivery](https://github.com/logos-messaging/logos-delivery) is exposed as a Nix package.
Build it once, then point `LOGOS_DELIVERY_LIB_DIR` at the result:
`chat-cli` links the native [logos-delivery](https://github.com/logos-messaging/logos-delivery)
library. The dev shell builds it and sets `LOGOS_DELIVERY_LIB_DIR` for you:
```bash
nix develop
cargo build --release -p chat-cli
```
Or build the library yourself and point `LOGOS_DELIVERY_LIB_DIR` at it:
```bash
nix build .#logos-delivery

View File

@ -94,6 +94,11 @@ fn resolve_lib_dir(dir: &str) -> Option<PathBuf> {
let manifest = std::env::var("CARGO_MANIFEST_DIR").ok()?;
Path::new(&find_flake_root(&manifest)?).join(path)
};
// Re-run once the lib appears, so build order (nix build vs. cargo) is free.
println!("cargo:rerun-if-changed={}", anchored.display());
if let Some(parent) = anchored.parent() {
println!("cargo:rerun-if-changed={}", parent.display());
}
anchored.canonicalize().ok()
}
@ -149,8 +154,11 @@ fn nix_build_logos_delivery() -> Option<String> {
println!("cargo:rerun-if-changed={flake_root}/flake.lock");
// Enable flakes inline so the fallback works without global nix.conf setup.
let output = Command::new("nix")
.args([
"--extra-experimental-features",
"nix-command flakes",
"build",
".#logos-delivery",
"--no-link",