Move programs/Cargo.toml into bpf/
This commit is contained in:
parent
b830449f23
commit
41b5899856
|
@ -2027,6 +2027,17 @@ dependencies = [
|
||||||
"solana-sdk 0.12.0",
|
"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]]
|
[[package]]
|
||||||
name = "solana-bpfloader"
|
name = "solana-bpfloader"
|
||||||
version = "0.12.0"
|
version = "0.12.0"
|
||||||
|
@ -2216,17 +2227,6 @@ dependencies = [
|
||||||
"solana-sdk 0.12.0",
|
"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]]
|
[[package]]
|
||||||
name = "solana-replicator"
|
name = "solana-replicator"
|
||||||
version = "0.12.0"
|
version = "0.12.0"
|
||||||
|
|
|
@ -70,7 +70,7 @@ members = [
|
||||||
"ledger-tool",
|
"ledger-tool",
|
||||||
"logger",
|
"logger",
|
||||||
"metrics",
|
"metrics",
|
||||||
"programs",
|
"programs/bpf",
|
||||||
"programs/bpf_loader",
|
"programs/bpf_loader",
|
||||||
"programs/budget",
|
"programs/budget",
|
||||||
"programs/budget_api",
|
"programs/budget_api",
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[package]
|
[package]
|
||||||
name = "solana-programs"
|
name = "solana-bpf-programs"
|
||||||
description = "Blockchain, Rebuilt for Scale"
|
description = "Blockchain, Rebuilt for Scale"
|
||||||
version = "0.12.0"
|
version = "0.12.0"
|
||||||
documentation = "https://docs.rs/solana"
|
documentation = "https://docs.rs/solana"
|
||||||
|
@ -18,8 +18,8 @@ cuda = ["solana/cuda"]
|
||||||
erasure = ["solana/erasure"]
|
erasure = ["solana/erasure"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
solana = { path = "../core", version = "0.12.0" }
|
solana = { path = "../../core", version = "0.12.0" }
|
||||||
solana-bpfloader = { path = "bpf_loader", version = "0.12.0" }
|
solana-bpfloader = { path = "../bpf_loader", version = "0.12.0" }
|
||||||
solana-logger = { path = "../logger", version = "0.12.0" }
|
solana-logger = { path = "../../logger", version = "0.12.0" }
|
||||||
solana-native-loader = { path = "native_loader", version = "0.12.0" }
|
solana-native-loader = { path = "../native_loader", version = "0.12.0" }
|
||||||
solana-sdk = { path = "../sdk", version = "0.12.0" }
|
solana-sdk = { path = "../../sdk", version = "0.12.0" }
|
|
@ -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()
|
||||||
|
}
|
Loading…
Reference in New Issue