Remove frozen ABI modules from solana-sdk

This commit is contained in:
Michael Vines 2020-10-19 21:07:46 -07:00
parent 81d0c8ae7f
commit 6858950f76
38 changed files with 240 additions and 106 deletions

60
Cargo.lock generated
View File

@ -3753,6 +3753,8 @@ dependencies = [
"solana-clap-utils",
"solana-client",
"solana-faucet",
"solana-frozen-abi",
"solana-frozen-abi-macro",
"solana-ledger",
"solana-logger 1.5.0",
"solana-measure",
@ -3763,7 +3765,6 @@ dependencies = [
"solana-rayon-threadlimit",
"solana-runtime",
"solana-sdk 1.5.0",
"solana-sdk-macro-frozen-abi 1.5.0",
"solana-stake-program",
"solana-storage-bigtable",
"solana-streamer",
@ -3908,6 +3909,35 @@ dependencies = [
"tokio-codec",
]
[[package]]
name = "solana-frozen-abi"
version = "1.5.0"
dependencies = [
"bs58",
"bv",
"generic-array 0.14.3",
"log 0.4.8",
"memmap",
"rustc_version",
"serde",
"serde_derive",
"sha2",
"solana-frozen-abi-macro",
"solana-logger 1.5.0",
"thiserror",
]
[[package]]
name = "solana-frozen-abi-macro"
version = "1.5.0"
dependencies = [
"lazy_static",
"proc-macro2 1.0.19",
"quote 1.0.6",
"rustc_version",
"syn 1.0.27",
]
[[package]]
name = "solana-genesis"
version = "1.5.0"
@ -4356,13 +4386,14 @@ dependencies = [
"serde",
"serde_derive",
"solana-config-program",
"solana-frozen-abi",
"solana-frozen-abi-macro",
"solana-logger 1.5.0",
"solana-measure",
"solana-metrics",
"solana-noop-program",
"solana-rayon-threadlimit",
"solana-sdk 1.5.0",
"solana-sdk-macro-frozen-abi 1.5.0",
"solana-secp256k1-program",
"solana-stake-program",
"solana-vote-program",
@ -4419,7 +4450,7 @@ dependencies = [
"solana-crate-features 1.4.0",
"solana-logger 1.4.0",
"solana-sdk-macro 1.4.0",
"solana-sdk-macro-frozen-abi 1.4.0",
"solana-sdk-macro-frozen-abi",
"thiserror",
]
@ -4458,9 +4489,10 @@ dependencies = [
"sha2",
"sha3",
"solana-crate-features 1.5.0",
"solana-frozen-abi",
"solana-frozen-abi-macro",
"solana-logger 1.5.0",
"solana-sdk-macro 1.5.0",
"solana-sdk-macro-frozen-abi 1.5.0",
"thiserror",
"tiny-bip39",
]
@ -4502,17 +4534,6 @@ dependencies = [
"syn 1.0.27",
]
[[package]]
name = "solana-sdk-macro-frozen-abi"
version = "1.5.0"
dependencies = [
"lazy_static",
"proc-macro2 1.0.19",
"quote 1.0.6",
"rustc_version",
"syn 1.0.27",
]
[[package]]
name = "solana-secp256k1-program"
version = "1.5.0"
@ -4596,10 +4617,11 @@ dependencies = [
"serde",
"serde_derive",
"solana-config-program",
"solana-frozen-abi",
"solana-frozen-abi-macro",
"solana-logger 1.5.0",
"solana-metrics",
"solana-sdk 1.5.0",
"solana-sdk-macro-frozen-abi 1.5.0",
"solana-vote-program",
"thiserror",
]
@ -4769,10 +4791,11 @@ dependencies = [
"rustc_version",
"serde",
"serde_derive",
"solana-frozen-abi",
"solana-frozen-abi-macro",
"solana-logger 1.5.0",
"solana-runtime",
"solana-sdk 1.5.0",
"solana-sdk-macro-frozen-abi 1.5.0",
]
[[package]]
@ -4802,10 +4825,11 @@ dependencies = [
"rustc_version",
"serde",
"serde_derive",
"solana-frozen-abi",
"solana-frozen-abi-macro",
"solana-logger 1.5.0",
"solana-metrics",
"solana-sdk 1.5.0",
"solana-sdk-macro-frozen-abi 1.5.0",
"thiserror",
]

View File

@ -16,6 +16,7 @@ members = [
"dos",
"download-utils",
"faucet",
"frozen-abi",
"perf",
"validator",
"genesis",

View File

@ -58,7 +58,8 @@ solana-net-utils = { path = "../net-utils", version = "1.5.0" }
solana-perf = { path = "../perf", version = "1.5.0" }
solana-runtime = { path = "../runtime", version = "1.5.0" }
solana-sdk = { path = "../sdk", version = "1.5.0" }
solana-sdk-macro-frozen-abi = { path = "../sdk/macro-frozen-abi", version = "1.5.0" }
solana-frozen-abi = { path = "../frozen-abi", version = "1.5.0" }
solana-frozen-abi-macro = { path = "../frozen-abi/macro", version = "1.5.0" }
solana-stake-program = { path = "../programs/stake", version = "1.5.0" }
solana-storage-bigtable = { path = "../storage-bigtable", version = "1.5.0" }
solana-streamer = { path = "../streamer", version = "1.5.0" }

View File

@ -1 +1 @@
../sdk/build.rs
../frozen-abi/build.rs

View File

@ -93,7 +93,7 @@ extern crate serde_json;
extern crate solana_metrics;
#[macro_use]
extern crate solana_sdk_macro_frozen_abi;
extern crate solana_frozen_abi_macro;
#[cfg(test)]
#[macro_use]

27
frozen-abi/Cargo.toml Normal file
View File

@ -0,0 +1,27 @@
[package]
name = "solana-frozen-abi"
version = "1.5.0"
description = "Solana Frozen ABI"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
homepage = "https://solana.com/"
license = "Apache-2.0"
edition = "2018"
[dependencies]
bs58 = "0.3.1"
bv = { version = "0.11.1", features = ["serde"] }
log = "0.4.8"
serde = "1.0.112"
serde_derive = "1.0.103"
sha2 = "0.8.2"
solana-frozen-abi-macro = { path = "macro", version = "1.5.0" }
thiserror = "1.0"
[target.'cfg(not(target_arch = "bpf"))'.dependencies]
solana-logger = { path = "../logger", version = "1.5.0" }
generic-array = { version = "0.14.3", default-features = false, features = ["serde", "more_lengths"]}
memmap = "0.7.0"
[build-dependencies]
rustc_version = "0.2"

27
frozen-abi/build.rs Normal file
View File

@ -0,0 +1,27 @@
extern crate rustc_version;
use rustc_version::{version_meta, Channel};
fn main() {
// Copied and adapted from
// https://github.com/Kimundi/rustc-version-rs/blob/1d692a965f4e48a8cb72e82cda953107c0d22f47/README.md#example
// Licensed under Apache-2.0 + MIT
match version_meta().unwrap().channel {
Channel::Stable => {
println!("cargo:rustc-cfg=RUSTC_WITHOUT_SPECIALIZATION");
}
Channel::Beta => {
println!("cargo:rustc-cfg=RUSTC_WITHOUT_SPECIALIZATION");
}
Channel::Nightly => {
println!("cargo:rustc-cfg=RUSTC_WITH_SPECIALIZATION");
}
Channel::Dev => {
println!("cargo:rustc-cfg=RUSTC_WITH_SPECIALIZATION");
// See https://github.com/solana-labs/solana/issues/11055
// We may be running the custom `rust-bpf-builder` toolchain,
// which currently needs `#![feature(proc_macro_hygiene)]` to
// be applied.
println!("cargo:rustc-cfg=RUSTC_NEEDS_PROC_MACRO_HYGIENE");
}
}
}

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sdk-macro-frozen-abi"
name = "solana-frozen-abi-macro"
version = "1.5.0"
description = "Solana SDK Macro frozen abi"
description = "Solana Frozen ABI Macro"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
homepage = "https://solana.com/"

View File

@ -167,7 +167,7 @@ fn derive_abi_sample_enum_type(input: ItemEnum) -> TokenStream {
#injection
#[automatically_derived]
#( #attrs )*
impl #impl_generics ::solana_sdk::abi_example::AbiExample for #type_name #ty_generics #where_clause {
impl #impl_generics ::solana_frozen_abi::abi_example::AbiExample for #type_name #ty_generics #where_clause {
fn example() -> Self {
::log::info!(
"AbiExample for enum: {}",
@ -221,13 +221,13 @@ fn derive_abi_sample_struct_type(input: ItemStruct) -> TokenStream {
#injection
#[automatically_derived]
#( #attrs )*
impl #impl_generics ::solana_sdk::abi_example::AbiExample for #type_name #ty_generics #where_clause {
impl #impl_generics ::solana_frozen_abi::abi_example::AbiExample for #type_name #ty_generics #where_clause {
fn example() -> Self {
::log::info!(
"AbiExample for struct: {}",
std::any::type_name::<#type_name #ty_generics>()
);
use ::solana_sdk::abi_example::AbiExample;
use ::solana_frozen_abi::abi_example::AbiExample;
#type_name #turbofish #sample_fields
}
@ -272,11 +272,11 @@ fn do_derive_abi_enum_visitor(input: ItemEnum) -> TokenStream {
let type_str = format!("{}", type_name);
(quote! {
impl #impl_generics ::solana_sdk::abi_example::AbiEnumVisitor for #type_name #ty_generics #where_clause {
fn visit_for_abi(&self, digester: &mut ::solana_sdk::abi_digester::AbiDigester) -> ::solana_sdk::abi_digester::DigestResult {
impl #impl_generics ::solana_frozen_abi::abi_example::AbiEnumVisitor for #type_name #ty_generics #where_clause {
fn visit_for_abi(&self, digester: &mut ::solana_frozen_abi::abi_digester::AbiDigester) -> ::solana_frozen_abi::abi_digester::DigestResult {
let enum_name = #type_str;
use ::serde::ser::Serialize;
use ::solana_sdk::abi_example::AbiExample;
use ::solana_frozen_abi::abi_example::AbiExample;
digester.update_with_string(format!("enum {} (variants = {})", enum_name, #variant_count));
#serialized_variants
Ok(digester.create_child())
@ -310,12 +310,12 @@ fn quote_for_test(
#[cfg(test)]
mod #test_mod_ident {
use super::*;
use ::solana_sdk::abi_example::{AbiExample, AbiEnumVisitor};
use ::solana_frozen_abi::abi_example::{AbiExample, AbiEnumVisitor};
#[test]
fn test_abi_digest() {
::solana_logger::setup();
let mut digester = ::solana_sdk::abi_digester::AbiDigester::create();
let mut digester = ::solana_frozen_abi::abi_digester::AbiDigester::create();
let example = <#type_name>::example();
let result = <_>::visit_for_abi(&&example, &mut digester);
let mut hash = digester.finalize();

View File

@ -550,7 +550,7 @@ mod tests {
test_field2: i8,
}
#[frozen_abi(digest = "Hv597t4PieHYvgiXnwRSpKBRTWqteUS4nHZHY6ZxX69v")]
#[frozen_abi(digest = "GMeECsxg37a5qznstWXeeX3d6HXs6j12oB4SKaZZuNJk")]
#[derive(Serialize, AbiExample)]
struct TestNest {
nested_field: [TestStruct; 5],
@ -573,7 +573,7 @@ mod tests {
VARIANT2(u8, u16),
}
#[frozen_abi(digest = "CKxzv7VjyUrNR9fGJpTpKyMBWJM4gepKshCS8oV14T1Q")]
#[frozen_abi(digest = "DywMfwKq8HZCbUfTwnemHWMN8LvMZCvipQuLddQ2ywwG")]
#[derive(Serialize, AbiExample)]
struct TestVecEnum {
enums: Vec<TestTupleVariant>,

View File

@ -213,9 +213,9 @@ atomic_example_impls! { AtomicI64 }
atomic_example_impls! { AtomicIsize }
atomic_example_impls! { AtomicBool }
#[cfg(feature = "everything")]
#[cfg(not(target_arch = "bpf"))]
use generic_array::{ArrayLength, GenericArray};
#[cfg(feature = "everything")]
#[cfg(not(target_arch = "bpf"))]
impl<T: Default, U: ArrayLength<T>> AbiExample for GenericArray<T, U> {
fn example() -> Self {
Self::default()
@ -413,14 +413,14 @@ impl<T: std::cmp::Ord + AbiExample> AbiExample for BTreeSet<T> {
}
}
#[cfg(feature = "everything")]
#[cfg(not(target_arch = "bpf"))]
impl AbiExample for memmap::MmapMut {
fn example() -> Self {
memmap::MmapMut::map_anon(1).expect("failed to map the data file")
}
}
#[cfg(feature = "everything")]
#[cfg(not(target_arch = "bpf"))]
impl AbiExample for std::path::PathBuf {
fn example() -> Self {
std::path::PathBuf::from(String::example())

28
frozen-abi/src/hash.rs Normal file
View File

@ -0,0 +1,28 @@
use sha2::{Digest, Sha256};
use std::{convert::TryFrom, fmt};
const HASH_BYTES: usize = 32;
#[derive(AbiExample)]
pub struct Hash(pub [u8; HASH_BYTES]);
#[derive(Default)]
pub struct Hasher {
hasher: Sha256,
}
impl Hasher {
pub fn hash(&mut self, val: &[u8]) {
self.hasher.input(val);
}
pub fn result(self) -> Hash {
// At the time of this writing, the sha2 library is stuck on an old version
// of generic_array (0.9.0). Decouple ourselves with a clone to our version.
Hash(<[u8; HASH_BYTES]>::try_from(self.hasher.result().as_slice()).unwrap())
}
}
impl fmt::Display for Hash {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", bs58::encode(self.0).into_string())
}
}

22
frozen-abi/src/lib.rs Normal file
View File

@ -0,0 +1,22 @@
#![cfg_attr(RUSTC_WITH_SPECIALIZATION, feature(specialization))]
#![cfg_attr(RUSTC_NEEDS_PROC_MACRO_HYGIENE, feature(proc_macro_hygiene))]
// Allows macro expansion of `use ::solana_frozen_abi::*` to work within this crate
extern crate self as solana_frozen_abi;
#[cfg(RUSTC_WITH_SPECIALIZATION)]
pub mod abi_digester;
#[cfg(RUSTC_WITH_SPECIALIZATION)]
pub mod abi_example;
#[cfg(RUSTC_WITH_SPECIALIZATION)]
mod hash;
#[cfg(RUSTC_WITH_SPECIALIZATION)]
#[macro_use]
extern crate solana_frozen_abi_macro;
#[cfg(RUSTC_WITH_SPECIALIZATION)]
#[cfg(test)]
#[macro_use]
extern crate serde_derive;

View File

@ -2017,6 +2017,35 @@ dependencies = [
"winapi 0.3.8",
]
[[package]]
name = "solana-frozen-abi"
version = "1.5.0"
dependencies = [
"bs58",
"bv",
"generic-array 0.14.3",
"log",
"memmap",
"rustc_version",
"serde",
"serde_derive",
"sha2",
"solana-frozen-abi-macro",
"solana-logger",
"thiserror",
]
[[package]]
name = "solana-frozen-abi-macro"
version = "1.5.0"
dependencies = [
"lazy_static",
"proc-macro2 1.0.19",
"quote 1.0.6",
"rustc_version",
"syn 1.0.27",
]
[[package]]
name = "solana-logger"
version = "1.5.0"
@ -2088,12 +2117,13 @@ dependencies = [
"serde",
"serde_derive",
"solana-config-program",
"solana-frozen-abi",
"solana-frozen-abi-macro",
"solana-logger",
"solana-measure",
"solana-metrics",
"solana-rayon-threadlimit",
"solana-sdk",
"solana-sdk-macro-frozen-abi",
"solana-secp256k1-program",
"solana-stake-program",
"solana-vote-program",
@ -2139,9 +2169,10 @@ dependencies = [
"sha2",
"sha3",
"solana-crate-features",
"solana-frozen-abi",
"solana-frozen-abi-macro",
"solana-logger",
"solana-sdk-macro",
"solana-sdk-macro-frozen-abi",
"thiserror",
]
@ -2156,17 +2187,6 @@ dependencies = [
"syn 1.0.27",
]
[[package]]
name = "solana-sdk-macro-frozen-abi"
version = "1.5.0"
dependencies = [
"lazy_static",
"proc-macro2 1.0.19",
"quote 1.0.6",
"rustc_version",
"syn 1.0.27",
]
[[package]]
name = "solana-secp256k1-program"
version = "1.5.0"
@ -2192,9 +2212,10 @@ dependencies = [
"serde",
"serde_derive",
"solana-config-program",
"solana-frozen-abi",
"solana-frozen-abi-macro",
"solana-metrics",
"solana-sdk",
"solana-sdk-macro-frozen-abi",
"solana-vote-program",
"thiserror",
]
@ -2210,10 +2231,11 @@ dependencies = [
"rustc_version",
"serde",
"serde_derive",
"solana-frozen-abi",
"solana-frozen-abi-macro",
"solana-logger",
"solana-metrics",
"solana-sdk",
"solana-sdk-macro-frozen-abi",
"thiserror",
]

View File

@ -15,11 +15,12 @@ num-derive = "0.3"
num-traits = "0.2"
serde = "1.0.112"
serde_derive = "1.0.103"
solana-frozen-abi = { path = "../../frozen-abi", version = "1.5.0" }
solana-frozen-abi-macro = { path = "../../frozen-abi/macro", version = "1.5.0" }
solana-metrics = { path = "../../metrics", version = "1.5.0" }
solana-sdk = { path = "../../sdk", version = "1.5.0" }
solana-vote-program = { path = "../vote", version = "1.5.0" }
solana-config-program = { path = "../config", version = "1.5.0" }
solana-sdk-macro-frozen-abi = { path = "../../sdk/macro-frozen-abi", version = "1.5.0" }
thiserror = "1.0"
[dev-dependencies]

View File

@ -1 +1 @@
../../sdk/build.rs
../../frozen-abi/build.rs

View File

@ -12,4 +12,4 @@ pub fn add_genesis_accounts(genesis_config: &mut GenesisConfig) -> u64 {
}
#[macro_use]
extern crate solana_sdk_macro_frozen_abi;
extern crate solana_frozen_abi_macro;

View File

@ -15,10 +15,11 @@ num-derive = "0.3"
num-traits = "0.2"
serde = "1.0.112"
serde_derive = "1.0.103"
solana-frozen-abi = { path = "../../frozen-abi", version = "1.5.0" }
solana-frozen-abi-macro = { path = "../../frozen-abi/macro", version = "1.5.0" }
solana-logger = { path = "../../logger", version = "1.5.0" }
solana-metrics = { path = "../../metrics", version = "1.5.0" }
solana-sdk = { path = "../../sdk", version = "1.5.0" }
solana-sdk-macro-frozen-abi = { path = "../../sdk/macro-frozen-abi", version = "1.5.0" }
thiserror = "1.0"
[build-dependencies]

View File

@ -1 +1 @@
../../sdk/build.rs
../../frozen-abi/build.rs

View File

@ -9,6 +9,6 @@ pub mod vote_transaction;
extern crate solana_metrics;
#[macro_use]
extern crate solana_sdk_macro_frozen_abi;
extern crate solana_frozen_abi_macro;
solana_sdk::declare_id!("Vote111111111111111111111111111111111111111");

View File

@ -35,12 +35,13 @@ regex = "1.3.9"
serde = { version = "1.0.112", features = ["rc"] }
serde_derive = "1.0.103"
solana-config-program = { path = "../programs/config", version = "1.5.0" }
solana-frozen-abi = { path = "../frozen-abi", version = "1.5.0" }
solana-frozen-abi-macro = { path = "../frozen-abi/macro", version = "1.5.0" }
solana-logger = { path = "../logger", version = "1.5.0" }
solana-measure = { path = "../measure", version = "1.5.0" }
solana-metrics = { path = "../metrics", version = "1.5.0" }
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "1.5.0" }
solana-sdk = { path = "../sdk", version = "1.5.0" }
solana-sdk-macro-frozen-abi = { path = "../sdk/macro-frozen-abi", version = "1.5.0" }
solana-stake-program = { path = "../programs/stake", version = "1.5.0" }
solana-vote-program = { path = "../programs/vote", version = "1.5.0" }
solana-secp256k1-program = { path = "../programs/secp256k1", version = "1.5.0" }

View File

@ -1 +1 @@
../sdk/build.rs
../frozen-abi/build.rs

View File

@ -469,7 +469,7 @@ fn make_min_priority_thread_pool() -> ThreadPool {
}
#[cfg(all(test, RUSTC_WITH_SPECIALIZATION))]
impl solana_sdk::abi_example::AbiExample for AccountsDB {
impl solana_frozen_abi::abi_example::AbiExample for AccountsDB {
fn example() -> Self {
let accounts_db = AccountsDB::new_single();
let key = Pubkey::default();

View File

@ -330,7 +330,7 @@ pub struct BankRc {
}
#[cfg(RUSTC_WITH_SPECIALIZATION)]
use solana_sdk::abi_example::AbiExample;
use solana_frozen_abi::abi_example::AbiExample;
#[cfg(RUSTC_WITH_SPECIALIZATION)]
impl AbiExample for BankRc {
fn example() -> Self {

View File

@ -44,7 +44,7 @@ extern crate solana_metrics;
extern crate serde_derive;
#[macro_use]
extern crate solana_sdk_macro_frozen_abi;
extern crate solana_frozen_abi_macro;
extern crate fs_extra;
extern crate tempfile;

View File

@ -387,7 +387,7 @@ impl Clone for MessageProcessor {
}
#[cfg(RUSTC_WITH_SPECIALIZATION)]
impl ::solana_sdk::abi_example::AbiExample for MessageProcessor {
impl ::solana_frozen_abi::abi_example::AbiExample for MessageProcessor {
fn example() -> Self {
// MessageProcessor's fields are #[serde(skip)]-ed and not Serialize
// so, just rely on Default anyway.

View File

@ -39,7 +39,7 @@ use {
};
#[cfg(RUSTC_WITH_SPECIALIZATION)]
use solana_sdk::abi_example::IgnoreAsHelper;
use solana_frozen_abi::abi_example::IgnoreAsHelper;
mod common;
mod future;

View File

@ -1,6 +1,6 @@
use super::common::UnusedAccounts;
#[cfg(all(test, RUSTC_WITH_SPECIALIZATION))]
use solana_sdk::abi_example::IgnoreAsHelper;
use solana_frozen_abi::abi_example::IgnoreAsHelper;
use {super::*, solana_measure::measure::Measure, std::cell::RefCell};
type AccountsDbFields = super::AccountsDbFields<SerializableAccountStorageEntry>;
@ -13,7 +13,7 @@ pub(super) struct SerializableAccountStorageEntry {
}
#[cfg(all(test, RUSTC_WITH_SPECIALIZATION))]
impl solana_sdk::abi_example::IgnoreAsHelper for SerializableAccountStorageEntry {}
impl solana_frozen_abi::abi_example::IgnoreAsHelper for SerializableAccountStorageEntry {}
impl From<&AccountStorageEntry> for SerializableAccountStorageEntry {
fn from(rhs: &AccountStorageEntry) -> Self {

View File

@ -262,7 +262,7 @@ mod test_bank_serialize {
// These some what long test harness is required to freeze the ABI of
// Bank's serialization due to versioned nature
#[frozen_abi(digest = "5rd8RyVSLH3hm12xJDVCJWgc1gyqb4Ukt2hJLJNfsB5v")]
#[frozen_abi(digest = "ULV2jDndxR3JB677ayyjaamtAcZ24q75tCkHS2bKVoy")]
#[derive(Serialize, AbiExample)]
pub struct BankAbiTestWrapperFuture {
#[serde(serialize_with = "wrapper_future")]

View File

@ -3,7 +3,7 @@ use serde::{
Serialize, Serializer,
};
#[cfg(all(test, RUSTC_WITH_SPECIALIZATION))]
use solana_sdk::abi_example::IgnoreAsHelper;
use solana_frozen_abi::abi_example::IgnoreAsHelper;
// consumes an iterator and returns an object that will serialize as a serde seq
#[allow(dead_code)]

View File

@ -61,8 +61,9 @@ thiserror = "1.0"
ed25519-dalek = { version = "=1.0.0-pre.4", optional = true }
solana-crate-features = { path = "../crate-features", version = "1.5.0", optional = true }
solana-logger = { path = "../logger", version = "1.5.0", optional = true }
solana-frozen-abi = { path = "../frozen-abi", version = "1.5.0" }
solana-frozen-abi-macro = { path = "../frozen-abi/macro", version = "1.5.0" }
solana-sdk-macro = { path = "macro", version = "1.5.0" }
solana-sdk-macro-frozen-abi = { path = "macro-frozen-abi", version = "1.5.0" }
rustversion = "1.0.3"
libsecp256k1 = { version = "0.3.5", optional = true }
sha3 = { version = "0.9.1", optional = true }

View File

@ -1,27 +0,0 @@
extern crate rustc_version;
use rustc_version::{version_meta, Channel};
fn main() {
// Copied and adapted from
// https://github.com/Kimundi/rustc-version-rs/blob/1d692a965f4e48a8cb72e82cda953107c0d22f47/README.md#example
// Licensed under Apache-2.0 + MIT
match version_meta().unwrap().channel {
Channel::Stable => {
println!("cargo:rustc-cfg=RUSTC_WITHOUT_SPECIALIZATION");
}
Channel::Beta => {
println!("cargo:rustc-cfg=RUSTC_WITHOUT_SPECIALIZATION");
}
Channel::Nightly => {
println!("cargo:rustc-cfg=RUSTC_WITH_SPECIALIZATION");
}
Channel::Dev => {
println!("cargo:rustc-cfg=RUSTC_WITH_SPECIALIZATION");
// See https://github.com/solana-labs/solana/issues/11055
// We may be running the custom `rust-bpf-builder` toolchain,
// which currently needs `#![feature(proc_macro_hygiene)]` to
// be applied.
println!("cargo:rustc-cfg=RUSTC_NEEDS_PROC_MACRO_HYGIENE");
}
}
}

1
sdk/build.rs Symbolic link
View File

@ -0,0 +1 @@
../frozen-abi/build.rs

View File

@ -4,11 +4,6 @@
// Allows macro expansion of `use ::solana_sdk::*` to work within this crate
extern crate self as solana_sdk;
#[cfg(RUSTC_WITH_SPECIALIZATION)]
pub mod abi_digester;
#[cfg(RUSTC_WITH_SPECIALIZATION)]
pub mod abi_example;
pub mod account;
pub mod account_utils;
pub mod bpf_loader;
@ -131,4 +126,4 @@ pub extern crate bs58;
extern crate log as logger;
#[macro_use]
extern crate solana_sdk_macro_frozen_abi;
extern crate solana_frozen_abi_macro;

8
test-abi.sh Executable file
View File

@ -0,0 +1,8 @@
#!/usr/bin/env bash
#
# Easily run the ABI tests for the entire repo or a subset
#
here=$(dirname "$0")
set -x
exec ${here}/cargo nightly test --lib -- test_abi_

View File

@ -12,10 +12,11 @@ edition = "2018"
log = "0.4.8"
serde = "1.0.112"
serde_derive = "1.0.103"
solana-frozen-abi = { path = "../frozen-abi", version = "1.5.0" }
solana-frozen-abi-macro = { path = "../frozen-abi/macro", version = "1.5.0" }
solana-logger = { path = "../logger", version = "1.5.0" }
solana-sdk = { path = "../sdk", version = "1.5.0" }
solana-runtime = { path = "../runtime", version = "1.5.0" }
solana-sdk-macro-frozen-abi = { path = "../sdk/macro-frozen-abi", version = "1.5.0" }
[lib]
name = "solana_version"

View File

@ -1 +1 @@
../sdk/build.rs
../frozen-abi/build.rs

View File

@ -5,7 +5,7 @@ use serde_derive::{Deserialize, Serialize};
use solana_sdk::sanitize::Sanitize;
use std::{convert::TryInto, fmt};
#[macro_use]
extern crate solana_sdk_macro_frozen_abi;
extern crate solana_frozen_abi_macro;
// Older version structure used earlier 1.3.x releases
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, AbiExample)]