From a83cb9740e46c8927f63ec0a454764e327c5408a Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Tue, 25 Jan 2022 22:47:03 +0300 Subject: [PATCH] [Gradle, JS] Correct order of libraries --- .../gradle/targets/js/ir/KotlinJsIrLink.kt | 45 ++++++++++--------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt index 17df0036aef..d47add81bab 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt @@ -248,25 +248,17 @@ internal class CacheBuilder( ): List { val allCacheDirectories = mutableListOf() - val visitedDependenciesForCache = mutableSetOf() + val visitedDependenciesForCache = mutableSetOf() compileClasspath.resolvedConfiguration.firstLevelModuleDependencies .forEach { dependency -> ensureDependencyCached( dependency - ) - if (dependency !in visitedDependenciesForCache) { - (listOf(dependency) + getAllDependencies(dependency)) - .filter { it !in visitedDependenciesForCache } - .forEach { dependencyForCache -> - visitedDependenciesForCache.add(dependencyForCache) - dependencyForCache.moduleArtifacts - .map { - getCacheDirectory(rootCacheDirectory, dependencyForCache, it, { libraryFilter(it.file) }) - } - .filter { it.exists() } - .forEach { allCacheDirectories.add(it) } - } + ).forEach { + if (it !in visitedDependenciesForCache) { + visitedDependenciesForCache.add(it) + allCacheDirectories.add(it) + } } } @@ -289,24 +281,31 @@ internal class CacheBuilder( private fun ensureDependencyCached( dependency: ResolvedDependency - ) { - if (dependency in visitedDependencies) return + ): List { + if (dependency in visitedDependencies) { + return dependency.moduleArtifacts + .filter { libraryFilter(it.file) } + .map { + getCacheDirectory(rootCacheDirectory, dependency, it, { libraryFilter(it.file) }) + } + } visitedDependencies.add(dependency) - dependency.children - .forEach { ensureDependencyCached(it) } + val depCacheDirs = dependency.children + .flatMap { ensureDependencyCached(it) } + .distinct() val artifactsToAddToCache = dependency.moduleArtifacts .filter { libraryFilter(it.file) } - if (artifactsToAddToCache.isEmpty()) return + if (artifactsToAddToCache.isEmpty()) return depCacheDirs val dependenciesCacheDirectories = getDependenciesCacheDirectories( rootCacheDirectory, dependency, libraryFilter = { libraryFilter(it.file) }, considerArtifact = true - ) ?: return + ) ?: return depCacheDirs val nameMap: MutableMap = mutableMapOf() val depsMap: MutableMap> = mutableMapOf() @@ -348,8 +347,11 @@ internal class CacheBuilder( newOrderArtifactsToAddToCache = artifactsToAddToCache.toMutableList() } + val additionalCacheDirs = mutableListOf() for (library in newOrderArtifactsToAddToCache) { - val cacheDirectory = getCacheDirectory(rootCacheDirectory, dependency, library, { libraryFilter(it.file) }) + val cacheDirectory = getCacheDirectory(rootCacheDirectory, dependency, library, { libraryFilter(it.file) }).also { + additionalCacheDirs.add(it) + } cacheDirectory.mkdirs() cacheMap[library] = cacheDirectory val additionalDependencies = depsMap[library] ?: emptyList() @@ -365,6 +367,7 @@ internal class CacheBuilder( dependenciesCacheDirectories + additionalCacheDirectories ) } + return depCacheDirs + additionalCacheDirs } fun runCompiler(