diff --git a/Cargo.lock b/Cargo.lock index a475ecbb4f..6205cf0c91 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2461,9 +2461,11 @@ dependencies = [ "solana-exchange-api 0.15.0", "solana-sdk 0.15.0", "solana-stake-api 0.15.0", + "solana-stake-program 0.15.0", "solana-storage-api 0.15.0", "solana-token-api 0.15.0", "solana-vote-api 0.15.0", + "solana-vote-program 0.15.0", ] [[package]] @@ -2621,6 +2623,7 @@ dependencies = [ "solana-sdk 0.15.0", "solana-stake-api 0.15.0", "solana-vote-api 0.15.0", + "solana-vote-program 0.15.0", ] [[package]] diff --git a/genesis/Cargo.toml b/genesis/Cargo.toml index f017640aa9..101addab6d 100644 --- a/genesis/Cargo.toml +++ b/genesis/Cargo.toml @@ -15,7 +15,9 @@ solana = { path = "../core", version = "0.15.0" } solana-sdk = { path = "../sdk", version = "0.15.0" } solana-budget-api = { path = "../programs/budget_api", version = "0.15.0" } solana-vote-api = { path = "../programs/vote_api", version = "0.15.0" } +solana-vote-program = { path = "../programs/vote_program", version = "0.15.0" } solana-stake-api = { path = "../programs/stake_api", version = "0.15.0" } +solana-stake-program = { path = "../programs/stake_program", version = "0.15.0" } solana-storage-api = { path = "../programs/storage_api", version = "0.15.0" } solana-token-api = { path = "../programs/token_api", version = "0.15.0" } solana-config-api = { path = "../programs/config_api", version = "0.15.0" } diff --git a/genesis/src/main.rs b/genesis/src/main.rs index 9a6e45356d..6230ac1102 100644 --- a/genesis/src/main.rs +++ b/genesis/src/main.rs @@ -1,4 +1,8 @@ //! A command-line executable for generating the chain's genesis block. +#[macro_use] +extern crate solana_vote_program; +#[macro_use] +extern crate solana_stake_program; use clap::{crate_description, crate_name, crate_version, value_t_or_exit, App, Arg}; use solana::blocktree::create_new_ledger; @@ -144,8 +148,8 @@ fn main() -> Result<(), Box> { ), ], &[ - ("solana_vote_program".to_string(), solana_vote_api::id()), - ("solana_stake_program".to_string(), solana_stake_api::id()), + solana_vote_program!(), + solana_stake_program!(), ("solana_budget_program".to_string(), solana_budget_api::id()), ( "solana_storage_program".to_string(), diff --git a/programs/stake_program/Cargo.toml b/programs/stake_program/Cargo.toml index d73ca1c925..1e47ef753b 100644 --- a/programs/stake_program/Cargo.toml +++ b/programs/stake_program/Cargo.toml @@ -16,5 +16,4 @@ solana-stake-api = { path = "../stake_api", version = "0.15.0" } [lib] name = "solana_stake_program" -crate-type = ["cdylib"] - +crate-type = ["lib", "cdylib"] diff --git a/programs/stake_program/src/lib.rs b/programs/stake_program/src/lib.rs index 8cd37c3974..31ad5f4683 100644 --- a/programs/stake_program/src/lib.rs +++ b/programs/stake_program/src/lib.rs @@ -1,3 +1,9 @@ -use solana_stake_api::stake_instruction::process_instruction; +#[macro_export] +macro_rules! solana_stake_program { + () => { + ("solana_stake_program".to_string(), solana_stake_api::id()) + }; +} +use solana_stake_api::stake_instruction::process_instruction; solana_sdk::solana_entrypoint!(process_instruction); diff --git a/programs/vote_program/Cargo.toml b/programs/vote_program/Cargo.toml index eb1e91057d..f3ea5681c9 100644 --- a/programs/vote_program/Cargo.toml +++ b/programs/vote_program/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "solana-vote-program" version = "0.15.0" -description = "Solana vote program" +description = "Solana Vote program" authors = ["Solana Maintainers "] repository = "https://github.com/solana-labs/solana" license = "Apache-2.0" @@ -16,5 +16,4 @@ solana-vote-api = { path = "../vote_api", version = "0.15.0" } [lib] name = "solana_vote_program" -crate-type = ["cdylib"] - +crate-type = ["lib","cdylib"] diff --git a/programs/vote_program/src/lib.rs b/programs/vote_program/src/lib.rs index bda9f1a50c..27ef5e25e7 100644 --- a/programs/vote_program/src/lib.rs +++ b/programs/vote_program/src/lib.rs @@ -1,3 +1,9 @@ -use solana_vote_api::vote_instruction::process_instruction; +#[macro_export] +macro_rules! solana_vote_program { + () => { + ("solana_vote_program".to_string(), solana_vote_api::id()) + }; +} +use solana_vote_api::vote_instruction::process_instruction; solana_sdk::solana_entrypoint!(process_instruction); diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index cf2d78d261..5070208395 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -28,6 +28,7 @@ solana-metrics = { path = "../metrics", version = "0.15.0" } solana-sdk = { path = "../sdk", version = "0.15.0" } solana-stake-api = { path = "../programs/stake_api", version = "0.15.0" } solana-vote-api = { path = "../programs/vote_api", version = "0.15.0" } +solana-vote-program = { path = "../programs/vote_program", version = "0.15.0" } [lib] name = "solana_runtime" diff --git a/runtime/src/bank.rs b/runtime/src/bank.rs index 4f1ed5a24c..22ec403e33 100644 --- a/runtime/src/bank.rs +++ b/runtime/src/bank.rs @@ -2,7 +2,6 @@ //! programs. It offers a high-level API that signs transactions //! on behalf of the caller, and a low-level API for when they have //! already been signed and verified. - use crate::accounts::{AccountLockType, Accounts}; use crate::accounts_db::{ErrorCounters, InstructionAccounts, InstructionLoaders}; use crate::accounts_index::Fork; @@ -383,7 +382,10 @@ impl Bank { "solana_bpf_loader", &solana_sdk::bpf_loader::id(), ); - self.register_native_instruction_processor("solana_vote_program", &solana_vote_api::id()); + self.register_native_instruction_processor( + &solana_vote_program!().0, + &solana_vote_program!().1, + ); // Add additional native programs specified in the genesis block for (name, program_id) in &genesis_block.native_instruction_processors { diff --git a/runtime/src/lib.rs b/runtime/src/lib.rs index d823d3e644..ccfa06bcb8 100644 --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -17,5 +17,8 @@ mod system_instruction_processor; #[macro_use] extern crate solana_metrics; +#[macro_use] +extern crate solana_vote_program; + #[macro_use] extern crate serde_derive;