diff --git a/Cargo.lock b/Cargo.lock index 2ad6bf0aa9..b9190e478b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2031,11 +2031,15 @@ dependencies = [ name = "solana-bpf-programs" version = "0.12.0" dependencies = [ - "solana 0.12.0", + "bincode 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "elf 0.0.10 (registry+https://github.com/rust-lang/crates.io-index)", "solana-bpfloader 0.12.0", "solana-logger 0.12.0", "solana-runtime 0.12.0", "solana-sdk 0.12.0", + "solana_rbpf 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2044,14 +2048,12 @@ version = "0.12.0" dependencies = [ "bincode 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "elf 0.0.10 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", "solana-logger 0.12.0", "solana-sdk 0.12.0", "solana_rbpf 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] diff --git a/ci/test-bench.sh b/ci/test-bench.sh index 0d715b694b..a3e4250783 100755 --- a/ci/test-bench.sh +++ b/ci/test-bench.sh @@ -42,12 +42,12 @@ BENCH_ARTIFACT=current_bench_results.log _ cargo +nightly bench ${V:+--verbose} \ -- -Z unstable-options --format=json | tee "$BENCH_FILE" -# Run bpf_loader bench with bpf_c feature enabled -echo --- program/bpf_loader bench --features=bpf_c +# Run bpf benches +echo --- program/bpf ( set -x - cd programs/bpf_loader - cargo +nightly bench ${V:+--verbose} --features="bpf_c" \ + cd programs/bpf + cargo +nightly bench ${V:+--verbose} --features=bpf_c \ -- -Z unstable-options --format=json --nocapture | tee -a ../../../"$BENCH_FILE" ) diff --git a/ci/test-stable.sh b/ci/test-stable.sh index bdb602a102..653b3f53ca 100755 --- a/ci/test-stable.sh +++ b/ci/test-stable.sh @@ -44,21 +44,12 @@ test-stable-perf) exit 0 } - # Run program package with these features - PROGRAM_FEATURES=bpf_c,bpf_rust - - # Run all BPF C tests + # BPF program tests _ make -C programs/bpf/c tests + _ programs/bpf/rust/noop/build.sh # Must be built out of band + _ cargo test --manifest-path programs/bpf/Cargo.toml --no-default-features --features=bpf_c,bpf_rust - # Must be built out of band - _ pushd programs/bpf/rust/noop - ./build.sh - popd - - _ cargo test --manifest-path programs/bpf/Cargo.toml --no-default-features --features="$PROGRAM_FEATURES" - _ cargo test --manifest-path programs/bpf_loader/Cargo.toml --no-default-features --features="$PROGRAM_FEATURES" - - # Run root package tests witht these features + # Run root package tests with these features ROOT_FEATURES=erasure,chacha if [[ $(uname) = Darwin ]]; then ./build-perf-libs.sh diff --git a/programs/bpf/Cargo.toml b/programs/bpf/Cargo.toml index d9cd672982..de30ebcf95 100644 --- a/programs/bpf/Cargo.toml +++ b/programs/bpf/Cargo.toml @@ -11,15 +11,21 @@ license = "Apache-2.0" edition = "2018" [features] -bpf_c = ["solana-bpfloader/bpf_c"] -bpf_rust = ["solana-bpfloader/bpf_rust"] -chacha = ["solana/chacha"] -cuda = ["solana/cuda"] -erasure = ["solana/erasure"] +bpf_c = [] +bpf_rust = [] + +[build-dependencies] +walkdir = "2" [dependencies] -solana = { path = "../../core", version = "0.12.0" } +bincode = "1.1.2" +byteorder = "1.3.1" +elf = "0.0.10" +solana_rbpf = "=0.1.10" solana-bpfloader = { path = "../bpf_loader", version = "0.12.0" } solana-logger = { path = "../../logger", version = "0.12.0" } solana-runtime = { path = "../../runtime", version = "0.12.0" } solana-sdk = { path = "../../sdk", version = "0.12.0" } + +[[bench]] +name = "bpf_loader" diff --git a/programs/bpf_loader/benches/bpf_loader.rs b/programs/bpf/benches/bpf_loader.rs similarity index 100% rename from programs/bpf_loader/benches/bpf_loader.rs rename to programs/bpf/benches/bpf_loader.rs diff --git a/programs/bpf_loader/build.rs b/programs/bpf/build.rs similarity index 78% rename from programs/bpf_loader/build.rs rename to programs/bpf/build.rs index 9ed1e05d4c..702596e8b8 100644 --- a/programs/bpf_loader/build.rs +++ b/programs/bpf/build.rs @@ -36,17 +36,13 @@ fn main() { + &"/bpf".to_string(); rerun_if_changed( - &[ - "../../sdk/bpf/bpf.ld", - "../../sdk/bpf/bpf.mk", - "../bpf/c/makefile", - ], - &["../../sdk/bpf/inc", "../../sdk/bpf/scripts", "../bpf/c/src"], + &["../../sdk/bpf/bpf.ld", "../../sdk/bpf/bpf.mk", "c/makefile"], + &["../../sdk/bpf/inc", "../../sdk/bpf/scripts", "c/src"], ); println!("cargo:warning=(not a warning) Compiling C-based BPF programs"); let status = Command::new("make") - .current_dir("../bpf/c") + .current_dir("c") .arg("programs") .arg(&out_dir) .status() @@ -59,10 +55,8 @@ fn main() { let install_dir = "../../../../target/".to_string() + &env::var("PROFILE").unwrap() + &"/bpf".to_string(); - if !Path::new( - "../bpf/rust/noop/target/bpfel-unknown-unknown/release/solana_bpf_rust_noop.so", - ) - .is_file() + if !Path::new("rust/noop/target/bpfel-unknown-unknown/release/solana_bpf_rust_noop.so") + .is_file() { // Cannot build Rust BPF programs as part of main build because // to build it requires calling Cargo with different parameters which @@ -75,19 +69,19 @@ fn main() { rerun_if_changed( &[ - "../bpf/rust/noop/bpf.ld", - "../bpf/rust/noop/build.sh", - "../bpf/rust/noop/Cargo.toml", - "../bpf/rust/noop/target/bpfel-unknown-unknown/release/solana_bpf_rust_noop.so", + "rust/noop/bpf.ld", + "rust/noop/build.sh", + "rust/noop/Cargo.toml", + "rust/noop/target/bpfel-unknown-unknown/release/solana_bpf_rust_noop.so", ], - &["../bpf/rust/noop/src"], + &["rust/noop/src"], ); println!( "cargo:warning=(not a warning) Installing Rust-based BPF program: solana_bpf_rust_noop" ); let status = Command::new("mkdir") - .current_dir("../bpf/rust/noop") + .current_dir("rust/noop") .arg("-p") .arg(&install_dir) .status() @@ -95,7 +89,7 @@ fn main() { assert!(status.success()); let status = Command::new("cp") - .current_dir("../bpf/rust/noop") + .current_dir("rust/noop") .arg("target/bpfel-unknown-unknown/release/solana_bpf_rust_noop.so") .arg(&install_dir) .status() diff --git a/programs/bpf_loader/Cargo.toml b/programs/bpf_loader/Cargo.toml index 65fca46b04..16561efdfd 100644 --- a/programs/bpf_loader/Cargo.toml +++ b/programs/bpf_loader/Cargo.toml @@ -8,14 +8,9 @@ license = "Apache-2.0" homepage = "https://solana.com/" edition = "2018" -[features] -bpf_c = [] -bpf_rust = [] - [dependencies] bincode = "1.1.2" byteorder = "1.3.1" -elf = "0.0.10" libc = "0.2.49" log = "0.4.2" solana_rbpf = "=0.1.10" @@ -23,13 +18,6 @@ serde = "1.0.89" solana-logger = { path = "../../logger", version = "0.12.0" } solana-sdk = { path = "../../sdk", version = "0.12.0" } -[build-dependencies] -walkdir = "2" - [lib] name = "solana_bpf_loader" crate-type = ["lib", "cdylib"] - -[[bench]] -name = "bpf_loader" -