Add script for running nightly rustfmt on all workspaces (#23244)

* Add script for running nightly rustfmt on all workspaces

* invalidate ci cache
This commit is contained in:
Justin Starry 2022-02-22 11:59:06 +08:00 committed by GitHub
parent 72c68695b5
commit c97f34a0fd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
46 changed files with 327 additions and 296 deletions

View File

@ -19,7 +19,8 @@ pattern='^[0-9]+\.[0-9]+\.[0-9]+$'
if [[ ${HOST_RUST_VERSION} =~ ${pattern} ]]; then if [[ ${HOST_RUST_VERSION} =~ ${pattern} ]]; then
HOST_RUST_VERSION="${rust_stable%.*}" HOST_RUST_VERSION="${rust_stable%.*}"
fi fi
export CARGO_TARGET_CACHE=$HOME/cargo-target-cache/"$CHANNEL"-"$BUILDKITE_LABEL"-"$SBF_TOOLS_VERSION"-"$HOST_RUST_VERSION" CACHE_VERSION=1 # bump version to invalidate caches
export CARGO_TARGET_CACHE=$HOME/cargo-target-cache/"$CHANNEL"-"$BUILDKITE_LABEL"-"$SBF_TOOLS_VERSION"-"$HOST_RUST_VERSION"-"$CACHE_VERSION"
( (
set -x set -x
MAX_CACHE_SIZE=18 # gigabytes MAX_CACHE_SIZE=18 # gigabytes

View File

@ -69,20 +69,14 @@ _ ci/order-crates-for-publishing.py
# run nightly clippy for `sdk/` as there's a moderate amount of nightly-only code there # run nightly clippy for `sdk/` as there's a moderate amount of nightly-only code there
_ "$cargo" nightly clippy -Zunstable-options --workspace --all-targets -- --deny=warnings --deny=clippy::integer_arithmetic _ "$cargo" nightly clippy -Zunstable-options --workspace --all-targets -- --deny=warnings --deny=clippy::integer_arithmetic
_ "$cargo" stable fmt --all -- --check _ "$cargo" nightly fmt --all -- --check
_ ci/do-audit.sh _ ci/do-audit.sh
{ {
cd programs/bpf cd programs/bpf
for project in rust/*/ ; do _ "$cargo" nightly clippy --all -- --deny=warnings --allow=clippy::missing_safety_doc
echo "+++ do_bpf_checks $project" _ "$cargo" nightly fmt --all -- --check
(
cd "$project"
_ "$cargo" nightly clippy -- --deny=warnings --allow=clippy::missing_safety_doc
_ "$cargo" stable fmt -- --check
)
done
} }
echo --- ok echo --- ok

View File

@ -5,24 +5,25 @@ extern crate test;
#[macro_use] #[macro_use]
extern crate solana_bpf_loader_program; extern crate solana_bpf_loader_program;
use byteorder::{ByteOrder, LittleEndian, WriteBytesExt}; use {
use solana_bpf_loader_program::{ byteorder::{ByteOrder, LittleEndian, WriteBytesExt},
solana_bpf_loader_program::{
create_vm, serialization::serialize_parameters, syscalls::register_syscalls, BpfError, create_vm, serialization::serialize_parameters, syscalls::register_syscalls, BpfError,
ThisInstructionMeter, ThisInstructionMeter,
}; },
use solana_measure::measure::Measure; solana_measure::measure::Measure,
use solana_program_runtime::invoke_context::with_mock_invoke_context; solana_program_runtime::invoke_context::with_mock_invoke_context,
use solana_rbpf::{ solana_rbpf::{
elf::Executable, elf::Executable,
vm::{Config, InstructionMeter, SyscallRegistry}, vm::{Config, InstructionMeter, SyscallRegistry},
}; },
use solana_runtime::{ solana_runtime::{
bank::Bank, bank::Bank,
bank_client::BankClient, bank_client::BankClient,
genesis_utils::{create_genesis_config, GenesisConfigInfo}, genesis_utils::{create_genesis_config, GenesisConfigInfo},
loader_utils::load_program, loader_utils::load_program,
}; },
use solana_sdk::{ solana_sdk::{
bpf_loader, bpf_loader,
client::SyncClient, client::SyncClient,
entrypoint::SUCCESS, entrypoint::SUCCESS,
@ -30,9 +31,10 @@ use solana_sdk::{
message::Message, message::Message,
pubkey::Pubkey, pubkey::Pubkey,
signature::{Keypair, Signer}, signature::{Keypair, Signer},
},
std::{env, fs::File, io::Read, mem, path::PathBuf, sync::Arc},
test::Bencher,
}; };
use std::{env, fs::File, io::Read, mem, path::PathBuf, sync::Arc};
use test::Bencher;
/// BPF program file extension /// BPF program file extension
const PLATFORM_FILE_EXTENSION_BPF: &str = "so"; const PLATFORM_FILE_EXTENSION_BPF: &str = "so";

View File

@ -1,7 +1,9 @@
extern crate walkdir; extern crate walkdir;
use std::{env, path::Path, process::Command}; use {
use walkdir::WalkDir; std::{env, path::Path, process::Command},
walkdir::WalkDir,
};
fn rerun_if_changed(files: &[&str], directories: &[&str], excludes: &[&str]) { fn rerun_if_changed(files: &[&str], directories: &[&str], excludes: &[&str]) {
let mut all_files: Vec<_> = files.iter().map(|f| f.to_string()).collect(); let mut all_files: Vec<_> = files.iter().map(|f| f.to_string()).collect();

View File

@ -2,8 +2,10 @@
#[macro_use] #[macro_use]
extern crate alloc; extern crate alloc;
use solana_program::{custom_panic_default, entrypoint::SUCCESS, log::sol_log_64, msg}; use {
use std::{alloc::Layout, mem}; solana_program::{custom_panic_default, entrypoint::SUCCESS, log::sol_log_64, msg},
std::{alloc::Layout, mem},
};
#[no_mangle] #[no_mangle]
pub extern "C" fn entrypoint(_input: *mut u8) -> u64 { pub extern "C" fn entrypoint(_input: *mut u8) -> u64 {

View File

@ -1,15 +1,16 @@
use solana_program::{ use {
solana_program::{
account_info::AccountInfo, account_info::AccountInfo,
entrypoint,
entrypoint::ProgramResult, entrypoint::ProgramResult,
instruction::{AccountMeta, Instruction}, instruction::{AccountMeta, Instruction},
msg, msg,
program::invoke, program::invoke,
pubkey::Pubkey, pubkey::Pubkey,
},
std::convert::TryInto,
}; };
use std::convert::TryInto;
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
fn process_instruction( fn process_instruction(
program_id: &Pubkey, program_id: &Pubkey,
accounts: &[AccountInfo], accounts: &[AccountInfo],

View File

@ -1,17 +1,18 @@
//! Example Rust-based BPF that tests out using a custom heap //! Example Rust-based BPF that tests out using a custom heap
use solana_program::{ use {
solana_program::{
account_info::AccountInfo, account_info::AccountInfo,
entrypoint,
entrypoint::{ProgramResult, HEAP_LENGTH, HEAP_START_ADDRESS}, entrypoint::{ProgramResult, HEAP_LENGTH, HEAP_START_ADDRESS},
msg, msg,
pubkey::Pubkey, pubkey::Pubkey,
}; },
use std::{ std::{
alloc::{alloc, Layout}, alloc::{alloc, Layout},
mem::{align_of, size_of}, mem::{align_of, size_of},
ptr::null_mut, ptr::null_mut,
usize, usize,
},
}; };
/// Developers can implement their own heap by defining their own /// Developers can implement their own heap by defining their own
@ -52,7 +53,7 @@ unsafe impl std::alloc::GlobalAlloc for BumpAllocator {
#[global_allocator] #[global_allocator]
static A: BumpAllocator = BumpAllocator; static A: BumpAllocator = BumpAllocator;
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
#[allow(clippy::unnecessary_wraps)] #[allow(clippy::unnecessary_wraps)]
pub fn process_instruction( pub fn process_instruction(
_program_id: &Pubkey, _program_id: &Pubkey,

View File

@ -1,8 +1,10 @@
//! Example Rust-based BPF program tests dependent crates //! Example Rust-based BPF program tests dependent crates
extern crate solana_program; extern crate solana_program;
use byteorder::{ByteOrder, LittleEndian}; use {
use solana_program::entrypoint::SUCCESS; byteorder::{ByteOrder, LittleEndian},
solana_program::entrypoint::SUCCESS,
};
#[no_mangle] #[no_mangle]
pub extern "C" fn entrypoint(_input: *mut u8) -> u64 { pub extern "C" fn entrypoint(_input: *mut u8) -> u64 {

View File

@ -4,8 +4,8 @@
extern crate solana_program; extern crate solana_program;
use solana_program::{ use solana_program::{
account_info::AccountInfo, bpf_loader, entrypoint_deprecated, account_info::AccountInfo, bpf_loader, entrypoint_deprecated::ProgramResult, log::*, msg,
entrypoint_deprecated::ProgramResult, log::*, msg, pubkey::Pubkey, pubkey::Pubkey,
}; };
#[derive(Debug, PartialEq)] #[derive(Debug, PartialEq)]
@ -26,7 +26,7 @@ fn custom_panic(info: &core::panic::PanicInfo<'_>) {
msg!(&format!("{}", info)); msg!(&format!("{}", info));
} }
entrypoint_deprecated!(process_instruction); solana_program::entrypoint_deprecated!(process_instruction);
#[allow(clippy::unnecessary_wraps)] #[allow(clippy::unnecessary_wraps)]
fn process_instruction( fn process_instruction(
program_id: &Pubkey, program_id: &Pubkey,

View File

@ -3,7 +3,6 @@
extern crate solana_program; extern crate solana_program;
use solana_program::{ use solana_program::{
account_info::AccountInfo, account_info::AccountInfo,
entrypoint,
entrypoint::ProgramResult, entrypoint::ProgramResult,
instruction::{AccountMeta, Instruction}, instruction::{AccountMeta, Instruction},
msg, msg,
@ -12,7 +11,7 @@ use solana_program::{
pubkey::Pubkey, pubkey::Pubkey,
}; };
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
fn process_instruction( fn process_instruction(
program_id: &Pubkey, program_id: &Pubkey,
accounts: &[AccountInfo], accounts: &[AccountInfo],

View File

@ -1,18 +1,19 @@
//! Example Rust-based BPF program that exercises error handling //! Example Rust-based BPF program that exercises error handling
extern crate solana_program; extern crate solana_program;
use num_derive::FromPrimitive; use {
use num_traits::FromPrimitive; num_derive::FromPrimitive,
use solana_program::{ num_traits::FromPrimitive,
solana_program::{
account_info::AccountInfo, account_info::AccountInfo,
decode_error::DecodeError, decode_error::DecodeError,
entrypoint,
entrypoint::ProgramResult, entrypoint::ProgramResult,
msg, msg,
program_error::{PrintProgramError, ProgramError}, program_error::{PrintProgramError, ProgramError},
pubkey::{Pubkey, PubkeyError}, pubkey::{Pubkey, PubkeyError},
},
thiserror::Error,
}; };
use thiserror::Error;
/// Custom program errors /// Custom program errors
#[derive(Error, Debug, Clone, PartialEq, FromPrimitive)] #[derive(Error, Debug, Clone, PartialEq, FromPrimitive)]
@ -44,7 +45,7 @@ impl PrintProgramError for MyError {
} }
} }
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
fn process_instruction( fn process_instruction(
_program_id: &Pubkey, _program_id: &Pubkey,
accounts: &[AccountInfo], accounts: &[AccountInfo],

View File

@ -1,11 +1,9 @@
//! Example Rust-based BPF program that moves a lamport from one account to another //! Example Rust-based BPF program that moves a lamport from one account to another
extern crate solana_program; extern crate solana_program;
use solana_program::{ use solana_program::{account_info::AccountInfo, entrypoint::ProgramResult, pubkey::Pubkey};
account_info::AccountInfo, entrypoint, entrypoint::ProgramResult, pubkey::Pubkey,
};
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
#[allow(clippy::unnecessary_wraps)] #[allow(clippy::unnecessary_wraps)]
fn process_instruction( fn process_instruction(
_program_id: &Pubkey, _program_id: &Pubkey,

View File

@ -4,11 +4,11 @@
extern crate solana_program; extern crate solana_program;
use solana_program::{ use solana_program::{
account_info::AccountInfo, bpf_loader, entrypoint, entrypoint::ProgramResult, account_info::AccountInfo, bpf_loader, entrypoint::ProgramResult, loader_instruction, msg,
loader_instruction, msg, program::invoke, pubkey::Pubkey, program::invoke, pubkey::Pubkey,
}; };
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
fn process_instruction( fn process_instruction(
_program_id: &Pubkey, _program_id: &Pubkey,
accounts: &[AccountInfo], accounts: &[AccountInfo],

View File

@ -3,7 +3,6 @@
extern crate solana_program; extern crate solana_program;
use solana_program::{ use solana_program::{
account_info::AccountInfo, account_info::AccountInfo,
entrypoint,
entrypoint::ProgramResult, entrypoint::ProgramResult,
instruction::{AccountMeta, Instruction}, instruction::{AccountMeta, Instruction},
msg, msg,
@ -13,7 +12,7 @@ use solana_program::{
sysvar::instructions, sysvar::instructions,
}; };
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
fn process_instruction( fn process_instruction(
program_id: &Pubkey, program_id: &Pubkey,
accounts: &[AccountInfo], accounts: &[AccountInfo],

View File

@ -3,11 +3,11 @@
#![cfg(feature = "program")] #![cfg(feature = "program")]
#![allow(unreachable_code)] #![allow(unreachable_code)]
use crate::instructions::*; use {
use solana_bpf_rust_invoked::instructions::*; crate::instructions::*,
use solana_program::{ solana_bpf_rust_invoked::instructions::*,
solana_program::{
account_info::AccountInfo, account_info::AccountInfo,
entrypoint,
entrypoint::{ProgramResult, MAX_PERMITTED_DATA_INCREASE}, entrypoint::{ProgramResult, MAX_PERMITTED_DATA_INCREASE},
instruction::Instruction, instruction::Instruction,
msg, msg,
@ -15,6 +15,7 @@ use solana_program::{
program_error::ProgramError, program_error::ProgramError,
pubkey::{Pubkey, PubkeyError}, pubkey::{Pubkey, PubkeyError},
system_instruction, system_instruction,
},
}; };
fn do_nested_invokes(num_nested_invokes: u64, accounts: &[AccountInfo]) -> ProgramResult { fn do_nested_invokes(num_nested_invokes: u64, accounts: &[AccountInfo]) -> ProgramResult {
@ -50,7 +51,7 @@ fn do_nested_invokes(num_nested_invokes: u64, accounts: &[AccountInfo]) -> Progr
Ok(()) Ok(())
} }
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
fn process_instruction( fn process_instruction(
program_id: &Pubkey, program_id: &Pubkey,
accounts: &[AccountInfo], accounts: &[AccountInfo],

View File

@ -2,11 +2,14 @@
//! uses the instruction data provided and all the accounts //! uses the instruction data provided and all the accounts
use solana_program::{ use solana_program::{
account_info::AccountInfo, entrypoint, entrypoint::ProgramResult, instruction::AccountMeta, account_info::AccountInfo,
instruction::Instruction, program::invoke, pubkey::Pubkey, entrypoint::ProgramResult,
instruction::{AccountMeta, Instruction},
program::invoke,
pubkey::Pubkey,
}; };
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
fn process_instruction( fn process_instruction(
_program_id: &Pubkey, _program_id: &Pubkey,
accounts: &[AccountInfo], accounts: &[AccountInfo],

View File

@ -2,11 +2,14 @@
//! uses the instruction data provided and all the accounts //! uses the instruction data provided and all the accounts
use solana_program::{ use solana_program::{
account_info::AccountInfo, entrypoint, entrypoint::ProgramResult, instruction::AccountMeta, account_info::AccountInfo,
instruction::Instruction, program::invoke, pubkey::Pubkey, entrypoint::ProgramResult,
instruction::{AccountMeta, Instruction},
program::invoke,
pubkey::Pubkey,
}; };
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
#[allow(clippy::unnecessary_wraps)] #[allow(clippy::unnecessary_wraps)]
fn process_instruction( fn process_instruction(
_program_id: &Pubkey, _program_id: &Pubkey,

View File

@ -2,11 +2,14 @@
//! uses the instruction data provided and all the accounts //! uses the instruction data provided and all the accounts
use solana_program::{ use solana_program::{
account_info::AccountInfo, entrypoint, entrypoint::ProgramResult, instruction::AccountMeta, account_info::AccountInfo,
instruction::Instruction, program::invoke, pubkey::Pubkey, entrypoint::ProgramResult,
instruction::{AccountMeta, Instruction},
program::invoke,
pubkey::Pubkey,
}; };
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
#[allow(clippy::unnecessary_wraps)] #[allow(clippy::unnecessary_wraps)]
fn process_instruction( fn process_instruction(
_program_id: &Pubkey, _program_id: &Pubkey,

View File

@ -2,10 +2,11 @@
#![cfg(feature = "program")] #![cfg(feature = "program")]
use crate::instructions::*; use {
use solana_program::{ crate::instructions::*,
solana_program::{
account_info::AccountInfo, account_info::AccountInfo,
bpf_loader, entrypoint, bpf_loader,
entrypoint::{ProgramResult, MAX_PERMITTED_DATA_INCREASE}, entrypoint::{ProgramResult, MAX_PERMITTED_DATA_INCREASE},
log::sol_log_64, log::sol_log_64,
msg, msg,
@ -13,9 +14,10 @@ use solana_program::{
program_error::ProgramError, program_error::ProgramError,
pubkey::Pubkey, pubkey::Pubkey,
system_instruction, system_instruction,
},
}; };
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
#[allow(clippy::cognitive_complexity)] #[allow(clippy::cognitive_complexity)]
fn process_instruction( fn process_instruction(
program_id: &Pubkey, program_id: &Pubkey,

View File

@ -3,11 +3,11 @@
#![cfg(feature = "program")] #![cfg(feature = "program")]
use solana_program::{ use solana_program::{
account_info::AccountInfo, entrypoint, entrypoint::ProgramResult, log::sol_log_data, account_info::AccountInfo, entrypoint::ProgramResult, log::sol_log_data,
program::set_return_data, pubkey::Pubkey, program::set_return_data, pubkey::Pubkey,
}; };
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
#[allow(clippy::cognitive_complexity)] #[allow(clippy::cognitive_complexity)]
fn process_instruction( fn process_instruction(
_program_id: &Pubkey, _program_id: &Pubkey,

View File

@ -1,15 +1,16 @@
//! Test mem functions //! Test mem functions
use crate::{run_mem_tests, MemOps}; use {
use solana_program::{ crate::{run_mem_tests, MemOps},
solana_program::{
account_info::AccountInfo, account_info::AccountInfo,
entrypoint,
entrypoint::ProgramResult, entrypoint::ProgramResult,
program_memory::{sol_memcmp, sol_memcpy, sol_memmove, sol_memset}, program_memory::{sol_memcmp, sol_memcpy, sol_memmove, sol_memset},
pubkey::Pubkey, pubkey::Pubkey,
},
}; };
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
#[allow(clippy::unnecessary_wraps)] #[allow(clippy::unnecessary_wraps)]
pub fn process_instruction( pub fn process_instruction(
_program_id: &Pubkey, _program_id: &Pubkey,

View File

@ -1,7 +1,9 @@
use solana_bpf_rust_mem::entrypoint::process_instruction; use {
use solana_program_test::*; solana_bpf_rust_mem::entrypoint::process_instruction,
use solana_sdk::{ solana_program_test::*,
solana_sdk::{
instruction::Instruction, pubkey::Pubkey, signature::Signer, transaction::Transaction, instruction::Instruction, pubkey::Pubkey, signature::Signer, transaction::Transaction,
},
}; };
#[tokio::test] #[tokio::test]

View File

@ -4,8 +4,10 @@
#![feature(rustc_private)] #![feature(rustc_private)]
extern crate compiler_builtins; extern crate compiler_builtins;
use solana_bpf_rust_mem::{run_mem_tests, MemOps}; use {
use solana_program::{custom_panic_default, entrypoint::SUCCESS}; solana_bpf_rust_mem::{run_mem_tests, MemOps},
solana_program::{custom_panic_default, entrypoint::SUCCESS},
};
#[no_mangle] #[no_mangle]
pub extern "C" fn entrypoint(_input: *mut u8) -> u64 { pub extern "C" fn entrypoint(_input: *mut u8) -> u64 {

View File

@ -1,11 +1,9 @@
//! Example Rust-based BPF noop program //! Example Rust-based BPF noop program
extern crate solana_program; extern crate solana_program;
use solana_program::{ use solana_program::{account_info::AccountInfo, entrypoint::ProgramResult, pubkey::Pubkey};
account_info::AccountInfo, entrypoint, entrypoint::ProgramResult, pubkey::Pubkey,
};
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
#[allow(clippy::unnecessary_wraps)] #[allow(clippy::unnecessary_wraps)]
fn process_instruction( fn process_instruction(
_program_id: &Pubkey, _program_id: &Pubkey,

View File

@ -9,11 +9,9 @@ fn custom_panic(info: &core::panic::PanicInfo<'_>) {
} }
extern crate solana_program; extern crate solana_program;
use solana_program::{ use solana_program::{account_info::AccountInfo, entrypoint::ProgramResult, pubkey::Pubkey};
account_info::AccountInfo, entrypoint, entrypoint::ProgramResult, pubkey::Pubkey,
};
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
#[allow(clippy::unnecessary_wraps)] #[allow(clippy::unnecessary_wraps)]
fn process_instruction( fn process_instruction(
_program_id: &Pubkey, _program_id: &Pubkey,

View File

@ -1,8 +1,10 @@
//! Example Rust-based BPF program tests loop iteration //! Example Rust-based BPF program tests loop iteration
extern crate solana_program; extern crate solana_program;
use solana_bpf_rust_param_passing_dep::{Data, TestDep}; use {
use solana_program::{custom_panic_default, entrypoint::SUCCESS, log::sol_log_64}; solana_bpf_rust_param_passing_dep::{Data, TestDep},
solana_program::{custom_panic_default, entrypoint::SUCCESS, log::sol_log_64},
};
#[no_mangle] #[no_mangle]
pub extern "C" fn entrypoint(_input: *mut u8) -> u64 { pub extern "C" fn entrypoint(_input: *mut u8) -> u64 {

View File

@ -3,11 +3,9 @@
#![allow(unreachable_code)] #![allow(unreachable_code)]
extern crate solana_program; extern crate solana_program;
use solana_program::{ use solana_program::{account_info::AccountInfo, entrypoint::ProgramResult, msg, pubkey::Pubkey};
account_info::AccountInfo, entrypoint, entrypoint::ProgramResult, msg, pubkey::Pubkey,
};
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
#[allow(clippy::unnecessary_wraps)] #[allow(clippy::unnecessary_wraps)]
fn process_instruction( fn process_instruction(
_program_id: &Pubkey, _program_id: &Pubkey,

View File

@ -3,15 +3,20 @@
#![cfg(feature = "program")] #![cfg(feature = "program")]
extern crate solana_program; extern crate solana_program;
use crate::instructions::*; use {
use solana_program::{ crate::instructions::*,
account_info::AccountInfo, entrypoint, entrypoint::ProgramResult, solana_program::{
entrypoint::MAX_PERMITTED_DATA_INCREASE, msg, program::invoke, pubkey::Pubkey, account_info::AccountInfo,
entrypoint::{ProgramResult, MAX_PERMITTED_DATA_INCREASE},
msg,
program::invoke,
pubkey::Pubkey,
system_instruction, system_program, system_instruction, system_program,
},
std::convert::TryInto,
}; };
use std::convert::TryInto;
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
#[allow(clippy::unnecessary_wraps)] #[allow(clippy::unnecessary_wraps)]
fn process_instruction( fn process_instruction(
program_id: &Pubkey, program_id: &Pubkey,

View File

@ -3,22 +3,22 @@
#![cfg(feature = "program")] #![cfg(feature = "program")]
extern crate solana_program; extern crate solana_program;
use crate::instructions::*; use {
use solana_bpf_rust_realloc::instructions::*; crate::instructions::*,
use solana_program::{ solana_bpf_rust_realloc::instructions::*,
solana_program::{
account_info::AccountInfo, account_info::AccountInfo,
entrypoint, entrypoint::{ProgramResult, MAX_PERMITTED_DATA_INCREASE},
entrypoint::ProgramResult,
entrypoint::MAX_PERMITTED_DATA_INCREASE,
instruction::{AccountMeta, Instruction}, instruction::{AccountMeta, Instruction},
msg, msg,
program::invoke, program::invoke,
pubkey::Pubkey, pubkey::Pubkey,
system_instruction, system_program, system_instruction, system_program,
},
std::convert::TryInto,
}; };
use std::convert::TryInto;
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
#[allow(clippy::unnecessary_wraps)] #[allow(clippy::unnecessary_wraps)]
fn process_instruction( fn process_instruction(
program_id: &Pubkey, program_id: &Pubkey,

View File

@ -1,6 +1,5 @@
use solana_program::{ use solana_program::{
account_info::AccountInfo, account_info::AccountInfo,
entrypoint,
entrypoint::ProgramResult, entrypoint::ProgramResult,
instruction::{AccountMeta, Instruction}, instruction::{AccountMeta, Instruction},
msg, msg,
@ -15,7 +14,7 @@ const INSTRUCTION_INVOKE_MODIFY: u8 = 1;
const INSTRUCTION_MODIFY_INVOKE: u8 = 2; const INSTRUCTION_MODIFY_INVOKE: u8 = 2;
const INSTRUCTION_VERIFY_MODIFIED: u8 = 3; const INSTRUCTION_VERIFY_MODIFIED: u8 = 3;
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
fn process_instruction( fn process_instruction(
program_id: &Pubkey, program_id: &Pubkey,
accounts: &[AccountInfo], accounts: &[AccountInfo],

View File

@ -1,5 +1,5 @@
use solana_program::{ use solana_program::{
account_info::AccountInfo, entrypoint, entrypoint::ProgramResult, msg, program::invoke, account_info::AccountInfo, entrypoint::ProgramResult, msg, program::invoke,
program_error::ProgramError, pubkey::Pubkey, system_instruction, program_error::ProgramError, pubkey::Pubkey, system_instruction,
}; };
@ -116,7 +116,7 @@ fn check_preconditions(
Ok(()) Ok(())
} }
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
fn process_instruction( fn process_instruction(
program_id: &Pubkey, program_id: &Pubkey,
accounts: &[AccountInfo], accounts: &[AccountInfo],

View File

@ -4,8 +4,7 @@
extern crate solana_program; extern crate solana_program;
use solana_program::{ use solana_program::{
account_info::AccountInfo, bpf_loader, entrypoint, entrypoint::ProgramResult, log::*, msg, account_info::AccountInfo, bpf_loader, entrypoint::ProgramResult, log::*, msg, pubkey::Pubkey,
pubkey::Pubkey,
}; };
#[derive(Debug, PartialEq)] #[derive(Debug, PartialEq)]
@ -20,7 +19,7 @@ fn return_sstruct() -> SStruct {
SStruct { x: 1, y: 2, z: 3 } SStruct { x: 1, y: 2, z: 3 }
} }
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
#[allow(clippy::unnecessary_wraps)] #[allow(clippy::unnecessary_wraps)]
pub fn process_instruction( pub fn process_instruction(
program_id: &Pubkey, program_id: &Pubkey,

View File

@ -1,12 +1,14 @@
#![cfg(feature = "test-bpf")] #![cfg(feature = "test-bpf")]
use solana_bpf_rust_sanity::process_instruction; use {
use solana_program_test::*; solana_bpf_rust_sanity::process_instruction,
use solana_sdk::{ solana_program_test::*,
solana_sdk::{
instruction::{AccountMeta, Instruction}, instruction::{AccountMeta, Instruction},
pubkey::Pubkey, pubkey::Pubkey,
signature::{Keypair, Signer}, signature::{Keypair, Signer},
transaction::Transaction, transaction::Transaction,
},
}; };
#[tokio::test] #[tokio::test]

View File

@ -4,7 +4,6 @@
use solana_program::{ use solana_program::{
account_info::AccountInfo, account_info::AccountInfo,
entrypoint,
entrypoint::ProgramResult, entrypoint::ProgramResult,
instruction::{ instruction::{
get_processed_sibling_instruction, get_stack_height, AccountMeta, Instruction, get_processed_sibling_instruction, get_stack_height, AccountMeta, Instruction,
@ -14,7 +13,7 @@ use solana_program::{
pubkey::Pubkey, pubkey::Pubkey,
}; };
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
fn process_instruction( fn process_instruction(
_program_id: &Pubkey, _program_id: &Pubkey,
accounts: &[AccountInfo], accounts: &[AccountInfo],

View File

@ -4,7 +4,6 @@
use solana_program::{ use solana_program::{
account_info::AccountInfo, account_info::AccountInfo,
entrypoint,
entrypoint::ProgramResult, entrypoint::ProgramResult,
instruction::{ instruction::{
get_processed_sibling_instruction, get_stack_height, AccountMeta, Instruction, get_processed_sibling_instruction, get_stack_height, AccountMeta, Instruction,
@ -15,7 +14,7 @@ use solana_program::{
pubkey::Pubkey, pubkey::Pubkey,
}; };
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
fn process_instruction( fn process_instruction(
_program_id: &Pubkey, _program_id: &Pubkey,
accounts: &[AccountInfo], accounts: &[AccountInfo],

View File

@ -1,6 +1,5 @@
use solana_program::{ use solana_program::{
account_info::AccountInfo, account_info::AccountInfo,
entrypoint,
entrypoint::ProgramResult, entrypoint::ProgramResult,
instruction::{AccountMeta, Instruction}, instruction::{AccountMeta, Instruction},
msg, msg,
@ -10,7 +9,7 @@ use solana_program::{
system_program, system_program,
}; };
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
fn process_instruction( fn process_instruction(
_program_id: &Pubkey, _program_id: &Pubkey,
accounts: &[AccountInfo], accounts: &[AccountInfo],

View File

@ -1,8 +1,6 @@
use solana_program::{ use solana_program::{account_info::AccountInfo, entrypoint::ProgramResult, pubkey::Pubkey};
account_info::AccountInfo, entrypoint, entrypoint::ProgramResult, pubkey::Pubkey,
};
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
#[allow(clippy::unnecessary_wraps)] #[allow(clippy::unnecessary_wraps)]
fn process_instruction( fn process_instruction(
_program_id: &Pubkey, _program_id: &Pubkey,

View File

@ -5,7 +5,6 @@ extern crate solana_program;
use solana_program::sysvar::recent_blockhashes::RecentBlockhashes; use solana_program::sysvar::recent_blockhashes::RecentBlockhashes;
use solana_program::{ use solana_program::{
account_info::AccountInfo, account_info::AccountInfo,
entrypoint,
entrypoint::ProgramResult, entrypoint::ProgramResult,
instruction::{AccountMeta, Instruction}, instruction::{AccountMeta, Instruction},
msg, msg,
@ -17,7 +16,7 @@ use solana_program::{
}, },
}; };
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
#[allow(clippy::unnecessary_wraps)] #[allow(clippy::unnecessary_wraps)]
pub fn process_instruction( pub fn process_instruction(
program_id: &Pubkey, program_id: &Pubkey,

View File

@ -1,14 +1,16 @@
use solana_bpf_rust_sysvar::process_instruction; use {
use solana_program_test::*; solana_bpf_rust_sysvar::process_instruction,
use solana_sdk::{ solana_program_test::*,
solana_sdk::{
instruction::{AccountMeta, Instruction}, instruction::{AccountMeta, Instruction},
pubkey::Pubkey, pubkey::Pubkey,
signature::Signer, signature::Signer,
sysvar::{ sysvar::{
clock, epoch_schedule, instructions, recent_blockhashes, rent, slot_hashes, slot_history, clock, epoch_schedule, instructions, recent_blockhashes, rent, slot_hashes,
stake_history, slot_history, stake_history,
}, },
transaction::Transaction, transaction::Transaction,
},
}; };
#[tokio::test] #[tokio::test]

View File

@ -2,11 +2,10 @@
extern crate solana_program; extern crate solana_program;
use solana_program::{ use solana_program::{
account_info::AccountInfo, entrypoint, entrypoint::ProgramResult, msg, pubkey::Pubkey, account_info::AccountInfo, entrypoint::ProgramResult, msg, pubkey::Pubkey, sysvar::clock,
sysvar::clock,
}; };
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
fn process_instruction( fn process_instruction(
_program_id: &Pubkey, _program_id: &Pubkey,
accounts: &[AccountInfo], accounts: &[AccountInfo],

View File

@ -2,11 +2,10 @@
extern crate solana_program; extern crate solana_program;
use solana_program::{ use solana_program::{
account_info::AccountInfo, entrypoint, entrypoint::ProgramResult, msg, pubkey::Pubkey, account_info::AccountInfo, entrypoint::ProgramResult, msg, pubkey::Pubkey, sysvar::clock,
sysvar::clock,
}; };
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
fn process_instruction( fn process_instruction(
_program_id: &Pubkey, _program_id: &Pubkey,
accounts: &[AccountInfo], accounts: &[AccountInfo],

View File

@ -3,30 +3,31 @@
#[macro_use] #[macro_use]
extern crate solana_bpf_loader_program; extern crate solana_bpf_loader_program;
use itertools::izip; use {
use log::{log_enabled, trace, Level::Trace}; itertools::izip,
use solana_account_decoder::parse_bpf_loader::{ log::{log_enabled, trace, Level::Trace},
solana_account_decoder::parse_bpf_loader::{
parse_bpf_upgradeable_loader, BpfUpgradeableLoaderAccountType, parse_bpf_upgradeable_loader, BpfUpgradeableLoaderAccountType,
}; },
use solana_bpf_loader_program::{ solana_bpf_loader_program::{
create_vm, create_vm,
serialization::{deserialize_parameters, serialize_parameters}, serialization::{deserialize_parameters, serialize_parameters},
syscalls::register_syscalls, syscalls::register_syscalls,
BpfError, ThisInstructionMeter, BpfError, ThisInstructionMeter,
}; },
use solana_bpf_rust_invoke::instructions::*; solana_bpf_rust_invoke::instructions::*,
use solana_bpf_rust_realloc::instructions::*; solana_bpf_rust_realloc::instructions::*,
use solana_bpf_rust_realloc_invoke::instructions::*; solana_bpf_rust_realloc_invoke::instructions::*,
use solana_program_runtime::{ solana_program_runtime::{
compute_budget::ComputeBudget, invoke_context::with_mock_invoke_context, compute_budget::ComputeBudget, invoke_context::with_mock_invoke_context,
timings::ExecuteTimings, timings::ExecuteTimings,
}; },
use solana_rbpf::{ solana_rbpf::{
elf::Executable, elf::Executable,
static_analysis::Analysis, static_analysis::Analysis,
vm::{Config, Tracer}, vm::{Config, Tracer},
}; },
use solana_runtime::{ solana_runtime::{
bank::{ bank::{
Bank, DurableNonceFee, TransactionBalancesSet, TransactionExecutionDetails, Bank, DurableNonceFee, TransactionBalancesSet, TransactionExecutionDetails,
TransactionExecutionResult, TransactionResults, TransactionExecutionResult, TransactionResults,
@ -37,8 +38,8 @@ use solana_runtime::{
load_buffer_account, load_program, load_upgradeable_program, set_upgrade_authority, load_buffer_account, load_program, load_upgradeable_program, set_upgrade_authority,
upgrade_program, upgrade_program,
}, },
}; },
use solana_sdk::{ solana_sdk::{
account::{AccountSharedData, ReadableAccount}, account::{AccountSharedData, ReadableAccount},
account_utils::StateMut, account_utils::StateMut,
bpf_loader, bpf_loader_deprecated, bpf_loader_upgradeable, bpf_loader, bpf_loader_deprecated, bpf_loader_upgradeable,
@ -55,15 +56,17 @@ use solana_sdk::{
pubkey::Pubkey, pubkey::Pubkey,
signature::{keypair_from_seed, Keypair, Signer}, signature::{keypair_from_seed, Keypair, Signer},
system_instruction::{self, MAX_PERMITTED_DATA_LENGTH}, system_instruction::{self, MAX_PERMITTED_DATA_LENGTH},
system_program, sysvar, system_program,
sysvar::{clock, rent}, sysvar::{self, clock, rent},
transaction::{SanitizedTransaction, Transaction, TransactionError, VersionedTransaction}, transaction::{SanitizedTransaction, Transaction, TransactionError, VersionedTransaction},
},
solana_transaction_status::{
token_balances::collect_token_balances, ConfirmedTransactionWithStatusMeta,
InnerInstructions, TransactionStatusMeta, TransactionWithStatusMeta,
VersionedTransactionWithStatusMeta,
},
std::{collections::HashMap, env, fs::File, io::Read, path::PathBuf, str::FromStr, sync::Arc},
}; };
use solana_transaction_status::{
token_balances::collect_token_balances, ConfirmedTransactionWithStatusMeta, InnerInstructions,
TransactionStatusMeta, TransactionWithStatusMeta, VersionedTransactionWithStatusMeta,
};
use std::{collections::HashMap, env, fs::File, io::Read, path::PathBuf, str::FromStr, sync::Arc};
/// BPF program file extension /// BPF program file extension
const PLATFORM_FILE_EXTENSION_BPF: &str = "so"; const PLATFORM_FILE_EXTENSION_BPF: &str = "so";
@ -230,13 +233,14 @@ fn run_program(name: &str) -> u64 {
let mut tracer = None; let mut tracer = None;
for i in 0..2 { for i in 0..2 {
let transaction_context = &mut invoke_context.transaction_context; let transaction_context = &mut invoke_context.transaction_context;
let instruction_context = transaction_context.get_current_instruction_context().unwrap(); let instruction_context = transaction_context
let caller = *instruction_context.get_program_key(transaction_context).unwrap(); .get_current_instruction_context()
.unwrap();
let caller = *instruction_context
.get_program_key(transaction_context)
.unwrap();
transaction_context transaction_context
.set_return_data( .set_return_data(caller, Vec::new())
caller,
Vec::new(),
)
.unwrap(); .unwrap();
let mut parameter_bytes = parameter_bytes.clone(); let mut parameter_bytes = parameter_bytes.clone();
{ {

20
scripts/cargo-fmt.sh Executable file
View File

@ -0,0 +1,20 @@
#!/usr/bin/env bash
here="$(dirname "$0")"
cargo="$(readlink -f "${here}/../cargo")"
if [[ -z $cargo ]]; then
>&2 echo "Failed to find cargo. Mac readlink doesn't support -f. Consider switching
to gnu readlink with 'brew install coreutils' and then symlink greadlink as
/usr/local/bin/readlink."
exit 1
fi
set -ex
"$cargo" nightly fmt --all
(cd programs/bpf && "$cargo" nightly fmt --all)
(cd sdk/cargo-build-bpf/tests/crates/fail && "$cargo" nightly fmt --all)
(cd sdk/cargo-build-bpf/tests/crates/noop && "$cargo" nightly fmt --all)
(cd storage-bigtable/build-proto && "$cargo" nightly fmt --all)
(cd web3.js/test/fixtures/noop-program && "$cargo" nightly fmt --all)

View File

@ -1,11 +1,8 @@
//! Example Rust-based BPF noop program //! Example Rust-based BPF noop program
extern crate solana_program; use solana_program::{account_info::AccountInfo, entrypoint::ProgramResult, pubkey::Pubkey};
use solana_program::{
account_info::AccountInfo, entrypoint, entrypoint::ProgramResult, pubkey::Pubkey,
};
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
fn process_instruction( fn process_instruction(
_program_id: &Pubkey, _program_id: &Pubkey,
_accounts: &[AccountInfo], _accounts: &[AccountInfo],

View File

@ -1,11 +1,8 @@
//! Example Rust-based BPF noop program //! Example Rust-based BPF noop program
extern crate solana_program; use solana_program::{account_info::AccountInfo, entrypoint::ProgramResult, pubkey::Pubkey};
use solana_program::{
account_info::AccountInfo, entrypoint, entrypoint::ProgramResult, pubkey::Pubkey,
};
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
fn process_instruction( fn process_instruction(
_program_id: &Pubkey, _program_id: &Pubkey,
_accounts: &[AccountInfo], _accounts: &[AccountInfo],

View File

@ -1,8 +1,7 @@
//! Example Rust-based BPF program that prints out the parameters passed to it //! Example Rust-based BPF program that prints out the parameters passed to it
use solana_program::{ use solana_program::{
account_info::AccountInfo, entrypoint, entrypoint::ProgramResult, msg, log::*, pubkey::Pubkey, account_info::AccountInfo, entrypoint::ProgramResult, log::*, msg, pubkey::Pubkey,
}; };
#[derive(Debug, PartialEq)] #[derive(Debug, PartialEq)]
@ -17,7 +16,7 @@ fn return_sstruct() -> SStruct {
SStruct { x: 1, y: 2, z: 3 } SStruct { x: 1, y: 2, z: 3 }
} }
entrypoint!(process_instruction); solana_program::entrypoint!(process_instruction);
fn process_instruction( fn process_instruction(
program_id: &Pubkey, program_id: &Pubkey,
accounts: &[AccountInfo], accounts: &[AccountInfo],