mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-28 03:27:44 +00:00
Merge pull request #7740 from Ecordonnier/eco/enable-utmpx-for-musl
enable utmpx feature for musl
This commit is contained in:
commit
d99b7b31a6
9 changed files with 47 additions and 15 deletions
6
.github/workflows/CICD.yml
vendored
6
.github/workflows/CICD.yml
vendored
|
@ -516,13 +516,13 @@ jobs:
|
||||||
# - { os , target , cargo-options , features , use-cross , toolchain, skip-tests, workspace-tests }
|
# - { os , target , cargo-options , features , use-cross , toolchain, skip-tests, workspace-tests }
|
||||||
- { os: ubuntu-latest , target: arm-unknown-linux-gnueabihf , features: feat_os_unix_gnueabihf , use-cross: use-cross , skip-tests: true }
|
- { os: ubuntu-latest , target: arm-unknown-linux-gnueabihf , features: feat_os_unix_gnueabihf , use-cross: use-cross , skip-tests: true }
|
||||||
- { os: ubuntu-24.04-arm , target: aarch64-unknown-linux-gnu , features: feat_os_unix_gnueabihf }
|
- { os: ubuntu-24.04-arm , target: aarch64-unknown-linux-gnu , features: feat_os_unix_gnueabihf }
|
||||||
- { os: ubuntu-latest , target: aarch64-unknown-linux-musl , features: feat_os_unix_musl , use-cross: use-cross , skip-tests: true }
|
- { os: ubuntu-latest , target: aarch64-unknown-linux-musl , features: feat_os_unix , use-cross: use-cross , skip-tests: true }
|
||||||
# - { os: ubuntu-latest , target: x86_64-unknown-linux-gnu , features: feat_selinux , use-cross: use-cross }
|
# - { os: ubuntu-latest , target: x86_64-unknown-linux-gnu , features: feat_selinux , use-cross: use-cross }
|
||||||
- { os: ubuntu-latest , target: i686-unknown-linux-gnu , features: "feat_os_unix,test_risky_names", use-cross: use-cross }
|
- { os: ubuntu-latest , target: i686-unknown-linux-gnu , features: "feat_os_unix,test_risky_names", use-cross: use-cross }
|
||||||
- { os: ubuntu-latest , target: i686-unknown-linux-musl , features: feat_os_unix_musl , use-cross: use-cross }
|
- { os: ubuntu-latest , target: i686-unknown-linux-musl , features: feat_os_unix , use-cross: use-cross }
|
||||||
- { os: ubuntu-latest , target: x86_64-unknown-linux-gnu , features: "feat_os_unix,test_risky_names", use-cross: use-cross }
|
- { os: ubuntu-latest , target: x86_64-unknown-linux-gnu , features: "feat_os_unix,test_risky_names", use-cross: use-cross }
|
||||||
- { os: ubuntu-latest , target: x86_64-unknown-linux-gnu , features: "feat_os_unix,uudoc" , use-cross: no, workspace-tests: true }
|
- { os: ubuntu-latest , target: x86_64-unknown-linux-gnu , features: "feat_os_unix,uudoc" , use-cross: no, workspace-tests: true }
|
||||||
- { os: ubuntu-latest , target: x86_64-unknown-linux-musl , features: feat_os_unix_musl , use-cross: use-cross }
|
- { os: ubuntu-latest , target: x86_64-unknown-linux-musl , features: feat_os_unix , use-cross: use-cross }
|
||||||
- { os: ubuntu-latest , target: x86_64-unknown-redox , features: feat_os_unix_redox , use-cross: redoxer , skip-tests: true }
|
- { os: ubuntu-latest , target: x86_64-unknown-redox , features: feat_os_unix_redox , use-cross: redoxer , skip-tests: true }
|
||||||
- { os: macos-latest , target: aarch64-apple-darwin , features: feat_os_macos, workspace-tests: true } # M1 CPU
|
- { os: macos-latest , target: aarch64-apple-darwin , features: feat_os_macos, workspace-tests: true } # M1 CPU
|
||||||
- { os: macos-13 , target: x86_64-apple-darwin , features: feat_os_macos, workspace-tests: true }
|
- { os: macos-13 , target: x86_64-apple-darwin , features: feat_os_macos, workspace-tests: true }
|
||||||
|
|
13
Cargo.toml
13
Cargo.toml
|
@ -150,7 +150,8 @@ feat_os_macos = [
|
||||||
#
|
#
|
||||||
"feat_require_unix_hostid",
|
"feat_require_unix_hostid",
|
||||||
]
|
]
|
||||||
# "feat_os_unix" == set of utilities which can be built/run on modern/usual *nix platforms
|
# "feat_os_unix" == set of utilities which can be built/run on modern/usual *nix platforms.
|
||||||
|
# Also used for targets binding to the "musl" library (ref: <https://musl.libc.org/about.html>)
|
||||||
feat_os_unix = [
|
feat_os_unix = [
|
||||||
"feat_Tier1",
|
"feat_Tier1",
|
||||||
#
|
#
|
||||||
|
@ -172,14 +173,6 @@ feat_os_unix_gnueabihf = [
|
||||||
"feat_require_unix_hostid",
|
"feat_require_unix_hostid",
|
||||||
"feat_require_unix_utmpx",
|
"feat_require_unix_utmpx",
|
||||||
]
|
]
|
||||||
# "feat_os_unix_musl" == set of utilities which can be built/run on targets binding to the "musl" library (ref: <https://musl.libc.org/about.html>)
|
|
||||||
feat_os_unix_musl = [
|
|
||||||
"feat_Tier1",
|
|
||||||
#
|
|
||||||
"feat_require_crate_cpp",
|
|
||||||
"feat_require_unix",
|
|
||||||
"feat_require_unix_hostid",
|
|
||||||
]
|
|
||||||
feat_os_unix_android = [
|
feat_os_unix_android = [
|
||||||
"feat_Tier1",
|
"feat_Tier1",
|
||||||
#
|
#
|
||||||
|
@ -309,7 +302,7 @@ hostname = "0.4"
|
||||||
iana-time-zone = "0.1.57"
|
iana-time-zone = "0.1.57"
|
||||||
indicatif = "0.17.8"
|
indicatif = "0.17.8"
|
||||||
itertools = "0.14.0"
|
itertools = "0.14.0"
|
||||||
libc = "0.2.153"
|
libc = "0.2.172"
|
||||||
linux-raw-sys = "0.9"
|
linux-raw-sys = "0.9"
|
||||||
lscolors = { version = "0.20.0", default-features = false, features = [
|
lscolors = { version = "0.20.0", default-features = false, features = [
|
||||||
"gnu_legacy",
|
"gnu_legacy",
|
||||||
|
|
|
@ -10,7 +10,18 @@ use uucore::{format_usage, help_about, help_usage};
|
||||||
|
|
||||||
mod platform;
|
mod platform;
|
||||||
|
|
||||||
|
#[cfg(target_env = "musl")]
|
||||||
|
const ABOUT: &str = concat!(
|
||||||
|
help_about!("pinky.md"),
|
||||||
|
"\n\nWarning: When built with musl libc, the `pinky` utility may show incomplete \n",
|
||||||
|
"or missing user information due to musl's stub implementation of `utmpx` \n",
|
||||||
|
"functions. This limitation affects the ability to retrieve accurate details \n",
|
||||||
|
"about logged-in users."
|
||||||
|
);
|
||||||
|
|
||||||
|
#[cfg(not(target_env = "musl"))]
|
||||||
const ABOUT: &str = help_about!("pinky.md");
|
const ABOUT: &str = help_about!("pinky.md");
|
||||||
|
|
||||||
const USAGE: &str = help_usage!("pinky.md");
|
const USAGE: &str = help_usage!("pinky.md");
|
||||||
|
|
||||||
mod options {
|
mod options {
|
||||||
|
|
|
@ -23,7 +23,17 @@ use uucore::{format_usage, help_about, help_usage};
|
||||||
#[cfg(not(target_os = "openbsd"))]
|
#[cfg(not(target_os = "openbsd"))]
|
||||||
use uucore::utmpx::*;
|
use uucore::utmpx::*;
|
||||||
|
|
||||||
|
#[cfg(target_env = "musl")]
|
||||||
|
const ABOUT: &str = concat!(
|
||||||
|
help_about!("uptime.md"),
|
||||||
|
"\n\nWarning: When built with musl libc, the `uptime` utility may show '0 users' \n",
|
||||||
|
"due to musl's stub implementation of utmpx functions. Boot time and load averages \n",
|
||||||
|
"are still calculated using alternative mechanisms."
|
||||||
|
);
|
||||||
|
|
||||||
|
#[cfg(not(target_env = "musl"))]
|
||||||
const ABOUT: &str = help_about!("uptime.md");
|
const ABOUT: &str = help_about!("uptime.md");
|
||||||
|
|
||||||
const USAGE: &str = help_usage!("uptime.md");
|
const USAGE: &str = help_usage!("uptime.md");
|
||||||
pub mod options {
|
pub mod options {
|
||||||
pub static SINCE: &str = "since";
|
pub static SINCE: &str = "since";
|
||||||
|
|
|
@ -18,7 +18,16 @@ use utmp_classic::{UtmpEntry, parse_from_path};
|
||||||
#[cfg(not(target_os = "openbsd"))]
|
#[cfg(not(target_os = "openbsd"))]
|
||||||
use uucore::utmpx::{self, Utmpx};
|
use uucore::utmpx::{self, Utmpx};
|
||||||
|
|
||||||
|
#[cfg(target_env = "musl")]
|
||||||
|
const ABOUT: &str = concat!(
|
||||||
|
help_about!("users.md"),
|
||||||
|
"\n\nWarning: When built with musl libc, the `users` utility may show '0 users' \n",
|
||||||
|
"due to musl's stub implementation of utmpx functions."
|
||||||
|
);
|
||||||
|
|
||||||
|
#[cfg(not(target_env = "musl"))]
|
||||||
const ABOUT: &str = help_about!("users.md");
|
const ABOUT: &str = help_about!("users.md");
|
||||||
|
|
||||||
const USAGE: &str = help_usage!("users.md");
|
const USAGE: &str = help_usage!("users.md");
|
||||||
|
|
||||||
#[cfg(target_os = "openbsd")]
|
#[cfg(target_os = "openbsd")]
|
||||||
|
|
|
@ -28,7 +28,17 @@ mod options {
|
||||||
pub const FILE: &str = "FILE"; // if length=1: FILE, if length=2: ARG1 ARG2
|
pub const FILE: &str = "FILE"; // if length=1: FILE, if length=2: ARG1 ARG2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(target_env = "musl")]
|
||||||
|
const ABOUT: &str = concat!(
|
||||||
|
help_about!("who.md"),
|
||||||
|
"\n\nNote: When built with musl libc, the `who` utility will not display any \n",
|
||||||
|
"information about logged-in users. This is due to musl's stub implementation \n",
|
||||||
|
"of `utmpx` functions, which prevents access to the necessary data."
|
||||||
|
);
|
||||||
|
|
||||||
|
#[cfg(not(target_env = "musl"))]
|
||||||
const ABOUT: &str = help_about!("who.md");
|
const ABOUT: &str = help_about!("who.md");
|
||||||
|
|
||||||
const USAGE: &str = help_usage!("who.md");
|
const USAGE: &str = help_usage!("who.md");
|
||||||
|
|
||||||
#[cfg(target_os = "linux")]
|
#[cfg(target_os = "linux")]
|
||||||
|
|
|
@ -76,7 +76,6 @@ pub mod signals;
|
||||||
not(target_os = "fuchsia"),
|
not(target_os = "fuchsia"),
|
||||||
not(target_os = "openbsd"),
|
not(target_os = "openbsd"),
|
||||||
not(target_os = "redox"),
|
not(target_os = "redox"),
|
||||||
not(target_env = "musl"),
|
|
||||||
feature = "utmpx"
|
feature = "utmpx"
|
||||||
))]
|
))]
|
||||||
pub mod utmpx;
|
pub mod utmpx;
|
||||||
|
|
|
@ -89,7 +89,6 @@ pub use crate::features::signals;
|
||||||
not(target_os = "fuchsia"),
|
not(target_os = "fuchsia"),
|
||||||
not(target_os = "openbsd"),
|
not(target_os = "openbsd"),
|
||||||
not(target_os = "redox"),
|
not(target_os = "redox"),
|
||||||
not(target_env = "musl"),
|
|
||||||
feature = "utmpx"
|
feature = "utmpx"
|
||||||
))]
|
))]
|
||||||
pub use crate::features::utmpx;
|
pub use crate::features::utmpx;
|
||||||
|
|
|
@ -103,6 +103,7 @@ fn test_uptime_with_non_existent_file() {
|
||||||
// This will pass
|
// This will pass
|
||||||
#[test]
|
#[test]
|
||||||
#[cfg(not(any(target_os = "openbsd", target_os = "macos")))]
|
#[cfg(not(any(target_os = "openbsd", target_os = "macos")))]
|
||||||
|
#[cfg(not(target_env = "musl"))]
|
||||||
#[cfg_attr(
|
#[cfg_attr(
|
||||||
all(target_arch = "aarch64", target_os = "linux"),
|
all(target_arch = "aarch64", target_os = "linux"),
|
||||||
ignore = "Issue #7159 - Test not supported on ARM64 Linux"
|
ignore = "Issue #7159 - Test not supported on ARM64 Linux"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue