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,
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 };

View file

@ -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;

View file

@ -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"

View file

@ -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<Path>, home: Option<PathBuf>) -> 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() {

View file

@ -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));
}
}