From 439e7cc26aab9cc4e7cd00a859793f9f97849702 Mon Sep 17 00:00:00 2001 From: Jack May Date: Tue, 11 Jun 2019 11:45:13 -0700 Subject: [PATCH] Add dependent crate test (#4647) automerge --- programs/bpf/build.rs | 2 +- programs/bpf/rust/dep_crate/.gitignore | 3 +++ programs/bpf/rust/dep_crate/Cargo.toml | 23 +++++++++++++++++++++++ programs/bpf/rust/dep_crate/Xargo.toml | 6 ++++++ programs/bpf/rust/dep_crate/src/lib.rs | 22 ++++++++++++++++++++++ programs/bpf/tests/programs.rs | 1 + 6 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 programs/bpf/rust/dep_crate/.gitignore create mode 100644 programs/bpf/rust/dep_crate/Cargo.toml create mode 100644 programs/bpf/rust/dep_crate/Xargo.toml create mode 100644 programs/bpf/rust/dep_crate/src/lib.rs diff --git a/programs/bpf/build.rs b/programs/bpf/build.rs index ce5b2ea4fb..2d025c2f09 100644 --- a/programs/bpf/build.rs +++ b/programs/bpf/build.rs @@ -67,7 +67,7 @@ fn main() { .expect("Unable to create BPF install directory") .success()); - let rust_programs = ["alloc", "iter", "noop", "panic"]; + let rust_programs = ["alloc", "dep_crate", "iter", "noop", "panic"]; for program in rust_programs.iter() { println!( "cargo:warning=(not a warning) Building Rust-based BPF programs: solana_bpf_rust_{}", diff --git a/programs/bpf/rust/dep_crate/.gitignore b/programs/bpf/rust/dep_crate/.gitignore new file mode 100644 index 0000000000..e13de17f65 --- /dev/null +++ b/programs/bpf/rust/dep_crate/.gitignore @@ -0,0 +1,3 @@ +/target/ + +Cargo.lock diff --git a/programs/bpf/rust/dep_crate/Cargo.toml b/programs/bpf/rust/dep_crate/Cargo.toml new file mode 100644 index 0000000000..c76e6fb368 --- /dev/null +++ b/programs/bpf/rust/dep_crate/Cargo.toml @@ -0,0 +1,23 @@ + +# Note: This crate must be built using build.sh + +[package] +name = "solana-bpf-rust-dep-crate" +version = "0.16.0" +description = "Solana BPF iter program written in Rust" +authors = ["Solana Maintainers "] +repository = "https://github.com/solana-labs/solana" +license = "Apache-2.0" +homepage = "https://solana.com/" +edition = "2018" + +[dependencies] +byteorder = { version = "1", default-features = false } +solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust-utils", version = "0.16.0" } + +[workspace] +members = [] + +[lib] +crate-type = ["cdylib"] +name = "solana_bpf_rust_dep_crate" diff --git a/programs/bpf/rust/dep_crate/Xargo.toml b/programs/bpf/rust/dep_crate/Xargo.toml new file mode 100644 index 0000000000..480d86ea29 --- /dev/null +++ b/programs/bpf/rust/dep_crate/Xargo.toml @@ -0,0 +1,6 @@ +[dependencies.compiler_builtins] +path = "../../../../sdk/bpf/rust-bpf-sysroot/src/compiler-builtins" +features = ["c", "mem"] + +[target.bpfel-unknown-unknown.dependencies] +alloc = { path = "../../../../sdk/bpf/rust-bpf-sysroot/src/liballoc" } \ No newline at end of file diff --git a/programs/bpf/rust/dep_crate/src/lib.rs b/programs/bpf/rust/dep_crate/src/lib.rs new file mode 100644 index 0000000000..3bed494ea9 --- /dev/null +++ b/programs/bpf/rust/dep_crate/src/lib.rs @@ -0,0 +1,22 @@ +//! @brief Example Rust-based BPF program tests dependent crates + +#![no_std] + +extern crate solana_sdk_bpf_utils; + +use byteorder::{ByteOrder, LittleEndian}; +use solana_sdk_bpf_utils::log::*; + +#[no_mangle] +pub extern "C" fn entrypoint(_input: *mut u8) -> bool { + let mut buf = [0; 4]; + LittleEndian::write_u32(&mut buf, 1_000_000); + assert_eq!(1_000_000, LittleEndian::read_u32(&buf)); + + let mut buf = [0; 2]; + LittleEndian::write_i16(&mut buf, -5_000); + assert_eq!(-5_000, LittleEndian::read_i16(&buf)); + + sol_log("Success"); + true +} diff --git a/programs/bpf/tests/programs.rs b/programs/bpf/tests/programs.rs index 84c678f311..b1597acfaa 100644 --- a/programs/bpf/tests/programs.rs +++ b/programs/bpf/tests/programs.rs @@ -118,6 +118,7 @@ mod bpf { ("solana_bpf_rust_alloc", true), ("solana_bpf_rust_iter", true), ("solana_bpf_rust_noop", true), + ("solana_bpf_rust_dep_crate", true), ("solana_bpf_rust_panic", false), ]; for program in programs.iter() {