[Gradle, Wasm] Compatible wasm distribution task with configuration cache

^KT-64851 fixed
This commit is contained in:
Ilya Goncharov
2024-01-24 11:55:33 +00:00
committed by Space Team
parent f502edd1de
commit 9a74a5fcdd
4 changed files with 42 additions and 9 deletions
@@ -51,4 +51,17 @@ class WasmConfigurationCacheIT : KGPBaseTest() {
}
}
}
@DisplayName("Browser case works correctly with configuration cache")
@GradleTest
@GradleTestVersions(minVersion = TestVersions.Gradle.G_7_6)
fun testBrowser(gradleVersion: GradleVersion) {
project("wasm-browser-simple-project", gradleVersion) {
assertSimpleConfigurationCacheScenarioWorks(
"assemble",
buildOptions = defaultBuildOptions,
executedTaskNames = listOf(":compileKotlinWasmJs", ":wasmJsBrowserDistribution")
)
}
}
}
@@ -0,0 +1,16 @@
plugins {
id("org.jetbrains.kotlin.multiplatform")
}
repositories {
mavenLocal()
mavenCentral()
}
kotlin {
wasmJs {
binaries.executable()
browser {
}
}
}
@@ -0,0 +1,8 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
fun main() {
println("Hello, world")
}
@@ -9,7 +9,6 @@ import org.gradle.api.Action
import org.gradle.api.DomainObjectSet
import org.gradle.api.Task
import org.gradle.api.file.Directory
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.provider.Property
import org.gradle.api.provider.Provider
import org.gradle.api.tasks.Copy
@@ -30,12 +29,10 @@ import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig.Mode
import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackDevtool
import org.jetbrains.kotlin.gradle.tasks.dependsOn
import org.jetbrains.kotlin.gradle.utils.*
import org.jetbrains.kotlin.gradle.utils.archivesName
import org.jetbrains.kotlin.gradle.utils.doNotTrackStateCompat
import org.jetbrains.kotlin.gradle.utils.relativeOrAbsolute
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
import java.io.File
import javax.inject.Inject
abstract class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
@@ -234,12 +231,11 @@ abstract class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
if (binary.compilation.platformType == KotlinPlatformType.wasm) {
copy.from(
binary.linkSyncTask.flatMap { linkSyncTask ->
linkSyncTask.destinationDirectory.map { destDir ->
binary.linkTask.map { linkTask ->
linkTask.compilerOptions.moduleName.map {
destDir.resolve("$it.wasm")
}
binary.linkSyncTask.zip(binary.linkTask) { linkSyncTask, linkTask ->
val moduleNameProvider = linkTask.compilerOptions.moduleName
linkSyncTask.destinationDirectory.zip(moduleNameProvider) { destDir, moduleName ->
moduleName.map {
destDir.resolve("$it.wasm")
}
}
}