Defeature bpf_loader; bpf_{c,rust} features now confined to programs/bpf

This commit is contained in:
Michael Vines 2019-03-04 10:08:21 -08:00 committed by Grimes
parent d0be16b49a
commit 03d6c9a552
7 changed files with 37 additions and 56 deletions

8
Cargo.lock generated
View File

@ -2031,11 +2031,15 @@ dependencies = [
name = "solana-bpf-programs" name = "solana-bpf-programs"
version = "0.12.0" version = "0.12.0"
dependencies = [ 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-bpfloader 0.12.0",
"solana-logger 0.12.0", "solana-logger 0.12.0",
"solana-runtime 0.12.0", "solana-runtime 0.12.0",
"solana-sdk 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]] [[package]]
@ -2044,14 +2048,12 @@ version = "0.12.0"
dependencies = [ dependencies = [
"bincode 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "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)", "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)", "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)", "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)", "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.12.0", "solana-logger 0.12.0",
"solana-sdk 0.12.0", "solana-sdk 0.12.0",
"solana_rbpf 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "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]] [[package]]

View File

@ -42,12 +42,12 @@ BENCH_ARTIFACT=current_bench_results.log
_ cargo +nightly bench ${V:+--verbose} \ _ cargo +nightly bench ${V:+--verbose} \
-- -Z unstable-options --format=json | tee "$BENCH_FILE" -- -Z unstable-options --format=json | tee "$BENCH_FILE"
# Run bpf_loader bench with bpf_c feature enabled # Run bpf benches
echo --- program/bpf_loader bench --features=bpf_c echo --- program/bpf
( (
set -x set -x
cd programs/bpf_loader cd programs/bpf
cargo +nightly bench ${V:+--verbose} --features="bpf_c" \ cargo +nightly bench ${V:+--verbose} --features=bpf_c \
-- -Z unstable-options --format=json --nocapture | tee -a ../../../"$BENCH_FILE" -- -Z unstable-options --format=json --nocapture | tee -a ../../../"$BENCH_FILE"
) )

View File

@ -44,21 +44,12 @@ test-stable-perf)
exit 0 exit 0
} }
# Run program package with these features # BPF program tests
PROGRAM_FEATURES=bpf_c,bpf_rust
# Run all BPF C tests
_ make -C programs/bpf/c 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 # Run root package tests with these features
_ 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
ROOT_FEATURES=erasure,chacha ROOT_FEATURES=erasure,chacha
if [[ $(uname) = Darwin ]]; then if [[ $(uname) = Darwin ]]; then
./build-perf-libs.sh ./build-perf-libs.sh

View File

@ -11,15 +11,21 @@ license = "Apache-2.0"
edition = "2018" edition = "2018"
[features] [features]
bpf_c = ["solana-bpfloader/bpf_c"] bpf_c = []
bpf_rust = ["solana-bpfloader/bpf_rust"] bpf_rust = []
chacha = ["solana/chacha"]
cuda = ["solana/cuda"] [build-dependencies]
erasure = ["solana/erasure"] walkdir = "2"
[dependencies] [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-bpfloader = { path = "../bpf_loader", version = "0.12.0" }
solana-logger = { path = "../../logger", version = "0.12.0" } solana-logger = { path = "../../logger", version = "0.12.0" }
solana-runtime = { path = "../../runtime", version = "0.12.0" } solana-runtime = { path = "../../runtime", version = "0.12.0" }
solana-sdk = { path = "../../sdk", version = "0.12.0" } solana-sdk = { path = "../../sdk", version = "0.12.0" }
[[bench]]
name = "bpf_loader"

View File

@ -36,17 +36,13 @@ fn main() {
+ &"/bpf".to_string(); + &"/bpf".to_string();
rerun_if_changed( rerun_if_changed(
&[ &["../../sdk/bpf/bpf.ld", "../../sdk/bpf/bpf.mk", "c/makefile"],
"../../sdk/bpf/bpf.ld", &["../../sdk/bpf/inc", "../../sdk/bpf/scripts", "c/src"],
"../../sdk/bpf/bpf.mk",
"../bpf/c/makefile",
],
&["../../sdk/bpf/inc", "../../sdk/bpf/scripts", "../bpf/c/src"],
); );
println!("cargo:warning=(not a warning) Compiling C-based BPF programs"); println!("cargo:warning=(not a warning) Compiling C-based BPF programs");
let status = Command::new("make") let status = Command::new("make")
.current_dir("../bpf/c") .current_dir("c")
.arg("programs") .arg("programs")
.arg(&out_dir) .arg(&out_dir)
.status() .status()
@ -59,10 +55,8 @@ fn main() {
let install_dir = let install_dir =
"../../../../target/".to_string() + &env::var("PROFILE").unwrap() + &"/bpf".to_string(); "../../../../target/".to_string() + &env::var("PROFILE").unwrap() + &"/bpf".to_string();
if !Path::new( if !Path::new("rust/noop/target/bpfel-unknown-unknown/release/solana_bpf_rust_noop.so")
"../bpf/rust/noop/target/bpfel-unknown-unknown/release/solana_bpf_rust_noop.so", .is_file()
)
.is_file()
{ {
// Cannot build Rust BPF programs as part of main build because // Cannot build Rust BPF programs as part of main build because
// to build it requires calling Cargo with different parameters which // to build it requires calling Cargo with different parameters which
@ -75,19 +69,19 @@ fn main() {
rerun_if_changed( rerun_if_changed(
&[ &[
"../bpf/rust/noop/bpf.ld", "rust/noop/bpf.ld",
"../bpf/rust/noop/build.sh", "rust/noop/build.sh",
"../bpf/rust/noop/Cargo.toml", "rust/noop/Cargo.toml",
"../bpf/rust/noop/target/bpfel-unknown-unknown/release/solana_bpf_rust_noop.so", "rust/noop/target/bpfel-unknown-unknown/release/solana_bpf_rust_noop.so",
], ],
&["../bpf/rust/noop/src"], &["rust/noop/src"],
); );
println!( println!(
"cargo:warning=(not a warning) Installing Rust-based BPF program: solana_bpf_rust_noop" "cargo:warning=(not a warning) Installing Rust-based BPF program: solana_bpf_rust_noop"
); );
let status = Command::new("mkdir") let status = Command::new("mkdir")
.current_dir("../bpf/rust/noop") .current_dir("rust/noop")
.arg("-p") .arg("-p")
.arg(&install_dir) .arg(&install_dir)
.status() .status()
@ -95,7 +89,7 @@ fn main() {
assert!(status.success()); assert!(status.success());
let status = Command::new("cp") 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("target/bpfel-unknown-unknown/release/solana_bpf_rust_noop.so")
.arg(&install_dir) .arg(&install_dir)
.status() .status()

View File

@ -8,14 +8,9 @@ license = "Apache-2.0"
homepage = "https://solana.com/" homepage = "https://solana.com/"
edition = "2018" edition = "2018"
[features]
bpf_c = []
bpf_rust = []
[dependencies] [dependencies]
bincode = "1.1.2" bincode = "1.1.2"
byteorder = "1.3.1" byteorder = "1.3.1"
elf = "0.0.10"
libc = "0.2.49" libc = "0.2.49"
log = "0.4.2" log = "0.4.2"
solana_rbpf = "=0.1.10" solana_rbpf = "=0.1.10"
@ -23,13 +18,6 @@ serde = "1.0.89"
solana-logger = { path = "../../logger", version = "0.12.0" } solana-logger = { path = "../../logger", version = "0.12.0" }
solana-sdk = { path = "../../sdk", version = "0.12.0" } solana-sdk = { path = "../../sdk", version = "0.12.0" }
[build-dependencies]
walkdir = "2"
[lib] [lib]
name = "solana_bpf_loader" name = "solana_bpf_loader"
crate-type = ["lib", "cdylib"] crate-type = ["lib", "cdylib"]
[[bench]]
name = "bpf_loader"