From daf639a762efa80b50920c9f08d7566602e48372 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 26 Apr 2026 10:59:08 +0700 Subject: [PATCH] Fix sysroot rebuild for clean_target --- src/cook/cook_build.rs | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/src/cook/cook_build.rs b/src/cook/cook_build.rs index a0ebc956..7eca2b90 100644 --- a/src/cook/cook_build.rs +++ b/src/cook/cook_build.rs @@ -267,17 +267,15 @@ pub fn build( return build_remote(stage_dirs, stage_pkgars, recipe, target_dir, logger); } + let deps_sysroot = if name.is_host() { + &dep_host_pkgars + } else { + &dep_pkgars + }; + let have_toolchain = !name.is_host() && dep_host_pkgars.len() > 0; let (sysroot_cached, toolchain_cached) = ( - build_deps_dir( - logger, - &sysroot_dir, - if name.is_host() { - &dep_host_pkgars - } else { - &dep_pkgars - }, - )?, - if !name.is_host() && dep_host_pkgars.len() > 0 { + build_deps_dir(logger, &sysroot_dir, deps_sysroot)?, + if have_toolchain { build_deps_dir(logger, &toolchain_dir, &dep_host_pkgars)? } else { true @@ -300,6 +298,17 @@ pub fn build( for stage_dir in &stage_dirs { remove_stage_dir(stage_dir)?; } + if cook_config.clean_target { + // no matter what, these two caches are invalid + if sysroot_cached { + fs::remove_all(&sysroot_dir)?; + build_deps_dir(logger, &sysroot_dir, deps_sysroot)?; + } + if toolchain_cached && have_toolchain { + fs::remove_all(&toolchain_dir)?; + build_deps_dir(logger, &toolchain_dir, &dep_host_pkgars)?; + } + } } else { log_to_pty!(logger, "DEBUG: using cached build"); // stop early otherwise we'll end up rebuilding