From 8d78cd9951495af2d3cd61fdebe731b7f6c9f8b4 Mon Sep 17 00:00:00 2001 From: Pierre Krieger Date: Mon, 4 May 2020 16:04:33 +0200 Subject: [PATCH] Some fixes to compile for Android (#1063) * Some fixes to compile for Android * Revert change to cli --- parachain/Cargo.toml | 2 +- parachain/src/wasm_executor/mod.rs | 26 ++++++++++++------- .../src/wasm_executor/validation_host.rs | 2 +- service/src/lib.rs | 2 +- validation/src/lib.rs | 1 - 5 files changed, 19 insertions(+), 14 deletions(-) diff --git a/parachain/Cargo.toml b/parachain/Cargo.toml index 4dd91577d2cd..b7131624cecd 100644 --- a/parachain/Cargo.toml +++ b/parachain/Cargo.toml @@ -24,7 +24,7 @@ sp-io = { git = "https://github.com/paritytech/substrate", branch = "master", op parking_lot = { version = "0.10.0", optional = true } log = { version = "0.4.8", optional = true } -[target.'cfg(not(target_os = "unknown"))'.dependencies] +[target.'cfg(not(any(target_os = "android", target_os = "unknown")))'.dependencies] shared_memory = { version = "0.10.0", optional = true } [features] diff --git a/parachain/src/wasm_executor/mod.rs b/parachain/src/wasm_executor/mod.rs index 5be160a8dd65..b0dd127f40ff 100644 --- a/parachain/src/wasm_executor/mod.rs +++ b/parachain/src/wasm_executor/mod.rs @@ -28,7 +28,7 @@ use sp_core::traits::CallInWasm; use sp_wasm_interface::HostFunctions as _; use sp_externalities::Extensions; -#[cfg(not(target_os = "unknown"))] +#[cfg(not(any(target_os = "android", target_os = "unknown")))] pub use validation_host::{run_worker, ValidationPool, EXECUTION_TIMEOUT_SEC}; mod validation_host; @@ -49,14 +49,14 @@ impl ParachainExt { } } -/// A stub validation-pool defined when compiling for WASM. -#[cfg(target_os = "unknown")] +/// A stub validation-pool defined when compiling for Android or WASM. +#[cfg(any(target_os = "android", target_os = "unknown"))] #[derive(Clone)] pub struct ValidationPool { _inner: (), // private field means not publicly-instantiable } -#[cfg(target_os = "unknown")] +#[cfg(any(target_os = "android", target_os = "unknown"))] impl ValidationPool { /// Create a new `ValidationPool`. pub fn new() -> Self { @@ -64,6 +64,12 @@ impl ValidationPool { } } +/// A stub function defined when compiling for Android or WASM. +#[cfg(any(target_os = "android", target_os = "unknown"))] +pub fn run_worker(_: &str) -> Result<(), String> { + Err("Cannot run validation worker on this platform".to_string()) +} + /// WASM code execution mode. /// /// > Note: When compiling for WASM, the `Remote` variants are not available. @@ -101,7 +107,7 @@ pub enum Error { #[display(fmt = "WASM worker error: {}", _0)] External(String), #[display(fmt = "Shared memory error: {}", _0)] - #[cfg(not(target_os = "unknown"))] + #[cfg(not(any(target_os = "android", target_os = "unknown")))] SharedMem(shared_memory::SharedMemError), } @@ -111,7 +117,7 @@ impl std::error::Error for Error { Error::WasmExecutor(ref err) => Some(err), Error::Io(ref err) => Some(err), Error::System(ref err) => Some(&**err), - #[cfg(not(target_os = "unknown"))] + #[cfg(not(any(target_os = "android", target_os = "unknown")))] Error::SharedMem(ref err) => Some(err), _ => None, } @@ -137,20 +143,20 @@ pub fn validate_candidate( ExecutionMode::Local => { validate_candidate_internal(validation_code, ¶ms.encode(), ext) }, - #[cfg(not(target_os = "unknown"))] + #[cfg(not(any(target_os = "android", target_os = "unknown")))] ExecutionMode::Remote(pool) => { pool.validate_candidate(validation_code, params, ext, false) }, - #[cfg(not(target_os = "unknown"))] + #[cfg(not(any(target_os = "android", target_os = "unknown")))] ExecutionMode::RemoteTest(pool) => { pool.validate_candidate(validation_code, params, ext, true) }, - #[cfg(target_os = "unknown")] + #[cfg(any(target_os = "android", target_os = "unknown"))] ExecutionMode::Remote(pool) => Err(Error::System(Box::::from( "Remote validator not available".to_string() ) as Box<_>)), - #[cfg(target_os = "unknown")] + #[cfg(any(target_os = "android", target_os = "unknown"))] ExecutionMode::RemoteTest(pool) => Err(Error::System(Box::::from( "Remote validator not available".to_string() diff --git a/parachain/src/wasm_executor/validation_host.rs b/parachain/src/wasm_executor/validation_host.rs index 84be3deeb4e8..0f123349e3ed 100644 --- a/parachain/src/wasm_executor/validation_host.rs +++ b/parachain/src/wasm_executor/validation_host.rs @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -#![cfg(not(target_os = "unknown"))] +#![cfg(not(any(target_os = "android", target_os = "unknown")))] use std::{process, env, sync::Arc, sync::atomic, mem}; use codec::{Decode, Encode, EncodeAppend}; diff --git a/service/src/lib.rs b/service/src/lib.rs index a36463f59474..7b861c495d92 100644 --- a/service/src/lib.rs +++ b/service/src/lib.rs @@ -45,7 +45,7 @@ pub use polkadot_primitives::parachain::{CollatorId, ParachainHost}; pub use polkadot_primitives::Block; pub use sp_runtime::traits::{Block as BlockT, self as runtime_traits, BlakeTwo256}; pub use chain_spec::{PolkadotChainSpec, KusamaChainSpec, WestendChainSpec}; -#[cfg(not(target_os = "unknown"))] +#[cfg(feature = "full-node")] pub use consensus::run_validation_worker; pub use codec::Codec; pub use polkadot_runtime; diff --git a/validation/src/lib.rs b/validation/src/lib.rs index 438e95ae666d..da5454a5ea7a 100644 --- a/validation/src/lib.rs +++ b/validation/src/lib.rs @@ -53,7 +53,6 @@ pub use self::shared_table::{ }; pub use self::validation_service::{ServiceHandle, ServiceBuilder}; -#[cfg(not(target_os = "unknown"))] pub use parachain::wasm_executor::run_worker as run_validation_worker; mod dynamic_inclusion;