From ae021e21db428a870567c1c8f9b667a0233441af Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Wed, 25 Mar 2020 18:12:50 +0300 Subject: [PATCH] [Gradle, JS] GradleNodeModuleBuilder use files instead of artifacts #KT-32466 fixed #KT-36784 fixed #KT-36864 fixed --- .../gradle/targets/js/npm/AbstractNodeModulesCache.kt | 9 ++++----- .../gradle/targets/js/npm/GradleNodeModuleBuilder.kt | 6 ++---- .../gradle/targets/js/npm/GradleNodeModulesCache.kt | 5 ++--- .../js/npm/resolver/KotlinCompilationNpmResolver.kt | 2 +- 4 files changed, 9 insertions(+), 13 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/AbstractNodeModulesCache.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/AbstractNodeModulesCache.kt index ceff3b302a2..cb82b697aa1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/AbstractNodeModulesCache.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/AbstractNodeModulesCache.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.gradle.targets.js.npm import org.gradle.api.Project -import org.gradle.api.artifacts.ResolvedArtifact import org.gradle.api.artifacts.ResolvedDependency import org.jetbrains.kotlin.gradle.internal.ProcessedFilesCache import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension @@ -27,16 +26,16 @@ internal abstract class AbstractNodeModulesCache(val nodeJs: NodeJsRootExtension @Synchronized fun get( dependency: ResolvedDependency, - artifact: ResolvedArtifact - ): GradleNodeModule? = cache.getOrCompute(artifact.file) { - buildImportedPackage(dependency, artifact) + file: File + ): GradleNodeModule? = cache.getOrCompute(file) { + buildImportedPackage(dependency, file) }?.let { GradleNodeModule(it) } abstract fun buildImportedPackage( dependency: ResolvedDependency, - artifact: ResolvedArtifact + file: File ): File? @Synchronized diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModuleBuilder.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModuleBuilder.kt index aa7012b8851..bb925b86482 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModuleBuilder.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModuleBuilder.kt @@ -8,7 +8,6 @@ package org.jetbrains.kotlin.gradle.targets.js.npm import com.google.gson.Gson import com.google.gson.GsonBuilder import org.gradle.api.Project -import org.gradle.api.artifacts.ResolvedArtifact import org.gradle.api.artifacts.ResolvedDependency import org.jetbrains.kotlin.gradle.targets.js.ir.KLIB_TYPE import java.io.File @@ -19,15 +18,14 @@ import java.io.File internal class GradleNodeModuleBuilder( val project: Project, val dependency: ResolvedDependency, - val artifacts: Collection, + val srcFiles: Collection, val cache: GradleNodeModulesCache ) { var srcPackageJsonFile: File? = null val files = mutableListOf() fun visitArtifacts() { - artifacts.forEach { artifact -> - val srcFile = artifact.file + srcFiles.forEach { srcFile -> when { isKotlinJsRuntimeFile(srcFile) -> files.add(srcFile) srcFile.isCompatibleArchive -> project.zipTree(srcFile).forEach { innerFile -> diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModulesCache.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModulesCache.kt index 122316ac02a..6a792af4dae 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModulesCache.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModulesCache.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.gradle.targets.js.npm -import org.gradle.api.artifacts.ResolvedArtifact import org.gradle.api.artifacts.ResolvedDependency import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension import java.io.File @@ -16,9 +15,9 @@ import java.io.File internal class GradleNodeModulesCache(nodeJs: NodeJsRootExtension) : AbstractNodeModulesCache(nodeJs) { override fun buildImportedPackage( dependency: ResolvedDependency, - artifact: ResolvedArtifact + file: File ): File? { - val module = GradleNodeModuleBuilder(project, dependency, listOf(artifact), this) + val module = GradleNodeModuleBuilder(project, dependency, listOf(file), this) module.visitArtifacts() return module.rebuild() } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt index a114ebd4515..e6d1721bee5 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt @@ -250,7 +250,7 @@ internal class KotlinCompilationNpmResolver( ?: error("Unresolved dependent npm package: ${this@KotlinCompilationNpmResolver} -> $it") } val importedExternalGradleDependencies = externalGradleDependencies.mapNotNull { - resolver.gradleNodeModules.get(it.dependency, it.artifact) + resolver.gradleNodeModules.get(it.dependency, it.artifact.file) } val packageJson = PackageJson(