ksud: re-extract ksud when necessary close #1242

This commit is contained in:
weishu
2024-01-04 12:08:58 +08:00
parent 097e291d93
commit b99701d216
4 changed files with 7 additions and 6 deletions

View File

@@ -17,11 +17,12 @@ struct Asset;
#[folder = "bin/x86_64"] #[folder = "bin/x86_64"]
struct Asset; struct Asset;
pub fn ensure_binaries() -> Result<()> { pub fn ensure_binaries(ignore_if_exist: bool) -> Result<()> {
for file in Asset::iter() { for file in Asset::iter() {
utils::ensure_binary( utils::ensure_binary(
format!("{BINARY_DIR}{file}"), format!("{BINARY_DIR}{file}"),
&Asset::get(&file).unwrap().data, &Asset::get(&file).unwrap().data,
ignore_if_exist,
)? )?
} }
Ok(()) Ok(())

View File

@@ -126,7 +126,7 @@ pub fn on_post_data_fs() -> Result<()> {
// we should clean the module mount point if it exists // we should clean the module mount point if it exists
ensure_clean_dir(module_dir)?; ensure_clean_dir(module_dir)?;
assets::ensure_binaries().with_context(|| "Failed to extract bin assets")?; assets::ensure_binaries(true).with_context(|| "Failed to extract bin assets")?;
if Path::new(module_update_img).exists() { if Path::new(module_update_img).exists() {
if module_update_flag.exists() { if module_update_flag.exists() {
@@ -259,7 +259,7 @@ pub fn install() -> Result<()> {
std::fs::copy("/proc/self/exe", defs::DAEMON_PATH)?; std::fs::copy("/proc/self/exe", defs::DAEMON_PATH)?;
restorecon::lsetfilecon(defs::DAEMON_PATH, restorecon::ADB_CON)?; restorecon::lsetfilecon(defs::DAEMON_PATH, restorecon::ADB_CON)?;
// install binary assets // install binary assets
assets::ensure_binaries().with_context(|| "Failed to extract assets")?; assets::ensure_binaries(false).with_context(|| "Failed to extract assets")?;
#[cfg(target_os = "android")] #[cfg(target_os = "android")]
link_ksud_to_bin()?; link_ksud_to_bin()?;

View File

@@ -330,7 +330,7 @@ fn _install_module(zip: &str) -> Result<()> {
// print banner // print banner
println!(include_str!("banner")); println!(include_str!("banner"));
assets::ensure_binaries().with_context(|| "Failed to extract assets")?; assets::ensure_binaries(false).with_context(|| "Failed to extract assets")?;
// first check if workding dir is usable // first check if workding dir is usable
ensure_dir_exists(defs::WORKING_DIR).with_context(|| "Failed to create working dir")?; ensure_dir_exists(defs::WORKING_DIR).with_context(|| "Failed to create working dir")?;

View File

@@ -45,8 +45,8 @@ pub fn ensure_dir_exists<T: AsRef<Path>>(dir: T) -> Result<()> {
} }
} }
pub fn ensure_binary<T: AsRef<Path>>(path: T, contents: &[u8]) -> Result<()> { pub fn ensure_binary<T: AsRef<Path>>(path: T, contents: &[u8], ignore_if_exist: bool) -> Result<()> {
if path.as_ref().exists() { if ignore_if_exist && path.as_ref().exists() {
return Ok(()); return Ok(());
} }