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
This commit is contained in:
unrelentingtech 2022-09-01 03:34:26 +03:00 committed by GitHub
parent 4858a9a817
commit b27148d14b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 50 additions and 26 deletions

View File

@ -160,10 +160,17 @@ pub fn create_default_context() -> EngineState {
Exec, Exec,
External, External,
NuCheck, NuCheck,
Ps,
Sys, Sys,
}; };
#[cfg(any(
target_os = "android",
target_os = "linux",
target_os = "macos",
target_os = "windows"
))]
bind_command! { Ps };
#[cfg(feature = "which-support")] #[cfg(feature = "which-support")]
bind_command! { Which }; bind_command! { Which };

View File

@ -2,6 +2,12 @@ mod benchmark;
mod complete; mod complete;
mod exec; mod exec;
mod nu_check; mod nu_check;
#[cfg(any(
target_os = "android",
target_os = "linux",
target_os = "macos",
target_os = "windows"
))]
mod ps; mod ps;
mod run_external; mod run_external;
mod sys; mod sys;
@ -11,6 +17,12 @@ pub use benchmark::Benchmark;
pub use complete::Complete; pub use complete::Complete;
pub use exec::Exec; pub use exec::Exec;
pub use nu_check::NuCheck; 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 ps::Ps;
pub use run_external::{External, ExternalCommand}; pub use run_external::{External, ExternalCommand};
pub use sys::Sys; pub use sys::Sys;

View File

@ -11,5 +11,5 @@ version = "0.67.1"
dirs-next = "2.0.0" dirs-next = "2.0.0"
dunce = "1.0.1" dunce = "1.0.1"
[target.'cfg(target_os = "linux")'.dependencies] [target.'cfg(all(unix, not(target_os = "macos")))'.dependencies]
pwd = "1.3.1" pwd = "1.3.1"

View File

@ -1,4 +1,4 @@
#[cfg(target_os = "linux")] #[cfg(all(unix, not(target_os = "macos")))]
use pwd::Passwd; use pwd::Passwd;
use std::path::{Path, PathBuf}; use std::path::{Path, PathBuf};
@ -45,7 +45,7 @@ fn expand_tilde_with_home(path: impl AsRef<Path>, home: Option<PathBuf>) -> Path
} }
} }
#[cfg(target_os = "linux")] #[cfg(all(unix, not(target_os = "macos")))]
fn user_home_dir(username: &str) -> PathBuf { fn user_home_dir(username: &str) -> PathBuf {
let passwd = Passwd::from_name(username); let passwd = Passwd::from_name(username);
match &passwd.ok() { match &passwd.ok() {

View File

@ -1,27 +1,32 @@
use std::thread::available_parallelism;
use std::time::Duration;
fn main() { fn main() {
let cores = match available_parallelism() { #[cfg(any(
Ok(p) => p.get(), target_os = "android",
Err(_) => 1usize, target_os = "linux",
}; target_os = "macos",
for run in 1..=10 { target_os = "windows"
for proc in nu_system::collect_proc(Duration::from_millis(100), false) { ))]
if proc.cpu_usage() > 0.00001 { {
println!( let cores = match std::thread::available_parallelism() {
"{} - {} - {} - {} - {:.2}% - {}M - {}M - {} procs", Ok(p) => p.get(),
run, Err(_) => 1usize,
proc.pid(), };
proc.name(), for run in 1..=10 {
proc.status(), for proc in nu_system::collect_proc(std::time::Duration::from_millis(100), false) {
proc.cpu_usage() / cores as f64, if proc.cpu_usage() > 0.00001 {
proc.mem_size() / (1024 * 1024), println!(
proc.virtual_size() / (1024 * 1024), "{} - {} - {} - {} - {:.2}% - {}M - {}M - {} procs",
cores, 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));
} }
} }