mirror of https://github.com/aya-rs/aya
xtask: inline build_ebpf
parent
8c61fc9ea6
commit
bc9f059d53
@ -1,56 +0,0 @@
|
||||
use std::{path::PathBuf, process::Command};
|
||||
|
||||
use anyhow::Result;
|
||||
use clap::Parser;
|
||||
|
||||
use crate::utils::{exec, workspace_root};
|
||||
|
||||
#[derive(Debug, Copy, Clone)]
|
||||
pub enum Architecture {
|
||||
BpfEl,
|
||||
BpfEb,
|
||||
}
|
||||
|
||||
impl std::str::FromStr for Architecture {
|
||||
type Err = &'static str;
|
||||
|
||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||
Ok(match s {
|
||||
"bpfel-unknown-none" => Architecture::BpfEl,
|
||||
"bpfeb-unknown-none" => Architecture::BpfEb,
|
||||
_ => return Err("invalid target"),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl std::fmt::Display for Architecture {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
f.write_str(match self {
|
||||
Architecture::BpfEl => "bpfel-unknown-none",
|
||||
Architecture::BpfEb => "bpfeb-unknown-none",
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Parser)]
|
||||
pub struct BuildEbpfOptions {
|
||||
/// Set the endianness of the BPF target
|
||||
#[clap(default_value = "bpfel-unknown-none", long)]
|
||||
pub target: Architecture,
|
||||
}
|
||||
|
||||
pub fn build_ebpf(opts: BuildEbpfOptions) -> Result<()> {
|
||||
let BuildEbpfOptions { target } = opts;
|
||||
|
||||
let mut dir = PathBuf::from(workspace_root());
|
||||
dir.push("test/integration-ebpf");
|
||||
|
||||
exec(
|
||||
Command::new("cargo")
|
||||
.current_dir(&dir)
|
||||
.args(["+nightly", "build", "--release", "--target"])
|
||||
.arg(target.to_string())
|
||||
.args(["-Z", "build-std=core"])
|
||||
.current_dir(&dir),
|
||||
)
|
||||
}
|
@ -1,24 +0,0 @@
|
||||
use std::{cell::OnceCell, process::Command};
|
||||
|
||||
use anyhow::{bail, Context as _, Result};
|
||||
|
||||
pub fn workspace_root() -> &'static str {
|
||||
static mut WORKSPACE_ROOT: OnceCell<String> = OnceCell::new();
|
||||
unsafe { &mut WORKSPACE_ROOT }.get_or_init(|| {
|
||||
let cmd = cargo_metadata::MetadataCommand::new();
|
||||
cmd.exec().unwrap().workspace_root.to_string()
|
||||
})
|
||||
}
|
||||
|
||||
pub fn exec(cmd: &mut Command) -> Result<()> {
|
||||
let status = cmd
|
||||
.status()
|
||||
.with_context(|| format!("failed to run {cmd:?}"))?;
|
||||
match status.code() {
|
||||
Some(code) => match code {
|
||||
0 => Ok(()),
|
||||
code => bail!("{cmd:?} exited with code {code}"),
|
||||
},
|
||||
None => bail!("{cmd:?} terminated by signal"),
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue