diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JSCompilerArguments.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JSCompilerArguments.kt index 4a09169f0ba..76c345a42e7 100644 --- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JSCompilerArguments.kt +++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JSCompilerArguments.kt @@ -252,11 +252,11 @@ class K2JSCompilerArguments : CommonCompilerArguments() { var includes: String? by NullableStringFreezableVar(null) @Argument( - value = "-Xcache-directories", + value = "-Xcache-directory", valueDescription = "", - description = "A path to cache directories" + description = "A path to cache directory" ) - var cacheDirectories: String? by NullableStringFreezableVar(null) + var cacheDirectory: String? by NullableStringFreezableVar(null) @Argument(value = "-Xir-build-cache", description = "Use compiler to build cache") var irBuildCache: Boolean by FreezableVar(false) diff --git a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt index fdba2ce4501..b2c34ad50e5 100644 --- a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt +++ b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt @@ -295,7 +295,7 @@ class K2JsIrCompiler : CLICompiler() { if (arguments.irProduceJs) { messageCollector.report(INFO, "Produce executable: $outputDirPath") - messageCollector.report(INFO, arguments.cacheDirectories ?: "") + messageCollector.report(INFO, "Cache directory: ${arguments.cacheDirectory}") if (icCaches.isNotEmpty()) { val beforeIc2Js = System.currentTimeMillis() @@ -635,14 +635,14 @@ class K2JsIrCompiler : CLICompiler() { configurationJs: CompilerConfiguration, mainCallArguments: List? ): List { - val cacheDirectories = configureLibraries(arguments.cacheDirectories) + val cacheDirectory = arguments.cacheDirectory // TODO: Use JS IR IC infrastructure for WASM? - val icCaches = if (!arguments.wasm && cacheDirectories.isNotEmpty()) { + val icCaches = if (!arguments.wasm && cacheDirectory != null) { messageCollector.report(INFO, "") messageCollector.report(INFO, "Building cache:") - messageCollector.report(INFO, "to: ${outputDir}") - messageCollector.report(INFO, arguments.cacheDirectories ?: "") + messageCollector.report(INFO, "to: $outputDir") + messageCollector.report(INFO, "cache directory: $cacheDirectory") messageCollector.report(INFO, libraries.toString()) val start = System.currentTimeMillis() @@ -650,7 +650,7 @@ class K2JsIrCompiler : CLICompiler() { val cacheUpdater = CacheUpdater( mainModule = arguments.includes!!, allModules = libraries, - cacheDir = cacheDirectories.last(), + cacheDir = cacheDirectory, compilerConfiguration = configurationJs, irFactory = { IrFactoryImplForJsIC(WholeWorldStageController()) }, mainArguments = mainCallArguments, diff --git a/compiler/testData/cli/js/jsExtraHelp.out b/compiler/testData/cli/js/jsExtraHelp.out index 0ad356a3016..7a0ae1623cc 100644 --- a/compiler/testData/cli/js/jsExtraHelp.out +++ b/compiler/testData/cli/js/jsExtraHelp.out @@ -1,6 +1,6 @@ Usage: kotlinc-js where advanced options include: - -Xcache-directories= A path to cache directories + -Xcache-directory= A path to cache directory -Xenable-js-scripting Enable experimental support of .kts files using K/JS (with -Xir only) -Xerror-tolerance-policy Set up error tolerance policy (NONE, SEMANTIC, SYNTAX, ALL) -Xenable-extension-functions-in-externals diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt index 4fe418430b8..504d4833bb4 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt @@ -23,12 +23,8 @@ import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode.DEVELOPMENT import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile -import org.jetbrains.kotlin.gradle.utils.toHexString import org.jetbrains.kotlin.statistics.metrics.BooleanMetrics import org.jetbrains.kotlin.statistics.metrics.StringMetrics -import java.io.File -import java.nio.charset.StandardCharsets -import java.security.MessageDigest import javax.inject.Inject @CacheableTask @@ -120,34 +116,9 @@ abstract class KotlinJsIrLink @Inject constructor( args.includes = entryModule.get().asFile.canonicalPath if (incrementalJsIr && mode == DEVELOPMENT) { - val digest = MessageDigest.getInstance("SHA-256") - args.cacheDirectories = args.libraries?.splitByPathSeparator() - ?.map { - val file = File(it) - val hash = digest.digest(file.normalize().absolutePath.toByteArray(StandardCharsets.UTF_8)).toHexString() - rootCacheDirectory - .resolve(file.nameWithoutExtension) - .resolve(hash) - .also { - it.mkdirs() - } - } - ?.plus(rootCacheDirectory.resolve(entryModule.get().asFile.name)) - ?.let { - if (it.isNotEmpty()) - it.joinToString(File.pathSeparator) - else - null - } + args.cacheDirectory = rootCacheDirectory.also { it.mkdirs() }.absolutePath } } - - private fun String.splitByPathSeparator(): List { - return this.split(File.pathSeparator.toRegex()) - .dropLastWhile { it.isEmpty() } - .toTypedArray() - .filterNot { it.isEmpty() } - } } val KotlinPlatformType.fileExtension @@ -161,4 +132,4 @@ val KotlinPlatformType.fileExtension } else -> error("Only JS and WASM supported for KotlinJsTest") - } \ No newline at end of file + }