From 71cc166f7240914909a6e4be75b2c1f59f3263fb Mon Sep 17 00:00:00 2001 From: tiann Date: Fri, 3 Feb 2023 14:46:48 +0800 Subject: [PATCH] ksud: Fix macOS compile --- userspace/ksud/Cargo.toml | 2 +- userspace/ksud/src/ksu.rs | 8 ++++---- userspace/ksud/src/mount.rs | 30 +++++++++++++++--------------- userspace/ksud/src/restorecon.rs | 12 ++++++------ userspace/ksud/src/sepolicy.rs | 4 ++-- userspace/ksud/src/utils.rs | 4 ++-- 6 files changed, 30 insertions(+), 30 deletions(-) diff --git a/userspace/ksud/Cargo.toml b/userspace/ksud/Cargo.toml index 35262f81..330ac303 100644 --- a/userspace/ksud/Cargo.toml +++ b/userspace/ksud/Cargo.toml @@ -32,7 +32,7 @@ rust-embed = { version = "6.4.2", features = [ "compression", # must clean build after updating binaries ] } -[target.'cfg(unix)'.dependencies] +[target.'cfg(linux)'.dependencies] sys-mount = "2.0.1" # some android specific dependencies which compiles under unix are also listed here for convenience of coding android-properties = { version = "0.2.2", features = ["bionic-deprecated"] } diff --git a/userspace/ksud/src/ksu.rs b/userspace/ksud/src/ksu.rs index 0645cc8c..5e708f91 100644 --- a/userspace/ksud/src/ksu.rs +++ b/userspace/ksud/src/ksu.rs @@ -20,7 +20,7 @@ pub const CMD_SET_SEPOLICY: u64 = 8; const EVENT_POST_FS_DATA: u64 = 1; const EVENT_BOOT_COMPLETED: u64 = 2; -#[cfg(unix)] +#[cfg(target_os = "linux")] pub fn grant_root() -> Result<()> { let mut result: u32 = 0; unsafe { @@ -38,14 +38,14 @@ pub fn grant_root() -> Result<()> { Err(std::process::Command::new("sh").exec().into()) } -#[cfg(not(unix))] +#[cfg(not(target_os = "linux"))] pub fn grant_root() -> Result<()> { unimplemented!("grant_root is only available on android"); } pub fn get_version() -> i32 { let mut result: i32 = 0; - #[cfg(unix)] + #[cfg(target_os = "linux")] unsafe { #[allow(clippy::cast_possible_wrap)] libc::prctl( @@ -58,7 +58,7 @@ pub fn get_version() -> i32 { } fn report_event(event: u64) { - #[cfg(unix)] + #[cfg(target_os = "linux")] unsafe { #[allow(clippy::cast_possible_wrap)] libc::prctl( diff --git a/userspace/ksud/src/mount.rs b/userspace/ksud/src/mount.rs index 416c2424..af6336fc 100644 --- a/userspace/ksud/src/mount.rs +++ b/userspace/ksud/src/mount.rs @@ -1,21 +1,21 @@ use anyhow::Result; -#[cfg(unix)] +#[cfg(target_os = "linux")] use anyhow::{Context, Ok}; -#[cfg(unix)] +#[cfg(target_os = "linux")] use retry::delay::NoDelay; -#[cfg(unix)] +#[cfg(target_os = "linux")] use sys_mount::{unmount, FilesystemType, Mount, MountFlags, Unmount, UnmountFlags}; pub struct AutoMountExt4 { mnt: String, - #[cfg(unix)] + #[cfg(target_os = "linux")] mount: Option, auto_umount: bool, } impl AutoMountExt4 { - #[cfg(unix)] + #[cfg(target_os = "linux")] pub fn try_new(src: &str, mnt: &str, auto_umount: bool) -> Result { let result = Mount::builder() .fstype(FilesystemType::from("ext4")) @@ -52,12 +52,12 @@ impl AutoMountExt4 { } } - #[cfg(not(unix))] + #[cfg(not(target_os = "linux"))] pub fn try_new(_src: &str, _mnt: &str, _auto_umount: bool) -> Result { unimplemented!() } - #[cfg(unix)] + #[cfg(target_os = "linux")] pub fn umount(&self) -> Result<()> { if let Some(ref mount) = self.mount { mount @@ -74,7 +74,7 @@ impl AutoMountExt4 { } } -#[cfg(unix)] +#[cfg(target_os = "linux")] impl Drop for AutoMountExt4 { fn drop(&mut self) { log::info!( @@ -89,7 +89,7 @@ impl Drop for AutoMountExt4 { } #[allow(dead_code)] -#[cfg(unix)] +#[cfg(target_os = "linux")] fn mount_image(src: &str, target: &str, autodrop: bool) -> Result<()> { if autodrop { Mount::builder() @@ -106,7 +106,7 @@ fn mount_image(src: &str, target: &str, autodrop: bool) -> Result<()> { } #[allow(dead_code)] -#[cfg(unix)] +#[cfg(target_os = "linux")] pub fn mount_ext4(src: &str, target: &str, autodrop: bool) -> Result<()> { // umount target first. let _ = umount_dir(target); @@ -116,13 +116,13 @@ pub fn mount_ext4(src: &str, target: &str, autodrop: bool) -> Result<()> { .map(|_| ()) } -#[cfg(unix)] +#[cfg(target_os = "linux")] pub fn umount_dir(src: &str) -> Result<()> { unmount(src, UnmountFlags::empty()).with_context(|| format!("Failed to umount {src}"))?; Ok(()) } -#[cfg(unix)] +#[cfg(target_os = "linux")] pub fn mount_overlay(lowerdir: &str, mnt: &str) -> Result<()> { Mount::builder() .fstype(FilesystemType::from("overlay")) @@ -133,17 +133,17 @@ pub fn mount_overlay(lowerdir: &str, mnt: &str) -> Result<()> { .map_err(|e| anyhow::anyhow!("mount partition: {mnt} overlay failed: {e}")) } -#[cfg(not(unix))] +#[cfg(not(target_os = "linux"))] pub fn mount_ext4(_src: &str, _target: &str, _autodrop: bool) -> Result<()> { unimplemented!() } -#[cfg(not(unix))] +#[cfg(not(target_os = "linux"))] pub fn umount_dir(_src: &str) -> Result<()> { unimplemented!() } -#[cfg(not(unix))] +#[cfg(not(target_os = "linux"))] pub fn mount_overlay(_lowerdir: &str, _mnt: &str) -> Result<()> { unimplemented!() } diff --git a/userspace/ksud/src/restorecon.rs b/userspace/ksud/src/restorecon.rs index 1ea08e29..6f48f59e 100644 --- a/userspace/ksud/src/restorecon.rs +++ b/userspace/ksud/src/restorecon.rs @@ -2,9 +2,9 @@ use anyhow::Result; use jwalk::{Parallelism::Serial, WalkDir}; use std::path::Path; -#[cfg(unix)] +#[cfg(target_os = "linux")] use anyhow::{Context, Ok}; -#[cfg(unix)] +#[cfg(target_os = "linux")] use extattr::{setxattr, Flags as XattrFlags}; const SYSTEM_CON: &str = "u:object_r:system_file:s0"; @@ -12,18 +12,18 @@ const _ADB_CON: &str = "u:object_r:adb_data_file:s0"; const SELINUX_XATTR : &str = "security.selinux"; pub fn setcon>(path: P, con: &str) -> Result<()> { - #[cfg(unix)] + #[cfg(target_os = "linux")] setxattr(&path, SELINUX_XATTR, con, XattrFlags::empty()) .with_context(|| format!("Failed to change SELinux context for {}", path.as_ref().display()))?; Ok(()) } -#[cfg(unix)] +#[cfg(target_os = "linux")] pub fn setsyscon>(path: P) -> Result<()> { setcon(path, SYSTEM_CON) } -#[cfg(not(unix))] +#[cfg(not(target_os = "linux"))] pub fn setsyscon>(path: P) -> Result<()> { unimplemented!() } @@ -31,7 +31,7 @@ pub fn setsyscon>(path: P) -> Result<()> { pub fn restore_syscon>(dir: P) -> Result<()> { for dir_entry in WalkDir::new(dir).parallelism(Serial) { if let Some(path) = dir_entry.ok().map(|dir_entry| dir_entry.path()) { - #[cfg(unix)] + #[cfg(target_os = "linux")] setxattr(&path, SELINUX_XATTR, SYSTEM_CON, XattrFlags::empty()).with_context( || format!("Failed to change SELinux context for {}", path.display()), )?; diff --git a/userspace/ksud/src/sepolicy.rs b/userspace/ksud/src/sepolicy.rs index 2a4bfb23..c699ae3e 100644 --- a/userspace/ksud/src/sepolicy.rs +++ b/userspace/ksud/src/sepolicy.rs @@ -691,7 +691,7 @@ impl From for FfiPolicy { } } -#[cfg(unix)] +#[cfg(target_os = "linux")] fn apply_one_rule<'a>(statement: &'a PolicyStatement<'a>, strict: bool) -> Result<()> { let policies: Vec = statement.try_into()?; @@ -720,7 +720,7 @@ fn apply_one_rule<'a>(statement: &'a PolicyStatement<'a>, strict: bool) -> Resul Ok(()) } -#[cfg(not(unix))] +#[cfg(not(target_os = "linux"))] fn apply_one_rule<'a>(_statement: &'a PolicyStatement<'a>, _strict: bool) -> Result<()> { unimplemented!() } diff --git a/userspace/ksud/src/utils.rs b/userspace/ksud/src/utils.rs index 9b604e18..f734992c 100644 --- a/userspace/ksud/src/utils.rs +++ b/userspace/ksud/src/utils.rs @@ -63,12 +63,12 @@ pub fn ensure_binary>(path: T, contents: &[u8]) -> Result<()> { Ok(()) } -#[cfg(unix)] +#[cfg(target_os = "linux")] pub fn getprop(prop: &str) -> Option { android_properties::getprop(prop).value() } -#[cfg(not(unix))] +#[cfg(not(target_os = "linux"))] pub fn getprop(_prop: &str) -> Option { unimplemented!() }