Make solana-address-lookup-table-program crate bpf compatible (#23700)

This commit is contained in:
Justin Starry
2022-03-17 08:21:07 +08:00
committed by GitHub
parent dda3a463a2
commit b4350a2522
11 changed files with 53 additions and 43 deletions

View File

@@ -18,9 +18,12 @@ num-traits = "0.2"
serde = { version = "1.0.136", features = ["derive"] }
solana-frozen-abi = { path = "../../frozen-abi", version = "=1.10.3" }
solana-frozen-abi-macro = { path = "../../frozen-abi/macro", version = "=1.10.3" }
solana-program = { path = "../../sdk/program", version = "=1.10.3" }
thiserror = "1.0"
[target.'cfg(not(target_arch = "bpf"))'.dependencies]
solana-program-runtime = { path = "../../program-runtime", version = "=1.10.3" }
solana-sdk = { path = "../../sdk", version = "=1.10.3" }
thiserror = "1.0"
[build-dependencies]
rustc_version = "0.4"

View File

@@ -0,0 +1,34 @@
#[cfg(not(target_arch = "bpf"))]
use solana_sdk::transaction::TransactionError;
use thiserror::Error;
#[derive(Debug, Error, PartialEq, Eq, Clone)]
pub enum AddressLookupError {
/// Attempted to lookup addresses from a table that does not exist
#[error("Attempted to lookup addresses from a table that does not exist")]
LookupTableAccountNotFound,
/// Attempted to lookup addresses from an account owned by the wrong program
#[error("Attempted to lookup addresses from an account owned by the wrong program")]
InvalidAccountOwner,
/// Attempted to lookup addresses from an invalid account
#[error("Attempted to lookup addresses from an invalid account")]
InvalidAccountData,
/// Address lookup contains an invalid index
#[error("Address lookup contains an invalid index")]
InvalidLookupIndex,
}
#[cfg(not(target_arch = "bpf"))]
impl From<AddressLookupError> for TransactionError {
fn from(err: AddressLookupError) -> Self {
match err {
AddressLookupError::LookupTableAccountNotFound => Self::AddressLookupTableNotFound,
AddressLookupError::InvalidAccountOwner => Self::InvalidAddressLookupTableOwner,
AddressLookupError::InvalidAccountData => Self::InvalidAddressLookupTableData,
AddressLookupError::InvalidLookupIndex => Self::InvalidAddressLookupTableIndex,
}
}
}

View File

@@ -1,7 +1,7 @@
use {
crate::id,
serde::{Deserialize, Serialize},
solana_sdk::{
solana_program::{
clock::Slot,
instruction::{AccountMeta, Instruction},
pubkey::Pubkey,

View File

@@ -2,9 +2,11 @@
#![cfg_attr(RUSTC_WITH_SPECIALIZATION, feature(specialization))]
#![cfg_attr(RUSTC_NEEDS_PROC_MACRO_HYGIENE, feature(proc_macro_hygiene))]
use solana_sdk::declare_id;
use solana_program::declare_id;
pub mod error;
pub mod instruction;
#[cfg(not(target_arch = "bpf"))]
pub mod processor;
pub mod state;

View File

@@ -1,12 +1,12 @@
use {
crate::error::AddressLookupError,
serde::{Deserialize, Serialize},
solana_frozen_abi_macro::{AbiEnumVisitor, AbiExample},
solana_sdk::{
solana_program::{
clock::Slot,
instruction::InstructionError,
pubkey::Pubkey,
slot_hashes::{SlotHashes, MAX_ENTRIES},
transaction::AddressLookupError,
},
std::borrow::Cow,
};