diff --git a/crates/core/src/lib.rs b/crates/core/src/lib.rs index 0a87dbe..8f28012 100644 --- a/crates/core/src/lib.rs +++ b/crates/core/src/lib.rs @@ -64,7 +64,16 @@ pub trait Platform { NodeIdentifier::Geth => new_geth_node(context), NodeIdentifier::LighthouseGeth => new_lighthouse_geth_node(context), NodeIdentifier::ReviveDevNode => new_revive_dev_node(context), - NodeIdentifier::Zombienet => new_zombienet_node(context), + NodeIdentifier::Zombienet => { + #[cfg(unix)] + { + new_zombienet_node(context) + } + #[cfg(not(unix))] + { + anyhow::bail!("Zombienet is not supported on this platform") + } + } NodeIdentifier::PolkadotOmniNode => new_polkadot_omni_node(context), } } @@ -87,7 +96,16 @@ pub trait Platform { NodeIdentifier::Geth => export_geth_genesis(context), NodeIdentifier::LighthouseGeth => export_lighthouse_geth_genesis(context), NodeIdentifier::ReviveDevNode => export_revive_dev_node_genesis(context), - NodeIdentifier::Zombienet => export_zombienet_genesis(context), + NodeIdentifier::Zombienet => { + #[cfg(unix)] + { + export_zombienet_genesis(context) + } + #[cfg(not(unix))] + { + anyhow::bail!("Zombienet is not supported on this platform") + } + } NodeIdentifier::PolkadotOmniNode => export_polkadot_omni_node_genesis(context), } } @@ -372,6 +390,7 @@ fn new_revive_dev_node( })) } +#[cfg(unix)] fn new_zombienet_node( context: Context, ) -> Result>>> { @@ -438,6 +457,7 @@ fn export_revive_dev_node_genesis(context: Context) -> Result SubstrateNode::node_genesis(revive_dev_node_path, export_chainspec_command, &wallet) } +#[cfg(unix)] fn export_zombienet_genesis(context: Context) -> Result { let polkadot_parachain_path = context.as_polkadot_parachain_configuration().path.as_path(); let wallet = context.as_wallet_configuration().wallet(); diff --git a/crates/core/src/main.rs b/crates/core/src/main.rs index 1c65c1d..e50b842 100644 --- a/crates/core/src/main.rs +++ b/crates/core/src/main.rs @@ -133,6 +133,8 @@ fn main() -> anyhow::Result<()> { let mut context = Context::try_parse()?; context.update_for_profile(); + // The `tokio-debug` variant returns `()`, but the default variant returns a `WorkerGuard` + // that must be held until `main` exits to keep the non-blocking tracing writer alive. #[allow(clippy::let_unit_value)] let _guard = setup_tracing(context.as_log_configuration())?; diff --git a/crates/node/Cargo.toml b/crates/node/Cargo.toml index a3c3ea2..59a3968 100644 --- a/crates/node/Cargo.toml +++ b/crates/node/Cargo.toml @@ -30,6 +30,9 @@ serde_yaml_ng = { workspace = true } sp-core = { workspace = true } sp-runtime = { workspace = true } subxt = { workspace = true } +# Zombienet uses `std::os::unix` which prevents compiling retester on Windows. +# For running pre-link-only contract compilations on Windows, Zombienet is gated. +[target.'cfg(unix)'.dependencies] zombienet-sdk = { workspace = true } [dev-dependencies] diff --git a/crates/node/src/lib.rs b/crates/node/src/lib.rs index f84d93f..24d7a28 100644 --- a/crates/node/src/lib.rs +++ b/crates/node/src/lib.rs @@ -15,6 +15,7 @@ pub mod prelude { pub use crate::node_implementations::lighthouse_geth::LighthouseGethNode; pub use crate::node_implementations::polkadot_omni_node::PolkadotOmnichainNode; pub use crate::node_implementations::substrate::SubstrateNode; + #[cfg(unix)] pub use crate::node_implementations::zombienet::ZombienetNode; pub use crate::provider_utils::*; } @@ -81,6 +82,7 @@ pub(crate) mod internal_prelude { pub use toml; pub use tower::{Layer, Service}; pub use tracing::*; + #[cfg(unix)] pub use zombienet_sdk::{LocalFileSystem, NetworkConfig, NetworkConfigExt}; pub use revive_common::EVMVersion; diff --git a/crates/node/src/node_implementations/mod.rs b/crates/node/src/node_implementations/mod.rs index 12b2a9e..84e79dc 100644 --- a/crates/node/src/node_implementations/mod.rs +++ b/crates/node/src/node_implementations/mod.rs @@ -2,5 +2,7 @@ pub mod geth; pub mod lighthouse_geth; pub mod polkadot_omni_node; pub mod substrate; +#[cfg(unix)] pub mod zombienet; +#[cfg(unix)] pub(crate) mod zombienet_core_assignment;