From b27148d14bc23b9a5e378a2ee2541c709b456c1f Mon Sep 17 00:00:00 2001 From: unrelentingtech Date: Thu, 1 Sep 2022 03:34:26 +0300 Subject: [PATCH] Fix build on *BSD, illumos, etc. (#6456) * nu-path: use 'linux' code on all non-macOS unix * nu-command: cfg() the Ps command to platforms it's actually implemented on * nu-system: cfg() the Ps test to the platforms Ps is implemented on --- crates/nu-command/src/default_context.rs | 9 ++++- crates/nu-command/src/system/mod.rs | 12 ++++++ crates/nu-path/Cargo.toml | 2 +- crates/nu-path/src/tilde.rs | 4 +- crates/nu-system/src/main.rs | 49 +++++++++++++----------- 5 files changed, 50 insertions(+), 26 deletions(-) diff --git a/crates/nu-command/src/default_context.rs b/crates/nu-command/src/default_context.rs index 34addd12f9..369d7bd863 100644 --- a/crates/nu-command/src/default_context.rs +++ b/crates/nu-command/src/default_context.rs @@ -160,10 +160,17 @@ pub fn create_default_context() -> EngineState { Exec, External, NuCheck, - Ps, Sys, }; + #[cfg(any( + target_os = "android", + target_os = "linux", + target_os = "macos", + target_os = "windows" + ))] + bind_command! { Ps }; + #[cfg(feature = "which-support")] bind_command! { Which }; diff --git a/crates/nu-command/src/system/mod.rs b/crates/nu-command/src/system/mod.rs index 127546e8e3..f0504589ca 100644 --- a/crates/nu-command/src/system/mod.rs +++ b/crates/nu-command/src/system/mod.rs @@ -2,6 +2,12 @@ mod benchmark; mod complete; mod exec; mod nu_check; +#[cfg(any( + target_os = "android", + target_os = "linux", + target_os = "macos", + target_os = "windows" +))] mod ps; mod run_external; mod sys; @@ -11,6 +17,12 @@ pub use benchmark::Benchmark; pub use complete::Complete; pub use exec::Exec; pub use nu_check::NuCheck; +#[cfg(any( + target_os = "android", + target_os = "linux", + target_os = "macos", + target_os = "windows" +))] pub use ps::Ps; pub use run_external::{External, ExternalCommand}; pub use sys::Sys; diff --git a/crates/nu-path/Cargo.toml b/crates/nu-path/Cargo.toml index b010aa6afa..9f2d7a033b 100644 --- a/crates/nu-path/Cargo.toml +++ b/crates/nu-path/Cargo.toml @@ -11,5 +11,5 @@ version = "0.67.1" dirs-next = "2.0.0" dunce = "1.0.1" -[target.'cfg(target_os = "linux")'.dependencies] +[target.'cfg(all(unix, not(target_os = "macos")))'.dependencies] pwd = "1.3.1" \ No newline at end of file diff --git a/crates/nu-path/src/tilde.rs b/crates/nu-path/src/tilde.rs index 88d733ab28..35201e9c58 100644 --- a/crates/nu-path/src/tilde.rs +++ b/crates/nu-path/src/tilde.rs @@ -1,4 +1,4 @@ -#[cfg(target_os = "linux")] +#[cfg(all(unix, not(target_os = "macos")))] use pwd::Passwd; use std::path::{Path, PathBuf}; @@ -45,7 +45,7 @@ fn expand_tilde_with_home(path: impl AsRef, home: Option) -> Path } } -#[cfg(target_os = "linux")] +#[cfg(all(unix, not(target_os = "macos")))] fn user_home_dir(username: &str) -> PathBuf { let passwd = Passwd::from_name(username); match &passwd.ok() { diff --git a/crates/nu-system/src/main.rs b/crates/nu-system/src/main.rs index 6c232fbc7e..316e295e30 100644 --- a/crates/nu-system/src/main.rs +++ b/crates/nu-system/src/main.rs @@ -1,27 +1,32 @@ -use std::thread::available_parallelism; -use std::time::Duration; - fn main() { - let cores = match available_parallelism() { - Ok(p) => p.get(), - Err(_) => 1usize, - }; - for run in 1..=10 { - for proc in nu_system::collect_proc(Duration::from_millis(100), false) { - if proc.cpu_usage() > 0.00001 { - println!( - "{} - {} - {} - {} - {:.2}% - {}M - {}M - {} procs", - run, - proc.pid(), - proc.name(), - proc.status(), - proc.cpu_usage() / cores as f64, - proc.mem_size() / (1024 * 1024), - proc.virtual_size() / (1024 * 1024), - cores, - ) + #[cfg(any( + target_os = "android", + target_os = "linux", + target_os = "macos", + target_os = "windows" + ))] + { + let cores = match std::thread::available_parallelism() { + Ok(p) => p.get(), + Err(_) => 1usize, + }; + for run in 1..=10 { + for proc in nu_system::collect_proc(std::time::Duration::from_millis(100), false) { + if proc.cpu_usage() > 0.00001 { + println!( + "{} - {} - {} - {} - {:.2}% - {}M - {}M - {} procs", + run, + proc.pid(), + proc.name(), + proc.status(), + proc.cpu_usage() / cores as f64, + proc.mem_size() / (1024 * 1024), + proc.virtual_size() / (1024 * 1024), + cores, + ) + } } + std::thread::sleep(std::time::Duration::from_millis(1000)); } - std::thread::sleep(std::time::Duration::from_millis(1000)); } }