Create a random `-keypair.json` file alongside the program deploy artifact for easy upgrades
This commit is contained in:
parent
9993d2c623
commit
636a455790
|
@ -3841,6 +3841,7 @@ version = "1.6.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cargo_metadata",
|
"cargo_metadata",
|
||||||
"clap",
|
"clap",
|
||||||
|
"solana-sdk",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
|
@ -12,6 +12,7 @@ publish = false
|
||||||
[dependencies]
|
[dependencies]
|
||||||
clap = "2.33.3"
|
clap = "2.33.3"
|
||||||
cargo_metadata = "0.12.0"
|
cargo_metadata = "0.12.0"
|
||||||
|
solana-sdk = { path = "..", version = "1.6.0" }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
program = []
|
program = []
|
||||||
|
|
|
@ -1,13 +1,16 @@
|
||||||
use clap::{
|
use {
|
||||||
|
clap::{
|
||||||
crate_description, crate_name, crate_version, value_t, value_t_or_exit, values_t, App, Arg,
|
crate_description, crate_name, crate_version, value_t, value_t_or_exit, values_t, App, Arg,
|
||||||
};
|
},
|
||||||
use std::{
|
solana_sdk::signature::{write_keypair_file, Keypair},
|
||||||
|
std::{
|
||||||
env,
|
env,
|
||||||
ffi::OsStr,
|
ffi::OsStr,
|
||||||
fs,
|
fs,
|
||||||
path::{Path, PathBuf},
|
path::{Path, PathBuf},
|
||||||
process::exit,
|
process::exit,
|
||||||
process::Command,
|
process::Command,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Config {
|
struct Config {
|
||||||
|
@ -166,6 +169,7 @@ fn build_bpf_package(
|
||||||
let program_unstripped_so = target_build_directory.join(&format!("{}.so", program_name));
|
let program_unstripped_so = target_build_directory.join(&format!("{}.so", program_name));
|
||||||
let program_dump = bpf_out_dir.join(&format!("{}-dump.txt", program_name));
|
let program_dump = bpf_out_dir.join(&format!("{}-dump.txt", program_name));
|
||||||
let program_so = bpf_out_dir.join(&format!("{}.so", program_name));
|
let program_so = bpf_out_dir.join(&format!("{}.so", program_name));
|
||||||
|
let program_keypair = bpf_out_dir.join(&format!("{}-keypair.json", program_name));
|
||||||
|
|
||||||
fn file_older_or_missing(prerequisite_file: &Path, target_file: &Path) -> bool {
|
fn file_older_or_missing(prerequisite_file: &Path, target_file: &Path) -> bool {
|
||||||
let prerequisite_metadata = fs::metadata(prerequisite_file).unwrap_or_else(|err| {
|
let prerequisite_metadata = fs::metadata(prerequisite_file).unwrap_or_else(|err| {
|
||||||
|
@ -186,6 +190,17 @@ fn build_bpf_package(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !program_keypair.exists() {
|
||||||
|
write_keypair_file(&Keypair::new(), &program_keypair).unwrap_or_else(|err| {
|
||||||
|
eprintln!(
|
||||||
|
"Unable to get create {}: {}",
|
||||||
|
program_keypair.display(),
|
||||||
|
err
|
||||||
|
);
|
||||||
|
exit(1);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if file_older_or_missing(&program_unstripped_so, &program_so) {
|
if file_older_or_missing(&program_unstripped_so, &program_so) {
|
||||||
spawn(
|
spawn(
|
||||||
&config.bpf_sdk.join("scripts/strip.sh"),
|
&config.bpf_sdk.join("scripts/strip.sh"),
|
||||||
|
|
Loading…
Reference in New Issue