Move programs/Cargo.toml into bpf/

This commit is contained in:
Greg Fitzgerald 2019-03-02 21:03:36 -07:00 committed by Grimes
parent b830449f23
commit 41b5899856
5 changed files with 60 additions and 18 deletions

22
Cargo.lock generated
View File

@ -2027,6 +2027,17 @@ dependencies = [
"solana-sdk 0.12.0",
]
[[package]]
name = "solana-bpf-programs"
version = "0.12.0"
dependencies = [
"solana 0.12.0",
"solana-bpfloader 0.12.0",
"solana-logger 0.12.0",
"solana-native-loader 0.12.0",
"solana-sdk 0.12.0",
]
[[package]]
name = "solana-bpfloader"
version = "0.12.0"
@ -2216,17 +2227,6 @@ dependencies = [
"solana-sdk 0.12.0",
]
[[package]]
name = "solana-programs"
version = "0.12.0"
dependencies = [
"solana 0.12.0",
"solana-bpfloader 0.12.0",
"solana-logger 0.12.0",
"solana-native-loader 0.12.0",
"solana-sdk 0.12.0",
]
[[package]]
name = "solana-replicator"
version = "0.12.0"

View File

@ -70,7 +70,7 @@ members = [
"ledger-tool",
"logger",
"metrics",
"programs",
"programs/bpf",
"programs/bpf_loader",
"programs/budget",
"programs/budget_api",

View File

@ -1,5 +1,5 @@
[package]
name = "solana-programs"
name = "solana-bpf-programs"
description = "Blockchain, Rebuilt for Scale"
version = "0.12.0"
documentation = "https://docs.rs/solana"
@ -18,8 +18,8 @@ cuda = ["solana/cuda"]
erasure = ["solana/erasure"]
[dependencies]
solana = { path = "../core", version = "0.12.0" }
solana-bpfloader = { path = "bpf_loader", version = "0.12.0" }
solana-logger = { path = "../logger", version = "0.12.0" }
solana-native-loader = { path = "native_loader", version = "0.12.0" }
solana-sdk = { path = "../sdk", version = "0.12.0" }
solana = { path = "../../core", version = "0.12.0" }
solana-bpfloader = { path = "../bpf_loader", version = "0.12.0" }
solana-logger = { path = "../../logger", version = "0.12.0" }
solana-native-loader = { path = "../native_loader", version = "0.12.0" }
solana-sdk = { path = "../../sdk", version = "0.12.0" }

View File

@ -0,0 +1,42 @@
use crate::bank::Bank;
use solana_sdk::loader_transaction::LoaderTransaction;
use solana_sdk::pubkey::Pubkey;
use solana_sdk::signature::{Keypair, KeypairUtil};
use solana_sdk::system_transaction::SystemTransaction;
pub fn load_program(bank: &Bank, from: &Keypair, loader_id: Pubkey, program: Vec<u8>) -> Pubkey {
let program_account = Keypair::new();
let tx = SystemTransaction::new_program_account(
from,
program_account.pubkey(),
bank.last_blockhash(),
1,
program.len() as u64,
loader_id,
0,
);
bank.process_transaction(&tx).unwrap();
assert_eq!(bank.get_signature_status(&tx.signatures[0]), Some(Ok(())));
let chunk_size = 256; // Size of chunk just needs to fit into tx
let mut offset = 0;
for chunk in program.chunks(chunk_size) {
let tx = LoaderTransaction::new_write(
&program_account,
loader_id,
offset,
chunk.to_vec(),
bank.last_blockhash(),
0,
);
bank.process_transaction(&tx).unwrap();
offset += chunk_size as u32;
}
let tx = LoaderTransaction::new_finalize(&program_account, loader_id, bank.last_blockhash(), 0);
bank.process_transaction(&tx).unwrap();
assert_eq!(bank.get_signature_status(&tx.signatures[0]), Some(Ok(())));
program_account.pubkey()
}