Skip to content

Commit de9bc74

Browse files
ankddevlpil
authored andcommitted
clean for all targets and modes and simplify code
1 parent 763c40c commit de9bc74

1 file changed

Lines changed: 17 additions & 12 deletions

File tree

compiler-cli/src/dependencies.rs

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -299,18 +299,23 @@ pub fn cleanup<Telem: Telemetry>(paths: &ProjectPaths, telemetry: Telem) -> Resu
299299
let changes = PackageChanges::between_manifests(&old_manifest, &manifest);
300300
telemetry.resolved_package_versions(&changes);
301301

302-
// Invalidate build caches after removing package
303-
let target = config.target;
304-
let name = config.name.clone();
305-
306-
// We need to clean build directory for the top level package for both dev
307-
// and prod modes
308-
for mode in [Mode::Dev, Mode::Prod] {
309-
let lock = BuildLock::new_target(paths, mode, target)?;
310-
let _guard = lock.lock(&telemetry)?;
311-
312-
let build_directory_path = paths.build_directory_for_package(mode, target, &name);
313-
fs::delete_directory(build_directory_path.as_ref())?;
302+
// Cleanup build cache of the root package if there are some changes.
303+
// Without this, if a removed dependency is still used, teh build will
304+
// succeed, resulting in runtime crash due to missing files.
305+
if changes.any_changes() {
306+
tracing::debug!("cleaning_root_package_build_cache");
307+
for mode in Mode::iter() {
308+
for target in Target::iter() {
309+
let lock = BuildLock::new_target(paths, mode, target)?;
310+
let _guard = lock.lock(&telemetry)?;
311+
312+
let build_directory_path =
313+
paths.build_directory_for_package(mode, target, &config.name);
314+
if build_directory_path.exists() {
315+
fs::delete_directory(build_directory_path.as_ref())?;
316+
}
317+
}
318+
}
314319
}
315320

316321
Ok(manifest)

0 commit comments

Comments
 (0)