From e8ad822111f7f6615a3968288168b0fdfe5c6b00 Mon Sep 17 00:00:00 2001 From: Rob Walker Date: Tue, 14 May 2019 10:44:16 -0700 Subject: [PATCH] get program names from programs (#4273) * get program names from programs * fixup --- Cargo.lock | 10 ++++++++++ bench-exchange/src/bench.rs | 2 +- bench-exchange/src/main.rs | 4 ++++ core/Cargo.toml | 4 ++++ core/src/fullnode.rs | 2 +- core/src/lib.rs | 3 +++ core/src/rpc_pubsub.rs | 2 +- genesis/Cargo.toml | 7 ++++++- genesis/src/main.rs | 26 +++++++++++++++----------- programs/budget_program/Cargo.toml | 3 +-- programs/budget_program/src/lib.rs | 8 +++++++- programs/config_program/Cargo.toml | 3 +-- programs/config_program/src/lib.rs | 6 ++++++ programs/exchange_program/Cargo.toml | 4 +--- programs/exchange_program/src/lib.rs | 9 +++++++++ programs/storage_program/Cargo.toml | 3 +-- programs/storage_program/src/lib.rs | 11 ++++++++++- programs/token_program/Cargo.toml | 3 +-- programs/token_program/src/lib.rs | 7 +++++++ runtime/Cargo.toml | 1 + runtime/src/bank.rs | 4 ---- runtime/src/genesis_utils.rs | 2 +- 22 files changed, 91 insertions(+), 33 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6205cf0c91..408a4deb80 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2194,8 +2194,10 @@ dependencies = [ "solana-budget-api 0.15.0", "solana-budget-program 0.15.0", "solana-client 0.15.0", + "solana-config-program 0.15.0", "solana-drone 0.15.0", "solana-ed25519-dalek 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-exchange-program 0.15.0", "solana-kvstore 0.15.0", "solana-logger 0.15.0", "solana-metrics 0.15.0", @@ -2203,7 +2205,9 @@ dependencies = [ "solana-runtime 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-storage-program 0.15.0", "solana-vote-api 0.15.0", "solana-vote-program 0.15.0", "solana-vote-signer 0.15.0", @@ -2457,13 +2461,18 @@ dependencies = [ "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", "solana 0.15.0", "solana-budget-api 0.15.0", + "solana-budget-program 0.15.0", "solana-config-api 0.15.0", + "solana-config-program 0.15.0", "solana-exchange-api 0.15.0", + "solana-exchange-program 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-storage-program 0.15.0", "solana-token-api 0.15.0", + "solana-token-program 0.15.0", "solana-vote-api 0.15.0", "solana-vote-program 0.15.0", ] @@ -2620,6 +2629,7 @@ dependencies = [ "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", "solana-logger 0.15.0", "solana-metrics 0.15.0", + "solana-noop-program 0.15.0", "solana-sdk 0.15.0", "solana-stake-api 0.15.0", "solana-vote-api 0.15.0", diff --git a/bench-exchange/src/bench.rs b/bench-exchange/src/bench.rs index 5cb108d7f4..f478e5b3f9 100644 --- a/bench-exchange/src/bench.rs +++ b/bench-exchange/src/bench.rs @@ -930,7 +930,7 @@ mod tests { node_stakes: vec![100_000; NUM_NODES], cluster_lamports: 100_000_000_000_000, fullnode_config, - native_instruction_processors: [("solana_exchange_program".to_string(), id())].to_vec(), + native_instruction_processors: [solana_exchange_program!()].to_vec(), ..ClusterConfig::default() }); diff --git a/bench-exchange/src/main.rs b/bench-exchange/src/main.rs index 4ceafedb0a..301ca2dd1b 100644 --- a/bench-exchange/src/main.rs +++ b/bench-exchange/src/main.rs @@ -2,6 +2,9 @@ pub mod bench; mod cli; pub mod order_book; +#[macro_use] +extern crate solana_exchange_program; + use crate::bench::{airdrop_lamports, do_bench_exchange, Config}; use log::*; use solana::gossip_service::{discover_nodes, get_clients}; @@ -42,6 +45,7 @@ fn main() { } info!("Funding keypair: {}", identity.pubkey()); + debug!("Exchange program name: {}", solana_exchange_program!().0); let accounts_in_groups = batch_size * account_groups; const NUM_SIGNERS: u64 = 2; diff --git a/core/Cargo.toml b/core/Cargo.toml index df842ab3d9..63f27bc3ef 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -58,9 +58,13 @@ solana-netutil = { path = "../netutil", version = "0.15.0" } solana-runtime = { path = "../runtime", version = "0.15.0" } solana-sdk = { path = "../sdk", 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-storage-program = { path = "../programs/storage_program", 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-exchange-program = { path = "../programs/exchange_program", version = "0.15.0" } +solana-config-program = { path = "../programs/config_program", version = "0.15.0" } solana-vote-signer = { path = "../vote-signer", version = "0.15.0" } sys-info = "0.5.6" tokio = "0.1" diff --git a/core/src/fullnode.rs b/core/src/fullnode.rs index b0764c37c3..d8e355a84e 100644 --- a/core/src/fullnode.rs +++ b/core/src/fullnode.rs @@ -409,7 +409,7 @@ pub fn new_fullnode_for_tests() -> (Fullnode, ContactInfo, Keypair, String) { create_genesis_block_with_leader(10_000, &contact_info.id, 42); genesis_block .native_instruction_processors - .push(("solana_budget_program".to_string(), solana_budget_api::id())); + .push(solana_budget_program!()); let (ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block); diff --git a/core/src/lib.rs b/core/src/lib.rs index 2d103053eb..ed16167a10 100644 --- a/core/src/lib.rs +++ b/core/src/lib.rs @@ -70,6 +70,9 @@ pub mod tvu; pub mod voting_keypair; pub mod window_service; +#[macro_use] +extern crate solana_budget_program; + #[cfg(test)] #[cfg(any(feature = "chacha", feature = "cuda"))] #[macro_use] diff --git a/core/src/rpc_pubsub.rs b/core/src/rpc_pubsub.rs index 6e449b16fd..b3b9eb6a0f 100644 --- a/core/src/rpc_pubsub.rs +++ b/core/src/rpc_pubsub.rs @@ -368,7 +368,7 @@ mod tests { // This test depends on the budget program genesis_block .native_instruction_processors - .push(("solana_budget_program".to_string(), solana_budget_api::id())); + .push(solana_budget_program!()); let bob_pubkey = Pubkey::new_rand(); let witness = Keypair::new(); diff --git a/genesis/Cargo.toml b/genesis/Cargo.toml index 101addab6d..f51deebd11 100644 --- a/genesis/Cargo.toml +++ b/genesis/Cargo.toml @@ -14,19 +14,24 @@ serde_json = "1.0.39" 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-budget-program = { path = "../programs/budget_program", 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-storage-program = { path = "../programs/storage_program", version = "0.15.0" } solana-token-api = { path = "../programs/token_api", version = "0.15.0" } +solana-token-program = { path = "../programs/token_program", version = "0.15.0" } solana-config-api = { path = "../programs/config_api", version = "0.15.0" } +solana-config-program = { path = "../programs/config_program", version = "0.15.0" } solana-exchange-api = { path = "../programs/exchange_api", version = "0.15.0" } - +solana-exchange-program = { path = "../programs/exchange_program", version = "0.15.0" } [dev-dependencies] hashbrown = "0.3.0" + [features] cuda = ["solana/cuda"] erasure = [] diff --git a/genesis/src/main.rs b/genesis/src/main.rs index 6230ac1102..0a931b811a 100644 --- a/genesis/src/main.rs +++ b/genesis/src/main.rs @@ -3,6 +3,16 @@ extern crate solana_vote_program; #[macro_use] extern crate solana_stake_program; +#[macro_use] +extern crate solana_budget_program; +#[macro_use] +extern crate solana_storage_program; +#[macro_use] +extern crate solana_token_program; +#[macro_use] +extern crate solana_config_program; +#[macro_use] +extern crate solana_exchange_program; use clap::{crate_description, crate_name, crate_version, value_t_or_exit, App, Arg}; use solana::blocktree::create_new_ledger; @@ -150,17 +160,11 @@ fn main() -> Result<(), Box> { &[ solana_vote_program!(), solana_stake_program!(), - ("solana_budget_program".to_string(), solana_budget_api::id()), - ( - "solana_storage_program".to_string(), - solana_storage_api::id(), - ), - ("solana_token_program".to_string(), solana_token_api::id()), - ("solana_config_program".to_string(), solana_config_api::id()), - ( - "solana_exchange_program".to_string(), - solana_exchange_api::id(), - ), + solana_budget_program!(), + solana_storage_program!(), + solana_token_program!(), + solana_config_program!(), + solana_exchange_program!(), ], ); genesis_block.fee_calculator.lamports_per_signature = diff --git a/programs/budget_program/Cargo.toml b/programs/budget_program/Cargo.toml index 5eaae5d8d2..ddcbb15ba6 100644 --- a/programs/budget_program/Cargo.toml +++ b/programs/budget_program/Cargo.toml @@ -16,5 +16,4 @@ solana-sdk = { path = "../../sdk", version = "0.15.0" } [lib] name = "solana_budget_program" -crate-type = ["cdylib"] - +crate-type = ["lib","cdylib"] diff --git a/programs/budget_program/src/lib.rs b/programs/budget_program/src/lib.rs index 562620570f..5a09e64039 100644 --- a/programs/budget_program/src/lib.rs +++ b/programs/budget_program/src/lib.rs @@ -1,3 +1,9 @@ -use solana_budget_api::budget_processor::process_instruction; +#[macro_export] +macro_rules! solana_budget_program { + () => { + ("solana_budget_program".to_string(), solana_budget_api::id()) + }; +} +use solana_budget_api::budget_processor::process_instruction; solana_sdk::solana_entrypoint!(process_instruction); diff --git a/programs/config_program/Cargo.toml b/programs/config_program/Cargo.toml index 52ca4c9d30..6a33d2d39a 100644 --- a/programs/config_program/Cargo.toml +++ b/programs/config_program/Cargo.toml @@ -16,5 +16,4 @@ solana-sdk = { path = "../../sdk", version = "0.15.0" } [lib] name = "solana_config_program" -crate-type = ["cdylib"] - +crate-type = ["lib","cdylib"] diff --git a/programs/config_program/src/lib.rs b/programs/config_program/src/lib.rs index a94f7c1fb8..8d0bb0d959 100644 --- a/programs/config_program/src/lib.rs +++ b/programs/config_program/src/lib.rs @@ -1,3 +1,9 @@ +#[macro_export] +macro_rules! solana_config_program { + () => { + ("solana_config_program".to_string(), solana_config_api::id()) + }; +} use solana_config_api::config_processor::process_instruction; solana_sdk::solana_entrypoint!(process_instruction); diff --git a/programs/exchange_program/Cargo.toml b/programs/exchange_program/Cargo.toml index 380b870f91..d1558945db 100644 --- a/programs/exchange_program/Cargo.toml +++ b/programs/exchange_program/Cargo.toml @@ -16,6 +16,4 @@ solana-sdk = { path = "../../sdk", version = "0.15.0" } [lib] name = "solana_exchange_program" -crate-type = ["cdylib"] - - +crate-type = ["lib","cdylib"] diff --git a/programs/exchange_program/src/lib.rs b/programs/exchange_program/src/lib.rs index b0227b11e6..e65b713a6a 100644 --- a/programs/exchange_program/src/lib.rs +++ b/programs/exchange_program/src/lib.rs @@ -1,3 +1,12 @@ +#[macro_export] +macro_rules! solana_exchange_program { + () => { + ( + "solana_exchange_program".to_string(), + solana_exchange_api::id(), + ) + }; +} use solana_exchange_api::exchange_processor::process_instruction; solana_sdk::solana_entrypoint!(process_instruction); diff --git a/programs/storage_program/Cargo.toml b/programs/storage_program/Cargo.toml index a8ebc5ea0f..61ae3f579b 100644 --- a/programs/storage_program/Cargo.toml +++ b/programs/storage_program/Cargo.toml @@ -16,5 +16,4 @@ solana-storage-api = { path = "../storage_api", version = "0.15.0" } [lib] name = "solana_storage_program" -crate-type = ["cdylib"] - +crate-type = ["lib", "cdylib"] diff --git a/programs/storage_program/src/lib.rs b/programs/storage_program/src/lib.rs index cfa19b82f5..7868bfd582 100644 --- a/programs/storage_program/src/lib.rs +++ b/programs/storage_program/src/lib.rs @@ -1,3 +1,12 @@ -use solana_storage_api::storage_processor::process_instruction; +#[macro_export] +macro_rules! solana_storage_program { + () => { + ( + "solana_storage_program".to_string(), + solana_storage_api::id(), + ) + }; +} +use solana_storage_api::storage_processor::process_instruction; solana_sdk::solana_entrypoint!(process_instruction); diff --git a/programs/token_program/Cargo.toml b/programs/token_program/Cargo.toml index 7ae4143d09..b02cb4b188 100644 --- a/programs/token_program/Cargo.toml +++ b/programs/token_program/Cargo.toml @@ -16,5 +16,4 @@ solana-token-api = { path = "../token_api", version = "0.15.0" } [lib] name = "solana_token_program" -crate-type = ["cdylib"] - +crate-type = ["lib","cdylib"] diff --git a/programs/token_program/src/lib.rs b/programs/token_program/src/lib.rs index 0139f55d0d..69449a3ccd 100644 --- a/programs/token_program/src/lib.rs +++ b/programs/token_program/src/lib.rs @@ -1,3 +1,10 @@ +#[macro_export] +macro_rules! solana_token_program { + () => { + ("solana_token_program".to_string(), solana_token_api::id()) + }; +} + use solana_token_api::token_processor::process_instruction; solana_sdk::solana_entrypoint!(process_instruction); diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 5070208395..40908e6ad2 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -29,6 +29,7 @@ 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" } +solana-noop-program = { path = "../programs/noop_program", version = "0.15.0" } [lib] name = "solana_runtime" diff --git a/runtime/src/bank.rs b/runtime/src/bank.rs index 1d89423f3b..eb5f033c45 100644 --- a/runtime/src/bank.rs +++ b/runtime/src/bank.rs @@ -284,10 +284,6 @@ impl Bank { "solana_bpf_loader", &solana_sdk::bpf_loader::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/genesis_utils.rs b/runtime/src/genesis_utils.rs index 9e521c0447..eaee50813a 100644 --- a/runtime/src/genesis_utils.rs +++ b/runtime/src/genesis_utils.rs @@ -53,7 +53,7 @@ pub fn create_genesis_block_with_leader( ), ), ], - &[], + &[solana_vote_program!()], ); (genesis_block, mint_keypair, voting_keypair)