rpm-ostree/build.rs
Colin Walters 588541c60d Move libdnf build over to Cargo
This is now further migration towards Cargo/Rust possible
because we switched our main binary.  We've had an internal
`libdnf-sys` crate for a while, but now it can take over
the build of the underlying library too (like many `-sys`
crates support).

This itself is just an incremental step towards migrating
the main rpm-ostree build system to e.g. cmake too (or
perhaps directly with the `cc` crate, not sure yet) and
driving it via `cargo` too.
2021-02-04 10:59:20 -05:00

39 lines
1.3 KiB
Rust

use anyhow::Result;
fn detect_fedora_feature() -> Result<()> {
if !std::path::Path::new("/usr/lib/os-release").exists() {
return Ok(());
}
let p = std::process::Command::new("sh")
.args(&["-c", ". /usr/lib/os-release && echo ${ID}"])
.stdout(std::process::Stdio::piped())
.output()?;
let out = std::str::from_utf8(&p.stdout).ok().map(|s| s.trim());
if out == Some("fedora") {
println!(r#"cargo:rustc-cfg=feature="fedora-integration""#)
}
Ok(())
}
fn main() -> Result<()> {
let cwd = std::env::current_dir()?;
let cwd = cwd.to_str().expect("utf8 pwd");
println!("cargo:rustc-link-search={}/.libs", cwd);
println!("cargo:rustc-link-lib=static=rpmostreeinternals");
println!(
"cargo:rerun-if-changed={}/.libs/librpmostreeinternals.a",
cwd
);
println!("cargo:rustc-link-lib=cap");
println!("cargo:rustc-link-lib=rt");
println!("cargo:rustc-link-lib=stdc++");
// https://github.com/ostreedev/ostree/commit/1f832597fc83fda6cb8daf48c4495a9e1590774c
// https://github.com/rust-lang/rust/issues/47714
println!("cargo:rustc-link-lib=dl");
println!("cargo:rustc-link-lib=m");
println!("cargo:rustc-link-lib=rpmostree-1");
system_deps::Config::new().probe()?;
detect_fedora_feature()?;
Ok(())
}