Forráskód Böngészése

Remove frozen ABI modules from solana-sdk

Michael Vines 5 éve
szülő
commit
6858950f76

+ 42 - 18
Cargo.lock

@@ -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",
 ]
 

+ 1 - 0
Cargo.toml

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

+ 2 - 1
core/Cargo.toml

@@ -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" }

+ 1 - 1
core/build.rs

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

+ 1 - 1
core/src/lib.rs

@@ -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 - 0
frozen-abi/Cargo.toml

@@ -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 - 0
frozen-abi/build.rs

@@ -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");
+        }
+    }
+}

+ 2 - 2
sdk/macro-frozen-abi/Cargo.toml → frozen-abi/macro/Cargo.toml

@@ -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/"

+ 0 - 0
sdk/macro-frozen-abi/build.rs → frozen-abi/macro/build.rs


+ 8 - 8
sdk/macro-frozen-abi/src/lib.rs → frozen-abi/macro/src/lib.rs

@@ -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();

+ 2 - 2
sdk/src/abi_digester.rs → frozen-abi/src/abi_digester.rs

@@ -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>,

+ 4 - 4
sdk/src/abi_example.rs → frozen-abi/src/abi_example.rs

@@ -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 - 0
frozen-abi/src/hash.rs

@@ -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 - 0
frozen-abi/src/lib.rs

@@ -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;

+ 37 - 15
programs/bpf/Cargo.lock

@@ -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",
 ]
 

+ 2 - 1
programs/stake/Cargo.toml

@@ -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]

+ 1 - 1
programs/stake/build.rs

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

+ 1 - 1
programs/stake/src/lib.rs

@@ -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;

+ 2 - 1
programs/vote/Cargo.toml

@@ -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]

+ 1 - 1
programs/vote/build.rs

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

+ 1 - 1
programs/vote/src/lib.rs

@@ -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");

+ 2 - 1
runtime/Cargo.toml

@@ -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" }

+ 1 - 1
runtime/build.rs

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

+ 1 - 1
runtime/src/accounts_db.rs

@@ -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();

+ 1 - 1
runtime/src/bank.rs

@@ -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 {

+ 1 - 1
runtime/src/lib.rs

@@ -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;

+ 1 - 1
runtime/src/message_processor.rs

@@ -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.

+ 1 - 1
runtime/src/serde_snapshot.rs

@@ -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;

+ 2 - 2
runtime/src/serde_snapshot/future.rs

@@ -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 {

+ 1 - 1
runtime/src/serde_snapshot/tests.rs

@@ -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")]

+ 1 - 1
runtime/src/serde_snapshot/utils.rs

@@ -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)]

+ 2 - 1
sdk/Cargo.toml

@@ -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 }

+ 0 - 27
sdk/build.rs

@@ -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 - 0
sdk/build.rs

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

+ 1 - 6
sdk/src/lib.rs

@@ -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 - 0
test-abi.sh

@@ -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_

+ 2 - 1
version/Cargo.toml

@@ -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"

+ 1 - 1
version/build.rs

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

+ 1 - 1
version/src/lib.rs

@@ -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)]