diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 82e05744..e70bf4bb 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -44,7 +44,7 @@ fn cook( ) .map_err(|err| format!("failed to build: {}", err))?; - package(&stage_dir, &target_dir, name, recipe, &auto_deps) + package(&stage_dir, &target_dir, name, recipe, &auto_deps, &None) .map_err(|err| format!("failed to package: {}", err))?; Ok(()) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 378118fb..c8f9c80b 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -314,6 +314,7 @@ fn handle_cook( &recipe.name, &recipe.recipe, &auto_deps, + logger, ) .map_err(|err| anyhow!("failed to package: {:?}", err))?; diff --git a/src/cook/package.rs b/src/cook/package.rs index b4fed138..3103c13f 100644 --- a/src/cook/package.rs +++ b/src/cook/package.rs @@ -7,12 +7,28 @@ use crate::{ recipe::{BuildKind, Recipe}, }; +macro_rules! log_warn { + ($logger:expr, $($arg:tt)+) => { + use std::io::Write; + + if $logger.is_some() { + let _ = $logger.as_ref().unwrap().1.try_clone().unwrap().write( + format!($($arg)+) + .as_bytes(), + ); + } else { + eprintln!($($arg)+); + } + }; +} + pub fn package( stage_dir: &Path, target_dir: &Path, name: &PackageName, recipe: &Recipe, auto_deps: &BTreeSet, + logger: &Stdout, ) -> Result<(), String> { if recipe.build.kind == BuildKind::None { // metapackages don't have stage dir @@ -42,7 +58,8 @@ pub fn package( if package_file.is_file() { let stage_modified = modified_dir(stage_dir)?; if modified(&package_file)? < stage_modified { - eprintln!( + log_warn!( + logger, "DEBUG: '{}' newer than '{}'", stage_dir.display(), package_file.display()