From e80b936954578d0767e4512c5e87ae375d8390b3 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Thu, 29 Jan 2026 13:04:04 +0700 Subject: [PATCH] Check build against stage pkgar instead of dir --- src/cook/cook_build.rs | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/cook/cook_build.rs b/src/cook/cook_build.rs index 183390d77..5468451a3 100644 --- a/src/cook/cook_build.rs +++ b/src/cook/cook_build.rs @@ -180,6 +180,10 @@ pub fn build( let sysroot_dir = target_dir.join("sysroot"); let toolchain_dir = target_dir.join("toolchain"); let stage_dirs = get_stage_dirs(&recipe.optional_packages, target_dir); + let stage_pkgars: Vec = stage_dirs + .iter() + .map(|p| p.with_added_extension("pkgar")) + .collect(); let cli_verbose = cook_config.verbose; let cli_jobs = cook_config.jobs; if recipe.build.kind == BuildKind::None { @@ -218,7 +222,7 @@ pub fn build( }; } - if !check_source && stage_dirs.iter().all(|dir| dir.exists()) { + if !check_source && stage_pkgars.iter().all(|file| file.is_file()) { if cli_verbose { log_to_pty!(logger, "DEBUG: using cached build, not checking source"); } @@ -245,14 +249,7 @@ pub fn build( .unwrap_or(Ok(SystemTime::UNIX_EPOCH))?; // check stage dir modified against pkgar files, any files missing will result in UNIX_EPOCH - let stage_modified = modified_all( - &stage_dirs - .iter() - .map(|p| p.with_added_extension("pkgar")) - .collect(), - modified, - ) - .unwrap_or(SystemTime::UNIX_EPOCH); + let stage_modified = modified_all(&stage_pkgars, modified).unwrap_or(SystemTime::UNIX_EPOCH); // Rebuild stage if source is newer if stage_modified < source_modified || stage_modified < deps_modified