Skip to content

Commit 863274e

Browse files
authored
remove solana-sdk from bpf-loader-program (#4322)
1 parent 9808a90 commit 863274e

File tree

9 files changed

+213
-128
lines changed

9 files changed

+213
-128
lines changed

Cargo.lock

+27-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

programs/bpf_loader/Cargo.toml

+29-2
Original file line numberDiff line numberDiff line change
@@ -14,26 +14,53 @@ bincode = { workspace = true }
1414
byteorder = { workspace = true }
1515
libsecp256k1 = { workspace = true }
1616
scopeguard = { workspace = true }
17+
solana-account = { workspace = true }
18+
solana-account-info = { workspace = true }
19+
solana-bincode = { workspace = true }
1720
solana-bn254 = { workspace = true }
21+
solana-clock = { workspace = true }
1822
solana-compute-budget = { workspace = true }
23+
solana-cpi = { workspace = true }
1924
solana-curve25519 = { workspace = true }
2025
solana-define-syscall = { workspace = true }
2126
solana-feature-set = { workspace = true }
27+
solana-hash = { workspace = true }
28+
solana-instruction = { workspace = true }
29+
solana-keccak-hasher = { workspace = true }
2230
solana-log-collector = { workspace = true }
2331
solana-measure = { workspace = true }
32+
solana-packet = { workspace = true }
2433
solana-poseidon = { workspace = true }
34+
solana-precompiles = { workspace = true }
35+
solana-program = { workspace = true }
36+
solana-program-entrypoint = { workspace = true }
2537
solana-program-memory = { workspace = true }
2638
solana-program-runtime = { workspace = true, features = ["metrics"] }
39+
solana-pubkey = { workspace = true }
2740
solana-sbpf = { workspace = true }
28-
solana-sdk = { workspace = true }
41+
solana-sdk-ids = { workspace = true }
42+
solana-secp256k1-recover = { workspace = true }
43+
solana-sha256-hasher = { workspace = true }
44+
solana-stable-layout = { workspace = true }
45+
solana-system-interface = { workspace = true }
46+
solana-sysvar = { workspace = true }
47+
solana-sysvar-id = { workspace = true }
2948
solana-timings = { workspace = true }
49+
solana-transaction-context = { workspace = true, features = ["bincode"] }
3050
solana-type-overrides = { workspace = true }
3151
thiserror = { workspace = true }
3252

3353
[dev-dependencies]
3454
assert_matches = { workspace = true }
3555
rand = { workspace = true }
36-
solana-sdk = { workspace = true, features = ["dev-context-only-utils"] }
56+
solana-epoch-rewards = { workspace = true }
57+
solana-epoch-schedule = { workspace = true }
58+
solana-fee-calculator = { workspace = true }
59+
solana-last-restart-slot = { workspace = true }
60+
solana-pubkey = { workspace = true, features = ["rand"] }
61+
solana-rent = { workspace = true }
62+
solana-slot-hashes = { workspace = true }
63+
solana-transaction-context = { workspace = true, features = ["dev-context-only-utils"] }
3764
test-case = { workspace = true }
3865

3966
[lib]

programs/bpf_loader/benches/serialization.rs

+12-14
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,17 @@
33
extern crate test;
44

55
use {
6+
solana_account::{Account, AccountSharedData},
67
solana_bpf_loader_program::serialization::serialize_parameters,
7-
solana_sdk::{
8-
account::{Account, AccountSharedData},
9-
bpf_loader, bpf_loader_deprecated,
10-
pubkey::Pubkey,
11-
sysvar::rent::Rent,
12-
transaction_context::{IndexOfAccount, InstructionAccount, TransactionContext},
13-
},
8+
solana_pubkey::Pubkey,
9+
solana_rent::Rent,
10+
solana_sdk_ids::{bpf_loader, bpf_loader_deprecated},
11+
solana_transaction_context::{IndexOfAccount, InstructionAccount, TransactionContext},
1412
test::Bencher,
1513
};
1614

1715
fn create_inputs(owner: Pubkey, num_instruction_accounts: usize) -> TransactionContext {
18-
let program_id = solana_sdk::pubkey::new_rand();
16+
let program_id = solana_pubkey::new_rand();
1917
let transaction_accounts = vec![
2018
(
2119
program_id,
@@ -28,7 +26,7 @@ fn create_inputs(owner: Pubkey, num_instruction_accounts: usize) -> TransactionC
2826
}),
2927
),
3028
(
31-
solana_sdk::pubkey::new_rand(),
29+
solana_pubkey::new_rand(),
3230
AccountSharedData::from(Account {
3331
lamports: 1,
3432
data: vec![1u8; 100000],
@@ -38,7 +36,7 @@ fn create_inputs(owner: Pubkey, num_instruction_accounts: usize) -> TransactionC
3836
}),
3937
),
4038
(
41-
solana_sdk::pubkey::new_rand(),
39+
solana_pubkey::new_rand(),
4240
AccountSharedData::from(Account {
4341
lamports: 2,
4442
data: vec![11u8; 100000],
@@ -48,7 +46,7 @@ fn create_inputs(owner: Pubkey, num_instruction_accounts: usize) -> TransactionC
4846
}),
4947
),
5048
(
51-
solana_sdk::pubkey::new_rand(),
49+
solana_pubkey::new_rand(),
5250
AccountSharedData::from(Account {
5351
lamports: 3,
5452
data: vec![],
@@ -58,7 +56,7 @@ fn create_inputs(owner: Pubkey, num_instruction_accounts: usize) -> TransactionC
5856
}),
5957
),
6058
(
61-
solana_sdk::pubkey::new_rand(),
59+
solana_pubkey::new_rand(),
6260
AccountSharedData::from(Account {
6361
lamports: 4,
6462
data: vec![1u8; 100000],
@@ -68,7 +66,7 @@ fn create_inputs(owner: Pubkey, num_instruction_accounts: usize) -> TransactionC
6866
}),
6967
),
7068
(
71-
solana_sdk::pubkey::new_rand(),
69+
solana_pubkey::new_rand(),
7270
AccountSharedData::from(Account {
7371
lamports: 5,
7472
data: vec![11u8; 10000],
@@ -78,7 +76,7 @@ fn create_inputs(owner: Pubkey, num_instruction_accounts: usize) -> TransactionC
7876
}),
7977
),
8078
(
81-
solana_sdk::pubkey::new_rand(),
79+
solana_pubkey::new_rand(),
8280
AccountSharedData::from(Account {
8381
lamports: 6,
8482
data: vec![],

programs/bpf_loader/src/lib.rs

+27-30
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,22 @@ pub mod serialization;
55
pub mod syscalls;
66

77
use {
8+
solana_account::WritableAccount,
9+
solana_bincode::limited_deserialize,
10+
solana_clock::Slot,
811
solana_compute_budget::compute_budget::MAX_INSTRUCTION_STACK_DEPTH,
912
solana_feature_set::{
1013
bpf_account_data_direct_mapping, enable_bpf_loader_set_authority_checked_ix,
1114
remove_accounts_executable_flag_checks,
1215
},
16+
solana_instruction::{error::InstructionError, AccountMeta},
1317
solana_log_collector::{ic_logger_msg, ic_msg, LogCollector},
1418
solana_measure::measure::Measure,
19+
solana_program::{
20+
bpf_loader_upgradeable::UpgradeableLoaderState,
21+
loader_upgradeable_instruction::UpgradeableLoaderInstruction,
22+
},
23+
solana_program_entrypoint::{MAX_PERMITTED_DATA_INCREASE, SUCCESS},
1524
solana_program_runtime::{
1625
invoke_context::{BpfAllocator, InvokeContext, SerializedAccountMetadata, SyscallContext},
1726
loaded_programs::{
@@ -22,6 +31,7 @@ use {
2231
stable_log,
2332
sysvar_cache::get_sysvar_with_account_check,
2433
},
34+
solana_pubkey::Pubkey,
2535
solana_sbpf::{
2636
declare_builtin_function,
2737
ebpf::{self, MM_HEAP_START},
@@ -32,20 +42,11 @@ use {
3242
verifier::RequisiteVerifier,
3343
vm::{ContextObject, EbpfVm},
3444
},
35-
solana_sdk::{
36-
account::WritableAccount,
37-
bpf_loader, bpf_loader_deprecated,
38-
bpf_loader_upgradeable::{self, UpgradeableLoaderState},
39-
clock::Slot,
40-
entrypoint::{MAX_PERMITTED_DATA_INCREASE, SUCCESS},
41-
instruction::{AccountMeta, InstructionError},
42-
loader_upgradeable_instruction::UpgradeableLoaderInstruction,
43-
loader_v4, native_loader,
44-
program_utils::limited_deserialize,
45-
pubkey::Pubkey,
46-
system_instruction::{self, MAX_PERMITTED_DATA_LENGTH},
47-
transaction_context::{IndexOfAccount, InstructionContext, TransactionContext},
45+
solana_sdk_ids::{
46+
bpf_loader, bpf_loader_deprecated, bpf_loader_upgradeable, loader_v4, native_loader,
4847
},
48+
solana_system_interface::{instruction as system_instruction, MAX_PERMITTED_DATA_LENGTH},
49+
solana_transaction_context::{IndexOfAccount, InstructionContext, TransactionContext},
4950
solana_type_overrides::sync::{atomic::Ordering, Arc},
5051
std::{cell::RefCell, mem, rc::Rc},
5152
syscalls::{create_program_runtime_environment_v1, morph_into_deployment_environment_v1},
@@ -511,7 +512,7 @@ fn process_loader_upgradeable_instruction(
511512
let instruction_data = instruction_context.get_instruction_data();
512513
let program_id = instruction_context.get_last_program_key(transaction_context)?;
513514

514-
match limited_deserialize(instruction_data)? {
515+
match limited_deserialize(instruction_data, solana_packet::PACKET_DATA_SIZE as u64)? {
515516
UpgradeableLoaderInstruction::InitializeBuffer => {
516517
instruction_context.check_number_of_instruction_accounts(2)?;
517518
let mut buffer =
@@ -677,7 +678,7 @@ fn process_loader_upgradeable_instruction(
677678
let signers = [[new_program_id.as_ref(), &[bump_seed]]]
678679
.iter()
679680
.map(|seeds| Pubkey::create_program_address(seeds, caller_program_id))
680-
.collect::<Result<Vec<Pubkey>, solana_sdk::pubkey::PubkeyError>>()?;
681+
.collect::<Result<Vec<Pubkey>, solana_pubkey::PubkeyError>>()?;
681682
invoke_context.native_invoke(instruction.into(), signers.as_slice())?;
682683

683684
// Load and verify the program bits
@@ -1572,9 +1573,8 @@ pub fn execute<'a, 'b: 'a>(
15721573

15731574
pub mod test_utils {
15741575
use {
1575-
super::*,
1576+
super::*, solana_account::ReadableAccount, solana_program::loader_v4::LoaderV4State,
15761577
solana_program_runtime::loaded_programs::DELAY_VISIBILITY_SLOT_OFFSET,
1577-
solana_sdk::{account::ReadableAccount, loader_v4::LoaderV4State},
15781578
};
15791579

15801580
pub fn load_all_invoked_programs(invoke_context: &mut InvokeContext) {
@@ -1637,22 +1637,19 @@ mod tests {
16371637
super::*,
16381638
assert_matches::assert_matches,
16391639
rand::Rng,
1640+
solana_account::{
1641+
create_account_shared_data_for_test as create_account_for_test, state_traits::StateMut,
1642+
AccountSharedData, ReadableAccount, WritableAccount,
1643+
},
1644+
solana_clock::Clock,
1645+
solana_epoch_schedule::EpochSchedule,
1646+
solana_instruction::{error::InstructionError, AccountMeta},
16401647
solana_program_runtime::{
16411648
invoke_context::mock_process_instruction, with_mock_invoke_context,
16421649
},
1643-
solana_sdk::{
1644-
account::{
1645-
create_account_shared_data_for_test as create_account_for_test, AccountSharedData,
1646-
ReadableAccount, WritableAccount,
1647-
},
1648-
account_utils::StateMut,
1649-
clock::Clock,
1650-
epoch_schedule::EpochSchedule,
1651-
instruction::{AccountMeta, InstructionError},
1652-
pubkey::Pubkey,
1653-
rent::Rent,
1654-
system_program, sysvar,
1655-
},
1650+
solana_pubkey::Pubkey,
1651+
solana_rent::Rent,
1652+
solana_sdk_ids::{system_program, sysvar},
16561653
std::{fs::File, io::Read, ops::Range, sync::atomic::AtomicU64},
16571654
};
16581655

0 commit comments

Comments
 (0)