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:
parent
72c68695b5
commit
c97f34a0fd
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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";
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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],
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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],
|
||||||
|
|
|
@ -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],
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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],
|
||||||
|
|
|
@ -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],
|
||||||
|
|
|
@ -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],
|
||||||
|
|
|
@ -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],
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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],
|
||||||
|
|
|
@ -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],
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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],
|
||||||
|
|
|
@ -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],
|
||||||
|
|
|
@ -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],
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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],
|
||||||
|
|
|
@ -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],
|
||||||
|
|
|
@ -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();
|
||||||
{
|
{
|
||||||
|
|
|
@ -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)
|
|
@ -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],
|
||||||
|
|
|
@ -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],
|
||||||
|
|
|
@ -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],
|
||||||
|
|
Loading…
Reference in New Issue