[Gradle, JS] Correct order of libraries
This commit is contained in:
+24
-21
@@ -248,25 +248,17 @@ internal class CacheBuilder(
|
|||||||
): List<File> {
|
): List<File> {
|
||||||
|
|
||||||
val allCacheDirectories = mutableListOf<File>()
|
val allCacheDirectories = mutableListOf<File>()
|
||||||
val visitedDependenciesForCache = mutableSetOf<ResolvedDependency>()
|
val visitedDependenciesForCache = mutableSetOf<File>()
|
||||||
|
|
||||||
compileClasspath.resolvedConfiguration.firstLevelModuleDependencies
|
compileClasspath.resolvedConfiguration.firstLevelModuleDependencies
|
||||||
.forEach { dependency ->
|
.forEach { dependency ->
|
||||||
ensureDependencyCached(
|
ensureDependencyCached(
|
||||||
dependency
|
dependency
|
||||||
)
|
).forEach {
|
||||||
if (dependency !in visitedDependenciesForCache) {
|
if (it !in visitedDependenciesForCache) {
|
||||||
(listOf(dependency) + getAllDependencies(dependency))
|
visitedDependenciesForCache.add(it)
|
||||||
.filter { it !in visitedDependenciesForCache }
|
allCacheDirectories.add(it)
|
||||||
.forEach { dependencyForCache ->
|
}
|
||||||
visitedDependenciesForCache.add(dependencyForCache)
|
|
||||||
dependencyForCache.moduleArtifacts
|
|
||||||
.map {
|
|
||||||
getCacheDirectory(rootCacheDirectory, dependencyForCache, it, { libraryFilter(it.file) })
|
|
||||||
}
|
|
||||||
.filter { it.exists() }
|
|
||||||
.forEach { allCacheDirectories.add(it) }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -289,24 +281,31 @@ internal class CacheBuilder(
|
|||||||
|
|
||||||
private fun ensureDependencyCached(
|
private fun ensureDependencyCached(
|
||||||
dependency: ResolvedDependency
|
dependency: ResolvedDependency
|
||||||
) {
|
): List<File> {
|
||||||
if (dependency in visitedDependencies) return
|
if (dependency in visitedDependencies) {
|
||||||
|
return dependency.moduleArtifacts
|
||||||
|
.filter { libraryFilter(it.file) }
|
||||||
|
.map {
|
||||||
|
getCacheDirectory(rootCacheDirectory, dependency, it, { libraryFilter(it.file) })
|
||||||
|
}
|
||||||
|
}
|
||||||
visitedDependencies.add(dependency)
|
visitedDependencies.add(dependency)
|
||||||
|
|
||||||
dependency.children
|
val depCacheDirs = dependency.children
|
||||||
.forEach { ensureDependencyCached(it) }
|
.flatMap { ensureDependencyCached(it) }
|
||||||
|
.distinct()
|
||||||
|
|
||||||
val artifactsToAddToCache = dependency.moduleArtifacts
|
val artifactsToAddToCache = dependency.moduleArtifacts
|
||||||
.filter { libraryFilter(it.file) }
|
.filter { libraryFilter(it.file) }
|
||||||
|
|
||||||
if (artifactsToAddToCache.isEmpty()) return
|
if (artifactsToAddToCache.isEmpty()) return depCacheDirs
|
||||||
|
|
||||||
val dependenciesCacheDirectories = getDependenciesCacheDirectories(
|
val dependenciesCacheDirectories = getDependenciesCacheDirectories(
|
||||||
rootCacheDirectory,
|
rootCacheDirectory,
|
||||||
dependency,
|
dependency,
|
||||||
libraryFilter = { libraryFilter(it.file) },
|
libraryFilter = { libraryFilter(it.file) },
|
||||||
considerArtifact = true
|
considerArtifact = true
|
||||||
) ?: return
|
) ?: return depCacheDirs
|
||||||
|
|
||||||
val nameMap: MutableMap<String, ResolvedArtifact> = mutableMapOf()
|
val nameMap: MutableMap<String, ResolvedArtifact> = mutableMapOf()
|
||||||
val depsMap: MutableMap<ResolvedArtifact, MutableList<ResolvedArtifact>> = mutableMapOf()
|
val depsMap: MutableMap<ResolvedArtifact, MutableList<ResolvedArtifact>> = mutableMapOf()
|
||||||
@@ -348,8 +347,11 @@ internal class CacheBuilder(
|
|||||||
newOrderArtifactsToAddToCache = artifactsToAddToCache.toMutableList()
|
newOrderArtifactsToAddToCache = artifactsToAddToCache.toMutableList()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val additionalCacheDirs = mutableListOf<File>()
|
||||||
for (library in newOrderArtifactsToAddToCache) {
|
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()
|
cacheDirectory.mkdirs()
|
||||||
cacheMap[library] = cacheDirectory
|
cacheMap[library] = cacheDirectory
|
||||||
val additionalDependencies = depsMap[library] ?: emptyList()
|
val additionalDependencies = depsMap[library] ?: emptyList()
|
||||||
@@ -365,6 +367,7 @@ internal class CacheBuilder(
|
|||||||
dependenciesCacheDirectories + additionalCacheDirectories
|
dependenciesCacheDirectories + additionalCacheDirectories
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
return depCacheDirs + additionalCacheDirs
|
||||||
}
|
}
|
||||||
|
|
||||||
fun runCompiler(
|
fun runCompiler(
|
||||||
|
|||||||
Reference in New Issue
Block a user