xtask: Avoid lossy string conversion

pull/639/head
Tamir Duberstein 1 year ago
parent 5a2906a6c9
commit 7067db450a
No known key found for this signature in database

@ -1,5 +1,8 @@
use std::{
env, fs,
borrow::Cow,
env,
ffi::{OsStr, OsString},
fs,
path::{Path, PathBuf},
process::Command,
};
@ -77,9 +80,12 @@ fn build_rust_ebpf(opts: &BuildEbpfOptions) -> anyhow::Result<()> {
fn get_libbpf_headers<P: AsRef<Path>>(libbpf_dir: P, include_path: P) -> anyhow::Result<()> {
let dir = include_path.as_ref();
fs::create_dir_all(dir)?;
let mut includedir = OsString::new();
includedir.push("INCLUDEDIR=");
includedir.push(dir.as_os_str());
let status = Command::new("make")
.current_dir(libbpf_dir.as_ref().join("src"))
.arg(format!("INCLUDEDIR={}", dir.as_os_str().to_string_lossy()))
.arg(includedir)
.arg("install_headers")
.status()
.expect("failed to build get libbpf headers");
@ -119,17 +125,18 @@ fn compile_with_clang<P: Clone + AsRef<Path>>(
out: P,
include_path: P,
) -> anyhow::Result<()> {
let clang = match env::var("CLANG") {
Ok(val) => val,
Err(_) => String::from("/usr/bin/clang"),
let clang: Cow<'_, _> = match env::var_os("CLANG") {
Some(val) => val.into(),
None => OsStr::new("/usr/bin/clang").into(),
};
let arch = match std::env::consts::ARCH {
let arch = match env::consts::ARCH {
"x86_64" => "x86",
"aarch64" => "arm64",
_ => std::env::consts::ARCH,
arch => arch,
};
let mut cmd = Command::new(clang);
cmd.arg(format!("-I{}", include_path.as_ref().to_string_lossy()))
cmd.arg("-I")
.arg(include_path.as_ref())
.arg("-g")
.arg("-O2")
.arg("-target")

Loading…
Cancel
Save