From 2d3b2ed38a1e4159d1a80044756ea0fc644a9764 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 4 Mar 2026 10:49:09 -0700 Subject: [PATCH] Improve some error reporting --- src/bin/installer.rs | 2 +- src/bin/installer_tui.rs | 2 +- src/config/file_impl.rs | 18 ++++++++++++------ src/installer.rs | 6 ++++-- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/bin/installer.rs b/src/bin/installer.rs index 9eb6fed6fd..5cb916052b 100644 --- a/src/bin/installer.rs +++ b/src/bin/installer.rs @@ -165,7 +165,7 @@ fn main() { if let Some(path) = parser.args.first() { if let Err(err) = redox_installer::install(config, path) { - eprintln!("installer: failed to install: {}", err); + eprintln!("installer: failed to install: {:?}", err); process::exit(1); } } else { diff --git a/src/bin/installer_tui.rs b/src/bin/installer_tui.rs index ef5bd70d03..b1c91a62df 100644 --- a/src/bin/installer_tui.rs +++ b/src/bin/installer_tui.rs @@ -385,7 +385,7 @@ fn main() { process::exit(0); } Err(err) => { - eprintln!("redox_installer_tui: failed to install: {}", err); + eprintln!("redox_installer_tui: failed to install: {:?}", err); process::exit(1); } } diff --git a/src/config/file_impl.rs b/src/config/file_impl.rs index 45928efaf0..f9f5147a09 100644 --- a/src/config/file_impl.rs +++ b/src/config/file_impl.rs @@ -1,4 +1,4 @@ -use anyhow::Result; +use anyhow::{Context, Result}; use libc::{gid_t, uid_t}; use std::ffi::{CString, OsStr}; @@ -34,21 +34,25 @@ impl crate::FileConfig { if self.directory { println!("Create directory {}", target_file.display()); - fs::create_dir_all(&target_file)?; + fs::create_dir_all(&target_file) + .with_context(|| format!("failed to create directory {}", target_file.display()))?; self.apply_perms(&target_file)?; return Ok(()); } else if let Some(parent) = target_file.parent() { println!("Create file parent {}", parent.display()); - fs::create_dir_all(parent)?; + fs::create_dir_all(parent) + .with_context(|| format!("failed to create file parent {}", parent.display()))?; } if self.symlink { println!("Create symlink {}", target_file.display()); - symlink(&OsStr::new(&self.data), &target_file)?; + symlink(&OsStr::new(&self.data), &target_file) + .with_context(|| format!("failed to create symlink {}", target_file.display()))?; Ok(()) } else { println!("Create file {}", target_file.display()); - let mut file = File::create(&target_file)?; + let mut file = File::create(&target_file) + .with_context(|| format!("failed to create file {}", target_file.display()))?; file.write_all(self.data.as_bytes())?; self.apply_perms(target_file) @@ -64,9 +68,11 @@ impl crate::FileConfig { let gid = self.gid.unwrap_or(!0); // chmod - fs::set_permissions(path, fs::Permissions::from_mode(mode))?; + fs::set_permissions(path, fs::Permissions::from_mode(mode)) + .with_context(|| format!("failed to set permissions on {}", path.display()))?; // chown chown(path, uid, gid, self.recursive_chown) + .with_context(|| format!("failed to chown {}", path.display())) } } diff --git a/src/installer.rs b/src/installer.rs index a69662608a..c8118d88b7 100644 --- a/src/installer.rs +++ b/src/installer.rs @@ -104,8 +104,10 @@ fn install_local_pkgar(cookbook: &str, target: &str, packagename: &str, dest: &P bail!("Package is not exist: {}", pkgar_path.display()); } - pkgar::extract(&public_path, &pkgar_path, dest)?; - pkgar::split(&public_path, &pkgar_path, head_path, Option::<&str>::None)?; + pkgar::extract(&public_path, &pkgar_path, dest) + .with_context(|| format!("failed to pkgar extract {}", pkgar_path.display()))?; + pkgar::split(&public_path, &pkgar_path, head_path, Option::<&str>::None) + .with_context(|| format!("failed to pkgar split {}", pkgar_path.display()))?; } // Recursively install any runtime dependencies.