From cad7bf54c1df4ba091a6a00a53308a15aa32e238 Mon Sep 17 00:00:00 2001 From: Vladislav Rassokhin Date: Mon, 11 Mar 2019 10:03:06 +0300 Subject: [PATCH] CompilationPartsUtil should remove old stalled output directories --- .../build/impl/CompilationPartsUtil.groovy | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/CompilationPartsUtil.groovy b/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/CompilationPartsUtil.groovy index 87506cc4cc53..1f5115b81d55 100644 --- a/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/CompilationPartsUtil.groovy +++ b/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/CompilationPartsUtil.groovy @@ -330,6 +330,23 @@ class CompilationPartsUtil { return } } + executor.submit { + // Remove stalled directories not present in metadata + def expectedDirectories = new HashSet(metadata.files.keySet()) + // We need to traverse with depth 2 since first level is [production,test] + def subroots = (new File(classesOutput).listFiles() ?: new File[0]).toList().findAll { it.directory }.collect { it.absoluteFile } + for (File subroot : subroots) { + def modules = subroot.listFiles() + if (modules == null) continue + for (File module : modules) { + def name = "$subroot.name/$module.name".toString() + if (!expectedDirectories.contains(name)) { + messages.info("Removing stalled directory '$name'") + FileUtil.delete(module) + } + } + } + } executor.waitForAllComplete(messages) verifyTime += TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - start) }