@ -1,5 +1,4 @@
use std ::{
collections ::{ HashMap , HashSet } ,
env ,
ffi ::OsString ,
fmt ::Write as _ ,
@ -10,9 +9,9 @@ use std::{
} ;
use cargo_metadata ::{
Artifact , CompilerMessage , Dependency, Message, Metadata , MetadataCommand , Package , Target ,
Artifact , CompilerMessage , Message, Metadata , MetadataCommand , Package , Target ,
} ;
use xtask ::{ create_symlink_to_binary, exec, AYA_BUILD_INTEGRATION_BPF , LIBBPF_DIR } ;
use xtask ::{ exec, AYA_BUILD_INTEGRATION_BPF , LIBBPF_DIR } ;
fn main ( ) {
println! ( "cargo:rerun-if-env-changed={}" , AYA_BUILD_INTEGRATION_BPF ) ;
@ -23,16 +22,11 @@ fn main() {
. map ( Result ::unwrap )
. unwrap_or_default ( ) ;
const INTEGRATION_EBPF_PACKAGE : & str = "integration-ebpf" ;
let Metadata { packages , .. } = MetadataCommand ::new ( ) . no_deps ( ) . exec ( ) . unwrap ( ) ;
let packages: HashMap < String , _ > = packages
let integration_ebpf_package = packages
. into_iter ( )
. map ( | package | {
let Package { name , .. } = & package ;
( name . clone ( ) , package )
} )
. collect ( ) ;
. find ( | Package { name , .. } | name = = "integration-ebpf" )
. unwrap ( ) ;
let manifest_dir = env ::var_os ( "CARGO_MANIFEST_DIR" ) . unwrap ( ) ;
let manifest_dir = PathBuf ::from ( manifest_dir ) ;
@ -116,27 +110,8 @@ fn main() {
let target = format! ( "{target}-unknown-none" ) ;
// Teach cargo about our dependencies.
let mut visited = HashSet ::new ( ) ;
let mut frontier = vec! [ INTEGRATION_EBPF_PACKAGE ] ;
while let Some ( package ) = frontier . pop ( ) {
if ! visited . insert ( package ) {
continue ;
}
let Package { dependencies , .. } = packages . get ( package ) . unwrap ( ) ;
for Dependency { name , path , .. } in dependencies {
if let Some ( path ) = path {
println! ( "cargo:rerun-if-changed={}" , path . as_str ( ) ) ;
frontier . push ( name ) ;
}
}
}
let bpf_linker_symlink = create_symlink_to_binary ( & out_dir , "bpf-linker" ) . unwrap ( ) ;
println! (
"cargo:rerun-if-changed={}" ,
bpf_linker_symlink . to_str ( ) . unwrap ( )
) ;
let Package { manifest_path , .. } = integration_ebpf_package ;
let integration_ebpf_dir = manifest_path . parent ( ) . unwrap ( ) ;
let mut cmd = Command ::new ( "cargo" ) ;
cmd . args ( [
@ -150,8 +125,6 @@ fn main() {
] ) ;
// Workaround to make sure that the rust-toolchain.toml is respected.
let Package { manifest_path , .. } = packages . get ( INTEGRATION_EBPF_PACKAGE ) . unwrap ( ) ;
let integration_ebpf_dir = manifest_path . parent ( ) . unwrap ( ) ;
cmd . env_remove ( "RUSTUP_TOOLCHAIN" )
. current_dir ( integration_ebpf_dir ) ;
@ -209,7 +182,7 @@ fn main() {
fs ::write ( & dst , [ ] ) . unwrap_or_else ( | err | panic! ( "failed to create {dst:?}: {err}" ) ) ;
}
let Package { targets , .. } = packages. get ( INTEGRATION_EBPF_PACKAGE ) . unwrap ( ) ;
let Package { targets , .. } = integration_ebpf_ package;
for Target { name , kind , .. } in targets {
if * kind ! = [ "bin" ] {
continue ;