diff --git a/Cargo.lock b/Cargo.lock index cd33bd5cac..e1f9658078 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3699,6 +3699,7 @@ dependencies = [ "bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "bs58 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "chrono 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "generic-array 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)", "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/ci/test-checks.sh b/ci/test-checks.sh index a6ec1ee9c9..c943186c0e 100755 --- a/ci/test-checks.sh +++ b/ci/test-checks.sh @@ -24,7 +24,7 @@ _ ci/nits.sh _ ci/order-crates-for-publishing.py _ book/build.sh -for project in sdk/bpf/rust/{rust-utils,rust-test} programs/bpf/rust/*/ ; do +for project in programs/bpf/rust/*/ ; do echo "+++ do_bpf_check $project" ( cd "$project" diff --git a/programs/bpf/rust/128bit/Cargo.toml b/programs/bpf/rust/128bit/Cargo.toml index 7ce0ac00a5..31612345c9 100644 --- a/programs/bpf/rust/128bit/Cargo.toml +++ b/programs/bpf/rust/128bit/Cargo.toml @@ -12,11 +12,12 @@ homepage = "https://solana.com/" edition = "2018" [dependencies] -solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust/rust-utils", version = "0.19.0-pre0" } +solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false } solana-bpf-rust-128bit-dep = { path = "../128bit_dep", version = "0.19.0-pre0" } -[dev_dependencies] -solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/rust-test", version = "0.19.0-pre0" } +[features] +program = ["solana-sdk/program"] +default = ["program"] [workspace] members = [] diff --git a/programs/bpf/rust/128bit/src/lib.rs b/programs/bpf/rust/128bit/src/lib.rs index 67a24aa762..fe8a06f26f 100644 --- a/programs/bpf/rust/128bit/src/lib.rs +++ b/programs/bpf/rust/128bit/src/lib.rs @@ -1,7 +1,7 @@ //! @brief Example Rust-based BPF program tests loop iteration -extern crate solana_sdk_bpf_utils; -use solana_sdk_bpf_utils::info; +extern crate solana_sdk; +use solana_sdk::info; #[no_mangle] pub extern "C" fn entrypoint(_input: *mut u8) -> bool { diff --git a/programs/bpf/rust/128bit_dep/Cargo.toml b/programs/bpf/rust/128bit_dep/Cargo.toml index 7badfc82df..7ceecccfb4 100644 --- a/programs/bpf/rust/128bit_dep/Cargo.toml +++ b/programs/bpf/rust/128bit_dep/Cargo.toml @@ -12,10 +12,11 @@ homepage = "https://solana.com/" edition = "2018" [dependencies] -solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust/rust-utils", version = "0.19.0-pre0" } +solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false } -[dev_dependencies] -solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/rust-test", version = "0.19.0-pre0" } +[features] +program = ["solana-sdk/program"] +default = ["program"] [workspace] members = [] \ No newline at end of file diff --git a/programs/bpf/rust/128bit_dep/src/lib.rs b/programs/bpf/rust/128bit_dep/src/lib.rs index b34e1b80cf..f4c90cd294 100644 --- a/programs/bpf/rust/128bit_dep/src/lib.rs +++ b/programs/bpf/rust/128bit_dep/src/lib.rs @@ -1,6 +1,6 @@ //! @brief Solana Rust-based BPF program utility functions and types -extern crate solana_sdk_bpf_utils; +extern crate solana_sdk; pub fn uadd(x: u128, y: u128) -> u128 { x + y @@ -36,17 +36,15 @@ pub fn modulo(n: i128, d: i128) -> i128 { #[cfg(test)] mod test { - extern crate std; use super::*; #[test] fn pull_in_externs() { - // Rust on Linux excludes the solana_sdk_bpf_test library unless there is a + // Rust on Linux excludes the externs unless there is a // direct dependency, use this test to force the pull in of the library. // This is not necessary on macos and unfortunate on Linux // Issue #4972 - extern crate solana_sdk_bpf_test; - use solana_sdk_bpf_test::*; + use solana_sdk::program_test::*; unsafe { sol_log_("X".as_ptr(), 1) }; sol_log_64_(1, 2, 3, 4, 5); } diff --git a/programs/bpf/rust/alloc/Cargo.toml b/programs/bpf/rust/alloc/Cargo.toml index ebfbdad525..1f4a56174a 100644 --- a/programs/bpf/rust/alloc/Cargo.toml +++ b/programs/bpf/rust/alloc/Cargo.toml @@ -12,7 +12,11 @@ homepage = "https://solana.com/" edition = "2018" [dependencies] -solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust/rust-utils", version = "0.19.0-pre0" } +solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false } + +[features] +program = ["solana-sdk/program"] +default = ["program"] [workspace] members = [] diff --git a/programs/bpf/rust/alloc/src/lib.rs b/programs/bpf/rust/alloc/src/lib.rs index 9024b2f7ae..1281fd1472 100644 --- a/programs/bpf/rust/alloc/src/lib.rs +++ b/programs/bpf/rust/alloc/src/lib.rs @@ -2,8 +2,8 @@ #[macro_use] extern crate alloc; -extern crate solana_sdk_bpf_utils; -use solana_sdk_bpf_utils::info; +extern crate solana_sdk; +use solana_sdk::info; use std::alloc::Layout; use std::mem; diff --git a/programs/bpf/rust/dep_crate/Cargo.toml b/programs/bpf/rust/dep_crate/Cargo.toml index 3f376e0c66..1a9e0a4c8a 100644 --- a/programs/bpf/rust/dep_crate/Cargo.toml +++ b/programs/bpf/rust/dep_crate/Cargo.toml @@ -13,7 +13,11 @@ edition = "2018" [dependencies] byteorder = { version = "1", default-features = false } -solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust/rust-utils", version = "0.19.0-pre0" } +solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false } + +[features] +program = ["solana-sdk/program"] +default = ["program"] [workspace] members = [] diff --git a/programs/bpf/rust/dep_crate/src/lib.rs b/programs/bpf/rust/dep_crate/src/lib.rs index 1ba0e326e0..3a74dccef3 100644 --- a/programs/bpf/rust/dep_crate/src/lib.rs +++ b/programs/bpf/rust/dep_crate/src/lib.rs @@ -1,8 +1,8 @@ //! @brief Example Rust-based BPF program tests dependent crates -extern crate solana_sdk_bpf_utils; +extern crate solana_sdk; use byteorder::{ByteOrder, LittleEndian}; -use solana_sdk_bpf_utils::info; +use solana_sdk::info; #[no_mangle] pub extern "C" fn entrypoint(_input: *mut u8) -> bool { diff --git a/programs/bpf/rust/external_spend/Cargo.toml b/programs/bpf/rust/external_spend/Cargo.toml index 3e526cfa2d..edf89d0483 100644 --- a/programs/bpf/rust/external_spend/Cargo.toml +++ b/programs/bpf/rust/external_spend/Cargo.toml @@ -12,7 +12,11 @@ homepage = "https://solana.com/" edition = "2018" [dependencies] -solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust/rust-utils", version = "0.19.0-pre0" } +solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false } + +[features] +program = ["solana-sdk/program"] +default = ["program"] [workspace] members = [] diff --git a/programs/bpf/rust/external_spend/src/lib.rs b/programs/bpf/rust/external_spend/src/lib.rs index d4536a0777..705f4c696f 100644 --- a/programs/bpf/rust/external_spend/src/lib.rs +++ b/programs/bpf/rust/external_spend/src/lib.rs @@ -1,8 +1,8 @@ //! @brief Example Rust-based BPF program that moves a lamport from one account to another -extern crate solana_sdk_bpf_utils; -use solana_sdk_bpf_utils::entrypoint; -use solana_sdk_bpf_utils::entrypoint::*; +extern crate solana_sdk; +use solana_sdk::entrypoint; +use solana_sdk::entrypoint::*; entrypoint!(process_instruction); fn process_instruction(ka: &mut [SolKeyedAccount], _info: &SolClusterInfo, _data: &[u8]) -> bool { diff --git a/programs/bpf/rust/iter/Cargo.toml b/programs/bpf/rust/iter/Cargo.toml index 16207e1afd..b17ca2b6ff 100644 --- a/programs/bpf/rust/iter/Cargo.toml +++ b/programs/bpf/rust/iter/Cargo.toml @@ -12,7 +12,11 @@ homepage = "https://solana.com/" edition = "2018" [dependencies] -solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust/rust-utils", version = "0.19.0-pre0" } +solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false } + +[features] +program = ["solana-sdk/program"] +default = ["program"] [workspace] members = [] diff --git a/programs/bpf/rust/iter/src/lib.rs b/programs/bpf/rust/iter/src/lib.rs index 7ddde559ed..8bd046fb90 100644 --- a/programs/bpf/rust/iter/src/lib.rs +++ b/programs/bpf/rust/iter/src/lib.rs @@ -1,7 +1,7 @@ //! @brief Example Rust-based BPF program tests loop iteration -extern crate solana_sdk_bpf_utils; -use solana_sdk_bpf_utils::info; +extern crate solana_sdk; +use solana_sdk::info; #[no_mangle] pub extern "C" fn entrypoint(_input: *mut u8) -> bool { diff --git a/programs/bpf/rust/many_args/Cargo.toml b/programs/bpf/rust/many_args/Cargo.toml index cf4a121cb6..35e4d0d03d 100644 --- a/programs/bpf/rust/many_args/Cargo.toml +++ b/programs/bpf/rust/many_args/Cargo.toml @@ -12,9 +12,13 @@ homepage = "https://solana.com/" edition = "2018" [dependencies] -solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust/rust-utils", version = "0.19.0-pre0" } +solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false } solana-bpf-rust-many-args-dep = { path = "../many_args_dep", version = "0.19.0-pre0" } +[features] +program = ["solana-sdk/program"] +default = ["program"] + [workspace] members = [] diff --git a/programs/bpf/rust/many_args/src/helper.rs b/programs/bpf/rust/many_args/src/helper.rs index 46b888c277..f1861cc0e6 100644 --- a/programs/bpf/rust/many_args/src/helper.rs +++ b/programs/bpf/rust/many_args/src/helper.rs @@ -1,8 +1,8 @@ //! @brief Example Rust-based BPF program tests loop iteration -extern crate solana_sdk_bpf_utils; +extern crate solana_sdk; -use solana_sdk_bpf_utils::log::*; +use solana_sdk::log::*; pub fn many_args( arg1: u64, diff --git a/programs/bpf/rust/many_args/src/lib.rs b/programs/bpf/rust/many_args/src/lib.rs index a70ff12c01..6cee830644 100644 --- a/programs/bpf/rust/many_args/src/lib.rs +++ b/programs/bpf/rust/many_args/src/lib.rs @@ -1,8 +1,8 @@ //! @brief Example Rust-based BPF program tests loop iteration mod helper; -extern crate solana_sdk_bpf_utils; -use solana_sdk_bpf_utils::info; +extern crate solana_sdk; +use solana_sdk::info; #[no_mangle] pub extern "C" fn entrypoint(_input: *mut u8) -> bool { diff --git a/programs/bpf/rust/many_args_dep/Cargo.toml b/programs/bpf/rust/many_args_dep/Cargo.toml index aa889c8511..0e2c6ce390 100644 --- a/programs/bpf/rust/many_args_dep/Cargo.toml +++ b/programs/bpf/rust/many_args_dep/Cargo.toml @@ -12,10 +12,11 @@ homepage = "https://solana.com/" edition = "2018" [dependencies] -solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust/rust-utils", version = "0.19.0-pre0" } +solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false } -[dev_dependencies] -solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/rust-test", version = "0.19.0-pre0" } +[features] +program = ["solana-sdk/program"] +default = ["program"] [workspace] members = [] \ No newline at end of file diff --git a/programs/bpf/rust/many_args_dep/src/lib.rs b/programs/bpf/rust/many_args_dep/src/lib.rs index af5a241ae4..aed39c4fda 100644 --- a/programs/bpf/rust/many_args_dep/src/lib.rs +++ b/programs/bpf/rust/many_args_dep/src/lib.rs @@ -1,7 +1,7 @@ //! @brief Solana Rust-based BPF program utility functions and types -extern crate solana_sdk_bpf_utils; -use solana_sdk_bpf_utils::info; +extern crate solana_sdk; +use solana_sdk::info; pub fn many_args( arg1: u64, @@ -55,12 +55,11 @@ mod test { #[test] fn pull_in_externs() { - // Rust on Linux excludes the solana_sdk_bpf_test library unless there is a + // Rust on Linux excludes the externs unless there is a // direct dependency, use this test to force the pull in of the library. // This is not necessary on macos and unfortunate on Linux // Issue #4972 - extern crate solana_sdk_bpf_test; - use solana_sdk_bpf_test::*; + use solana_sdk::program_test::*; unsafe { sol_log_("X".as_ptr(), 1) }; sol_log_64_(1, 2, 3, 4, 5); } diff --git a/programs/bpf/rust/noop/Cargo.toml b/programs/bpf/rust/noop/Cargo.toml index a1b57e4af1..e0dd8e9bc6 100644 --- a/programs/bpf/rust/noop/Cargo.toml +++ b/programs/bpf/rust/noop/Cargo.toml @@ -12,7 +12,11 @@ homepage = "https://solana.com/" edition = "2018" [dependencies] -solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust/rust-utils", version = "0.19.0-pre0" } +solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false } + +[features] +program = ["solana-sdk/program"] +default = ["program"] [workspace] members = [] diff --git a/programs/bpf/rust/noop/src/lib.rs b/programs/bpf/rust/noop/src/lib.rs index 87ff7ee732..4b529ab1a6 100644 --- a/programs/bpf/rust/noop/src/lib.rs +++ b/programs/bpf/rust/noop/src/lib.rs @@ -2,10 +2,10 @@ #![allow(unreachable_code)] -extern crate solana_sdk_bpf_utils; -use solana_sdk_bpf_utils::entrypoint::*; -use solana_sdk_bpf_utils::log::*; -use solana_sdk_bpf_utils::{entrypoint, info}; +extern crate solana_sdk; +use solana_sdk::entrypoint::*; +use solana_sdk::log::*; +use solana_sdk::{entrypoint, info}; #[derive(Debug, PartialEq)] struct SStruct { diff --git a/programs/bpf/rust/panic/Cargo.toml b/programs/bpf/rust/panic/Cargo.toml index 162fb005bb..96d457cfe8 100644 --- a/programs/bpf/rust/panic/Cargo.toml +++ b/programs/bpf/rust/panic/Cargo.toml @@ -12,7 +12,11 @@ homepage = "https://solana.com/" edition = "2018" [dependencies] -solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust/rust-utils", version = "0.19.0-pre0" } +solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false } + +[features] +program = ["solana-sdk/program"] +default = ["program"] [workspace] members = [] diff --git a/programs/bpf/rust/panic/src/lib.rs b/programs/bpf/rust/panic/src/lib.rs index cb21b4c283..c862901568 100644 --- a/programs/bpf/rust/panic/src/lib.rs +++ b/programs/bpf/rust/panic/src/lib.rs @@ -1,6 +1,6 @@ //! @brief Example Rust-based BPF program that panics -extern crate solana_sdk_bpf_utils; +extern crate solana_sdk; #[no_mangle] pub extern "C" fn entrypoint(_input: *mut u8) -> bool { diff --git a/programs/bpf/rust/param_passing/Cargo.toml b/programs/bpf/rust/param_passing/Cargo.toml index c11fca931d..c29a32cafe 100644 --- a/programs/bpf/rust/param_passing/Cargo.toml +++ b/programs/bpf/rust/param_passing/Cargo.toml @@ -12,11 +12,12 @@ homepage = "https://solana.com/" edition = "2018" [dependencies] -solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust/rust-utils", version = "0.19.0-pre0" } +solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false } solana-bpf-rust-param-passing-dep = { path = "../param_passing_dep", version = "0.19.0-pre0" } -[dev_dependencies] -solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/rust-test", version = "0.19.0-pre0" } +[features] +program = ["solana-sdk/program"] +default = ["program"] [workspace] members = [] diff --git a/programs/bpf/rust/param_passing/src/lib.rs b/programs/bpf/rust/param_passing/src/lib.rs index 8c7db43676..d2e737662f 100644 --- a/programs/bpf/rust/param_passing/src/lib.rs +++ b/programs/bpf/rust/param_passing/src/lib.rs @@ -1,8 +1,8 @@ //! @brief Example Rust-based BPF program tests loop iteration -extern crate solana_sdk_bpf_utils; +extern crate solana_sdk; use solana_bpf_rust_param_passing_dep::{Data, TestDep}; -use solana_sdk_bpf_utils::info; +use solana_sdk::info; #[no_mangle] pub extern "C" fn entrypoint(_input: *mut u8) -> bool { diff --git a/programs/bpf/rust/param_passing_dep/Cargo.toml b/programs/bpf/rust/param_passing_dep/Cargo.toml index 944784007f..fb02b71fe1 100644 --- a/programs/bpf/rust/param_passing_dep/Cargo.toml +++ b/programs/bpf/rust/param_passing_dep/Cargo.toml @@ -12,10 +12,11 @@ homepage = "https://solana.com/" edition = "2018" [dependencies] -solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust/rust-utils", version = "0.19.0-pre0" } +solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false } -[dev_dependencies] -solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/rust-test", version = "0.19.0-pre0" } +[features] +program = ["solana-sdk/program"] +default = ["program"] [workspace] members = [] diff --git a/programs/bpf/rust/param_passing_dep/src/lib.rs b/programs/bpf/rust/param_passing_dep/src/lib.rs index b94b04cea5..08f177cbb2 100644 --- a/programs/bpf/rust/param_passing_dep/src/lib.rs +++ b/programs/bpf/rust/param_passing_dep/src/lib.rs @@ -1,6 +1,6 @@ //! @brief Example Rust-based BPF program tests loop iteration -extern crate solana_sdk_bpf_utils; +extern crate solana_sdk; pub struct Data<'a> { pub twentyone: u64, diff --git a/programs/bpf/rust/tick_height/Cargo.toml b/programs/bpf/rust/tick_height/Cargo.toml index e1c6c69443..6ced659b31 100644 --- a/programs/bpf/rust/tick_height/Cargo.toml +++ b/programs/bpf/rust/tick_height/Cargo.toml @@ -13,7 +13,11 @@ edition = "2018" [dependencies] byteorder = { version = "1", default-features = false } -solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust/rust-utils", version = "0.19.0-pre0" } +solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false } + +[features] +program = ["solana-sdk/program"] +default = ["program"] [workspace] members = [] diff --git a/programs/bpf/rust/tick_height/src/lib.rs b/programs/bpf/rust/tick_height/src/lib.rs index 9daccec7e1..78d5908ffa 100644 --- a/programs/bpf/rust/tick_height/src/lib.rs +++ b/programs/bpf/rust/tick_height/src/lib.rs @@ -1,9 +1,9 @@ //! @brief Example Rust-based BPF program that prints out the parameters passed to it -extern crate solana_sdk_bpf_utils; +extern crate solana_sdk; use byteorder::{ByteOrder, LittleEndian}; -use solana_sdk_bpf_utils::entrypoint::*; -use solana_sdk_bpf_utils::{entrypoint, info}; +use solana_sdk::entrypoint::*; +use solana_sdk::{entrypoint, info}; entrypoint!(process_instruction); fn process_instruction(ka: &mut [SolKeyedAccount], _info: &SolClusterInfo, _data: &[u8]) -> bool { diff --git a/sdk/Cargo.toml b/sdk/Cargo.toml index 2ad114fc56..6da7cecf7b 100644 --- a/sdk/Cargo.toml +++ b/sdk/Cargo.toml @@ -8,25 +8,49 @@ homepage = "https://solana.com/" license = "Apache-2.0" edition = "2018" +[features] +# On-chain program specific dependencies +program = [] +# Kitchen sink specific dependencies +kitchen_sink = [ + "assert_matches", + "byteorder", + "chrono", + "generic-array", + "itertools", + "log", + "memmap", + "num-derive", + "num-traits", + "rand", + "rayon", + "serde_json", + "solana-ed25519-dalek", + "solana-logger", + "untrusted", +] +default = ["kitchen_sink"] + [dependencies] -assert_matches = "1.3.0" +assert_matches = { version = "1.3.0", optional = true } bincode = "1.1.4" bs58 = "0.2.5" -byteorder = "1.3.2" -chrono = { version = "0.4.8", features = ["serde"] } -generic-array = { version = "0.13.2", default-features = false, features = ["serde", "more_lengths"] } +byteorder = { version = "1.3.2", optional = true } +cfg-if = "0.1.9" +chrono = { version = "0.4.8", features = ["serde"], optional = true } +generic-array = { version = "0.13.2", default-features = false, features = ["serde", "more_lengths"], optional = true } hex = "0.3.2" -itertools = "0.8.0" -log = "0.4.8" -memmap = "0.6.2" -num-derive = "0.2" -num-traits = "0.2" -rand = "0.6.5" -rayon = "1.2.0" +itertools = { version = "0.8.0", optional = true } +log = { version = "0.4.8", optional = true } +memmap = { version = "0.6.2", optional = true } +num-derive = { version = "0.2", optional = true } +num-traits = { version = "0.2", optional = true } +rand = { version = "0.6.5", optional = true } +rayon = { version = "1.2.0", optional = true } serde = "1.0.99" serde_derive = "1.0.99" -serde_json = "1.0.40" +serde_json = { version = "1.0.40", optional = true } sha2 = "0.8.0" -solana-ed25519-dalek = "0.2.0" -solana-logger = { path = "../logger", version = "0.19.0-pre0" } -untrusted = "0.7.0" +solana-ed25519-dalek = { version = "0.2.0", optional = true } +solana-logger = { path = "../logger", version = "0.19.0-pre0", optional = true } +untrusted = { version = "0.7.0", optional = true } \ No newline at end of file diff --git a/sdk/bpf/rust/rust-test/.gitignore b/sdk/bpf/rust/rust-test/.gitignore deleted file mode 100644 index 1ef9ec9604..0000000000 --- a/sdk/bpf/rust/rust-test/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/target/ - -Cargo.lock -/farf/ diff --git a/sdk/bpf/rust/rust-test/Cargo.toml b/sdk/bpf/rust/rust-test/Cargo.toml deleted file mode 100644 index 60fc918e32..0000000000 --- a/sdk/bpf/rust/rust-test/Cargo.toml +++ /dev/null @@ -1,13 +0,0 @@ - -[package] -name = "solana-sdk-bpf-test" -version = "0.19.0-pre0" -description = "Solana BPF SDK Rust Cargo test utilities" -authors = ["Solana Maintainers "] -repository = "https://github.com/solana-labs/solana" -license = "Apache-2.0" -homepage = "https://solana.com/" -edition = "2018" - -[workspace] -members = [] diff --git a/sdk/bpf/rust/rust-utils/.gitignore b/sdk/bpf/rust/rust-utils/.gitignore deleted file mode 100644 index 1ef9ec9604..0000000000 --- a/sdk/bpf/rust/rust-utils/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/target/ - -Cargo.lock -/farf/ diff --git a/sdk/bpf/rust/rust-utils/Cargo.toml b/sdk/bpf/rust/rust-utils/Cargo.toml deleted file mode 100644 index 95c809b940..0000000000 --- a/sdk/bpf/rust/rust-utils/Cargo.toml +++ /dev/null @@ -1,13 +0,0 @@ - -[package] -name = "solana-sdk-bpf-utils" -version = "0.19.0-pre0" -description = "Solana BPF SDK Rust Utils" -authors = ["Solana Maintainers "] -repository = "https://github.com/solana-labs/solana" -license = "Apache-2.0" -homepage = "https://solana.com/" -edition = "2018" - -[workspace] -members = [] diff --git a/sdk/bpf/rust/rust-utils/src/lib.rs b/sdk/bpf/rust/rust-utils/src/lib.rs deleted file mode 100644 index b31a8590ce..0000000000 --- a/sdk/bpf/rust/rust-utils/src/lib.rs +++ /dev/null @@ -1,4 +0,0 @@ -//! @brief Solana Rust-based BPF program utility functions and types - -pub mod entrypoint; -pub mod log; diff --git a/sdk/bpf/rust/rust-utils/src/entrypoint.rs b/sdk/src/entrypoint.rs similarity index 100% rename from sdk/bpf/rust/rust-utils/src/entrypoint.rs rename to sdk/src/entrypoint.rs diff --git a/sdk/src/lib.rs b/sdk/src/lib.rs index 24287c92b6..c880387d91 100644 --- a/sdk/src/lib.rs +++ b/sdk/src/lib.rs @@ -1,30 +1,48 @@ -pub mod account; -pub mod account_utils; -pub mod bpf_loader; -pub mod client; -pub mod fee_calculator; -pub mod genesis_block; -pub mod hash; -pub mod inflation; -pub mod instruction; -pub mod instruction_processor_utils; -pub mod loader_instruction; -pub mod message; -pub mod native_loader; -pub mod packet; -pub mod poh_config; +#[macro_use] +extern crate cfg_if; + pub mod pubkey; -pub mod rent; -pub mod rpc_port; -pub mod short_vec; -pub mod signature; -pub mod system_instruction; -pub mod system_program; -pub mod system_transaction; -pub mod sysvar; -pub mod timing; -pub mod transaction; -pub mod transport; + +// On-chain program modules +cfg_if! { + if #[cfg(feature = "program")] { + pub mod entrypoint; + pub mod log; + pub mod program_test; + } +} + +// Kitchen sink modules +cfg_if! { + if #[cfg(feature = "kitchen_sink")] { + pub mod account; + pub mod account_utils; + pub mod bpf_loader; + pub mod client; + pub mod fee_calculator; + pub mod genesis_block; + pub mod hash; + pub mod inflation; + pub mod instruction; + pub mod instruction_processor_utils; + pub mod loader_instruction; + pub mod message; + pub mod native_loader; + pub mod packet; + pub mod poh_config; + pub mod rent; + pub mod rpc_port; + pub mod short_vec; + pub mod signature; + pub mod system_instruction; + pub mod system_program; + pub mod system_transaction; + pub mod sysvar; + pub mod timing; + pub mod transaction; + pub mod transport; + } +} #[macro_use] extern crate serde_derive; diff --git a/sdk/bpf/rust/rust-utils/src/log.rs b/sdk/src/log.rs similarity index 100% rename from sdk/bpf/rust/rust-utils/src/log.rs rename to sdk/src/log.rs diff --git a/sdk/bpf/rust/rust-test/src/lib.rs b/sdk/src/program_test.rs similarity index 100% rename from sdk/bpf/rust/rust-test/src/lib.rs rename to sdk/src/program_test.rs diff --git a/sdk/src/pubkey.rs b/sdk/src/pubkey.rs index 5de78e3d6d..b2a787391e 100644 --- a/sdk/src/pubkey.rs +++ b/sdk/src/pubkey.rs @@ -1,10 +1,7 @@ use std::convert::TryFrom; use std::error; use std::fmt; -use std::fs::{self, File}; -use std::io::Write; use std::mem; -use std::path::Path; use std::str::FromStr; pub use bs58; @@ -50,6 +47,7 @@ impl Pubkey { ) } + #[cfg(not(feature = "program"))] pub fn new_rand() -> Self { Self::new(&rand::random::<[u8; 32]>()) } @@ -73,21 +71,25 @@ impl fmt::Display for Pubkey { } } +#[cfg(not(feature = "program"))] pub fn write_pubkey(outfile: &str, pubkey: Pubkey) -> Result<(), Box> { + use std::io::Write; + let printable = format!("{}", pubkey); let serialized = serde_json::to_string(&printable)?; - if let Some(outdir) = Path::new(&outfile).parent() { - fs::create_dir_all(outdir)?; + if let Some(outdir) = std::path::Path::new(&outfile).parent() { + std::fs::create_dir_all(outdir)?; } - let mut f = File::create(outfile)?; + let mut f = std::fs::File::create(outfile)?; f.write_all(&serialized.clone().into_bytes())?; Ok(()) } +#[cfg(not(feature = "program"))] pub fn read_pubkey(infile: &str) -> Result> { - let f = File::open(infile.to_string())?; + let f = std::fs::File::open(infile.to_string())?; let printable: String = serde_json::from_reader(f)?; Ok(Pubkey::from_str(&printable)?) }