diff --git a/programs/bpf/rust/128bit/Cargo.toml b/programs/bpf/rust/128bit/Cargo.toml index 11f54717fd..3d1eeb59e4 100644 --- a/programs/bpf/rust/128bit/Cargo.toml +++ b/programs/bpf/rust/128bit/Cargo.toml @@ -13,11 +13,11 @@ edition = "2018" [dependencies] solana-sdk = { path = "../../../../sdk/", version = "1.2.27", default-features = false } -solana-bpf-rust-128bit-dep = { path = "../128bit_dep", version = "1.2.27" } +solana-bpf-rust-128bit-dep = { path = "../128bit_dep", version = "1.2.27", default-features = false } [features] program = ["solana-sdk/program"] -default = ["program"] +default = ["program", "solana-sdk/default"] [lib] name = "solana_bpf_rust_128bit" diff --git a/programs/bpf/rust/128bit_dep/Cargo.toml b/programs/bpf/rust/128bit_dep/Cargo.toml index 6edb49f211..3a2e29d40c 100644 --- a/programs/bpf/rust/128bit_dep/Cargo.toml +++ b/programs/bpf/rust/128bit_dep/Cargo.toml @@ -16,7 +16,7 @@ solana-sdk = { path = "../../../../sdk/", version = "1.2.27", default-features = [features] program = ["solana-sdk/program"] -default = ["program"] +default = ["program", "solana-sdk/default"] [package.metadata.docs.rs] targets = ["x86_64-unknown-linux-gnu"] diff --git a/programs/bpf/rust/alloc/Cargo.toml b/programs/bpf/rust/alloc/Cargo.toml index 98bd42de5f..0599eda551 100644 --- a/programs/bpf/rust/alloc/Cargo.toml +++ b/programs/bpf/rust/alloc/Cargo.toml @@ -16,7 +16,7 @@ solana-sdk = { path = "../../../../sdk/", version = "1.2.27", default-features = [features] program = ["solana-sdk/program"] -default = ["program"] +default = ["program", "solana-sdk/default"] [lib] name = "solana_bpf_rust_alloc" diff --git a/programs/bpf/rust/dep_crate/Cargo.toml b/programs/bpf/rust/dep_crate/Cargo.toml index c3e04caa65..fe1b906691 100644 --- a/programs/bpf/rust/dep_crate/Cargo.toml +++ b/programs/bpf/rust/dep_crate/Cargo.toml @@ -17,7 +17,7 @@ solana-sdk = { path = "../../../../sdk/", version = "1.2.27", default-features = [features] program = ["solana-sdk/program"] -default = ["program"] +default = ["program", "solana-sdk/default"] [lib] name = "solana_bpf_rust_dep_crate" diff --git a/programs/bpf/rust/dup_accounts/Cargo.toml b/programs/bpf/rust/dup_accounts/Cargo.toml index 89d40f57ce..99df4cf379 100644 --- a/programs/bpf/rust/dup_accounts/Cargo.toml +++ b/programs/bpf/rust/dup_accounts/Cargo.toml @@ -16,7 +16,7 @@ solana-sdk = { path = "../../../../sdk/", version = "1.2.27", default-features = [features] program = ["solana-sdk/program"] -default = ["program"] +default = ["program", "solana-sdk/default"] [lib] name = "solana_bpf_rust_dup_accounts" diff --git a/programs/bpf/rust/error_handling/Cargo.toml b/programs/bpf/rust/error_handling/Cargo.toml index 3fddd001b6..6636e91251 100644 --- a/programs/bpf/rust/error_handling/Cargo.toml +++ b/programs/bpf/rust/error_handling/Cargo.toml @@ -19,7 +19,7 @@ thiserror = "1.0" [features] program = ["solana-sdk/program"] -default = ["program"] +default = ["program", "solana-sdk/default"] [lib] name = "solana_bpf_rust_error_handling" diff --git a/programs/bpf/rust/external_spend/Cargo.toml b/programs/bpf/rust/external_spend/Cargo.toml index e0fd884b02..857791a253 100644 --- a/programs/bpf/rust/external_spend/Cargo.toml +++ b/programs/bpf/rust/external_spend/Cargo.toml @@ -16,7 +16,7 @@ solana-sdk = { path = "../../../../sdk/", version = "1.2.27", default-features = [features] program = ["solana-sdk/program"] -default = ["program"] +default = ["program", "solana-sdk/default"] [lib] name = "solana_bpf_rust_external_spend" diff --git a/programs/bpf/rust/invoke/Cargo.toml b/programs/bpf/rust/invoke/Cargo.toml index b463c71834..97ec753f73 100644 --- a/programs/bpf/rust/invoke/Cargo.toml +++ b/programs/bpf/rust/invoke/Cargo.toml @@ -12,16 +12,16 @@ homepage = "https://solana.com/" edition = "2018" [dependencies] -solana-bpf-rust-invoked = { path = "../invoked"} +solana-bpf-rust-invoked = { path = "../invoked", default-features = false } solana-sdk = { path = "../../../../sdk/", version = "1.2.27", default-features = false } [features] program = ["solana-sdk/program"] -default = ["program"] +default = ["program", "solana-sdk/default"] [lib] name = "solana_bpf_rust_invoke" crate-type = ["cdylib"] [package.metadata.docs.rs] -targets = ["x86_64-unknown-linux-gnu"] \ No newline at end of file +targets = ["x86_64-unknown-linux-gnu"] diff --git a/programs/bpf/rust/invoke/src/lib.rs b/programs/bpf/rust/invoke/src/lib.rs index 53fb52fadf..9c87f583e3 100644 --- a/programs/bpf/rust/invoke/src/lib.rs +++ b/programs/bpf/rust/invoke/src/lib.rs @@ -218,5 +218,17 @@ fn process_instruction( Ok(()) } -// Pull in syscall stubs when building for non-BPF targets -solana_sdk::program_stubs!(); +#[cfg(test)] +mod test { + use super::*; + // Pull in syscall stubs when building for non-BPF targets + solana_sdk::program_stubs!(); + + #[test] + fn create_program_address_is_defined() { + assert_eq!( + Pubkey::create_program_address(&[b"You pass butter"], &Pubkey::default()).unwrap_err(), + PubkeyError::InvalidSeeds + ); + } +} diff --git a/programs/bpf/rust/invoked/Cargo.toml b/programs/bpf/rust/invoked/Cargo.toml index 30553855bf..98ca51e897 100644 --- a/programs/bpf/rust/invoked/Cargo.toml +++ b/programs/bpf/rust/invoked/Cargo.toml @@ -16,11 +16,11 @@ solana-sdk = { path = "../../../../sdk/", version = "1.2.27", default-features = [features] program = ["solana-sdk/program"] -default = ["program"] +default = ["program", "solana-sdk/default"] [lib] name = "solana_bpf_rust_invoked" crate-type = ["lib", "cdylib"] [package.metadata.docs.rs] -targets = ["x86_64-unknown-linux-gnu"] \ No newline at end of file +targets = ["x86_64-unknown-linux-gnu"] diff --git a/programs/bpf/rust/iter/Cargo.toml b/programs/bpf/rust/iter/Cargo.toml index 8f172bcf92..780cb47890 100644 --- a/programs/bpf/rust/iter/Cargo.toml +++ b/programs/bpf/rust/iter/Cargo.toml @@ -16,7 +16,7 @@ solana-sdk = { path = "../../../../sdk/", version = "1.2.27", default-features = [features] program = ["solana-sdk/program"] -default = ["program"] +default = ["program", "solana-sdk/default"] [lib] name = "solana_bpf_rust_iter" diff --git a/programs/bpf/rust/many_args/Cargo.toml b/programs/bpf/rust/many_args/Cargo.toml index 25869d88c3..9c2affe4dd 100644 --- a/programs/bpf/rust/many_args/Cargo.toml +++ b/programs/bpf/rust/many_args/Cargo.toml @@ -13,11 +13,11 @@ edition = "2018" [dependencies] solana-sdk = { path = "../../../../sdk/", version = "1.2.27", default-features = false } -solana-bpf-rust-many-args-dep = { path = "../many_args_dep", version = "1.2.27" } +solana-bpf-rust-many-args-dep = { path = "../many_args_dep", version = "1.2.27", default-features = false } [features] program = ["solana-sdk/program"] -default = ["program"] +default = ["program", "solana-sdk/default"] [lib] name = "solana_bpf_rust_many_args" diff --git a/programs/bpf/rust/many_args_dep/Cargo.toml b/programs/bpf/rust/many_args_dep/Cargo.toml index eb5d52c9c0..dfa909ca08 100644 --- a/programs/bpf/rust/many_args_dep/Cargo.toml +++ b/programs/bpf/rust/many_args_dep/Cargo.toml @@ -16,7 +16,7 @@ solana-sdk = { path = "../../../../sdk/", version = "1.2.27", default-features = [features] program = ["solana-sdk/program"] -default = ["program"] +default = ["program", "solana-sdk/default"] [package.metadata.docs.rs] targets = ["x86_64-unknown-linux-gnu"] diff --git a/programs/bpf/rust/noop/Cargo.toml b/programs/bpf/rust/noop/Cargo.toml index 941d27d790..4ed64fbe39 100644 --- a/programs/bpf/rust/noop/Cargo.toml +++ b/programs/bpf/rust/noop/Cargo.toml @@ -16,7 +16,7 @@ solana-sdk = { path = "../../../../sdk/", version = "1.2.27", default-features = [features] program = ["solana-sdk/program"] -default = ["program"] +default = ["program", "solana-sdk/default"] [lib] name = "solana_bpf_rust_noop" diff --git a/programs/bpf/rust/panic/Cargo.toml b/programs/bpf/rust/panic/Cargo.toml index 2064b74b53..09ad076022 100644 --- a/programs/bpf/rust/panic/Cargo.toml +++ b/programs/bpf/rust/panic/Cargo.toml @@ -16,7 +16,7 @@ solana-sdk = { path = "../../../../sdk/", version = "1.2.27", default-features = [features] program = ["solana-sdk/program"] -default = ["program"] +default = ["program", "solana-sdk/default"] [lib] name = "solana_bpf_rust_panic" diff --git a/programs/bpf/rust/param_passing/Cargo.toml b/programs/bpf/rust/param_passing/Cargo.toml index ba206bfa57..000686640b 100644 --- a/programs/bpf/rust/param_passing/Cargo.toml +++ b/programs/bpf/rust/param_passing/Cargo.toml @@ -13,11 +13,11 @@ edition = "2018" [dependencies] solana-sdk = { path = "../../../../sdk/", version = "1.2.27", default-features = false } -solana-bpf-rust-param-passing-dep = { path = "../param_passing_dep", version = "1.2.27" } +solana-bpf-rust-param-passing-dep = { path = "../param_passing_dep", version = "1.2.27", default-features = false } [features] program = ["solana-sdk/program"] -default = ["program"] +default = ["program", "solana-sdk/default"] [lib] name = "solana_bpf_rust_param_passing" diff --git a/programs/bpf/rust/param_passing_dep/Cargo.toml b/programs/bpf/rust/param_passing_dep/Cargo.toml index 7bdc0b88b3..af2e3045a6 100644 --- a/programs/bpf/rust/param_passing_dep/Cargo.toml +++ b/programs/bpf/rust/param_passing_dep/Cargo.toml @@ -16,7 +16,7 @@ solana-sdk = { path = "../../../../sdk/", version = "1.2.27", default-features = [features] program = ["solana-sdk/program"] -default = ["program"] +default = ["program", "solana-sdk/default"] [package.metadata.docs.rs] targets = ["x86_64-unknown-linux-gnu"] diff --git a/programs/bpf/rust/sysval/Cargo.toml b/programs/bpf/rust/sysval/Cargo.toml index 69d5011dad..c1c3da5672 100644 --- a/programs/bpf/rust/sysval/Cargo.toml +++ b/programs/bpf/rust/sysval/Cargo.toml @@ -16,7 +16,7 @@ solana-sdk = { path = "../../../../sdk/", version = "1.2.27", default-features = [features] program = ["solana-sdk/program"] -default = ["program"] +default = ["program", "solana-sdk/default"] [lib] name = "solana_bpf_rust_sysval" diff --git a/sdk/src/pubkey.rs b/sdk/src/pubkey.rs index a16e406ea2..5566571cf5 100644 --- a/sdk/src/pubkey.rs +++ b/sdk/src/pubkey.rs @@ -1,6 +1,6 @@ -#[cfg(feature = "program")] +#[cfg(all(feature = "program", target_arch = "bpf"))] use crate::entrypoint::SUCCESS; -#[cfg(not(feature = "program"))] +#[cfg(not(all(feature = "program", target_arch = "bpf")))] use crate::hash::Hasher; use crate::{decode_error::DecodeError, hash::hashv}; use num_derive::{FromPrimitive, ToPrimitive}; @@ -104,7 +104,7 @@ impl Pubkey { ) -> Result { // Perform the calculation inline, calling this from within a program is // not supported - #[cfg(not(feature = "program"))] + #[cfg(not(all(feature = "program", target_arch = "bpf")))] { let mut hasher = Hasher::default(); for seed in seeds.iter() { @@ -126,7 +126,7 @@ impl Pubkey { Ok(Pubkey::new(hash.as_ref())) } // Call via a system call to perform the calculation - #[cfg(feature = "program")] + #[cfg(all(feature = "program", target_arch = "bpf"))] { extern "C" { fn sol_create_program_address(