diff --git a/fetch-spl.sh b/fetch-spl.sh index 7f3d7f6f96..4cfa2a461e 100755 --- a/fetch-spl.sh +++ b/fetch-spl.sh @@ -10,10 +10,11 @@ fetch_program() { declare name=$1 declare version=$2 declare address=$3 + declare loader=$4 declare so=spl_$name-$version.so - genesis_args+=(--bpf-program "$address" "$so") + genesis_args+=(--bpf-program "$address" "$loader" "$so") if [[ -r $so ]]; then return @@ -36,8 +37,8 @@ fetch_program() { } -fetch_program token 1.0.0 TokenSVp5gheXUvJ6jGWGeCsgPKgnE3YgdGKRVCMY9o -fetch_program memo 1.0.0 Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo +fetch_program token 1.0.0 TokenSVp5gheXUvJ6jGWGeCsgPKgnE3YgdGKRVCMY9o BPFLoader1111111111111111111111111111111111 +fetch_program memo 1.0.0 Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo BPFLoader1111111111111111111111111111111111 echo "${genesis_args[@]}" > spl-genesis-args.sh diff --git a/genesis/src/main.rs b/genesis/src/main.rs index a4ca134a6a..093ec3f95e 100644 --- a/genesis/src/main.rs +++ b/genesis/src/main.rs @@ -12,7 +12,7 @@ use solana_ledger::{ use solana_runtime::hardened_unpack::MAX_GENESIS_ARCHIVE_UNPACKED_SIZE; use solana_sdk::{ account::Account, - bpf_loader, clock, + clock, epoch_schedule::EpochSchedule, fee_calculator::FeeRateGovernor, genesis_config::{GenesisConfig, OperatingMode}, @@ -353,7 +353,7 @@ fn main() -> Result<(), Box> { .long("bpf-program") .value_name("ADDRESS BPF_PROGRAM.SO") .takes_value(true) - .number_of_values(2) + .number_of_values(3) .multiple(true) .help("Install a BPF program at the given address"), ) @@ -553,14 +553,19 @@ fn main() -> Result<(), Box> { if let Some(values) = matches.values_of("bpf_program") { let values: Vec<&str> = values.collect::>(); - for address_program in values.chunks(2) { - match address_program { - [address, program] => { + for address_loader_program in values.chunks(3) { + match address_loader_program { + [address, loader, program] => { let address = address.parse::().unwrap_or_else(|err| { eprintln!("Error: invalid address {}: {}", address, err); process::exit(1); }); + let loader = loader.parse::().unwrap_or_else(|err| { + eprintln!("Error: invalid loader {}: {}", loader, err); + process::exit(1); + }); + let mut program_data = vec![]; File::open(program) .and_then(|mut file| file.read_to_end(&mut program_data)) @@ -574,7 +579,7 @@ fn main() -> Result<(), Box> { lamports: genesis_config.rent.minimum_balance(program_data.len()), data: program_data, executable: true, - owner: bpf_loader::id(), + owner: loader, rent_epoch: 0, }, );