diff --git a/scripts/migrate-imported.rs b/scripts/migrate-imported.rs index 15663d64..3ef7a56f 100644 --- a/scripts/migrate-imported.rs +++ b/scripts/migrate-imported.rs @@ -16,7 +16,7 @@ use { clap::Parser, - std::path::{Path, PathBuf}, + std::{borrow::{Borrow, BorrowMut}, ops::DerefMut, path::{Path, PathBuf}}, toml_edit::{Array, Document, Formatted, Item, Value}, }; @@ -93,8 +93,8 @@ fn update_root_toml(args: &Args) -> Vec { .enumerate() .filter_map(|(i, member)| { let Value::String(member) = member else { - return None; - }; + return None; + }; let member = member.value(); @@ -122,7 +122,7 @@ fn update_root_toml(args: &Args) -> Vec { for (dep_name, dep_table) in dependencies.iter_mut() { let Item::Value(Value::InlineTable(dep_table)) = dep_table else { - continue + continue; }; // Add feature "runtime-1600" to "evm-tracing-event" @@ -132,10 +132,16 @@ fn update_root_toml(args: &Args) -> Vec { }; features.push("runtime-1600"); } + if dep_name == "moonbeam-rpc-primitives-debug" { + let Value::Array(features) = dep_table.get_or_insert("features", Array::new()) else { + panic!("expected features of `{dep_name}` to be an array or missing"); + }; + features.push("runtime-2900"); + } // No path => not moonbeam crate. let Some(Value::String(ref mut path)) = dep_table.get_mut("path") else { - continue + continue; }; // If this is a shared crate, update the path and stop there. @@ -170,7 +176,7 @@ fn update_root_toml(args: &Args) -> Vec { fn update_runtime_toml(path: &Path) { let toml = std::fs::read_to_string(&path).expect("cannot open runtime toml file"); let mut toml = toml.parse::().expect("invalid runtime toml file"); - + println!("- Enabling evm-tracing feature in {}", path.display()); let Some(Item::Table(features)) = toml.get_mut("features") else { panic!("cannot get features table"); diff --git a/tracing/shared/primitives/rpc/debug/Cargo.toml b/tracing/shared/primitives/rpc/debug/Cargo.toml index 457cfefb..a81a24e7 100644 --- a/tracing/shared/primitives/rpc/debug/Cargo.toml +++ b/tracing/shared/primitives/rpc/debug/Cargo.toml @@ -27,6 +27,7 @@ default = [ "std" ] before_700 = [] _700_to_1200 = [] +runtime-2900 = [] std = [ "parity-scale-codec/std", diff --git a/tracing/shared/primitives/rpc/debug/src/lib.rs b/tracing/shared/primitives/rpc/debug/src/lib.rs index 897fd79d..c057034e 100644 --- a/tracing/shared/primitives/rpc/debug/src/lib.rs +++ b/tracing/shared/primitives/rpc/debug/src/lib.rs @@ -28,7 +28,25 @@ use ethereum::TransactionV2 as Transaction; use ethereum_types::{H160, H256, U256}; use sp_std::vec::Vec; -#[cfg(all(not(feature = "before_700"), not(feature = "_700_to_1200")))] +#[cfg(feature = "runtime-2900")] +sp_api::decl_runtime_apis! { + #[api_version(5)] + pub trait DebugRuntimeApi { + fn trace_transaction( + extrinsics: Vec, + transaction: &Transaction, + transaction: &Block::Header, + ) -> Result<(), sp_runtime::DispatchError>; + + fn trace_block( + extrinsics: Vec, + known_transactions: Vec, + transaction: &Block::Header, + ) -> Result<(), sp_runtime::DispatchError>; + } +} + +#[cfg(all(not(feature = "before_700"), not(feature = "_700_to_1200"), not(feature = "runtime-2900")))] sp_api::decl_runtime_apis! { #[api_version(4)] pub trait DebugRuntimeApi {