[Gradle, Wasm] Compatible wasm distribution task with configuration cache
^KT-64851 fixed
This commit is contained in:
committed by
Space Team
parent
f502edd1de
commit
9a74a5fcdd
+13
@@ -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")
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
plugins {
|
||||
id("org.jetbrains.kotlin.multiplatform")
|
||||
}
|
||||
|
||||
repositories {
|
||||
mavenLocal()
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
kotlin {
|
||||
wasmJs {
|
||||
binaries.executable()
|
||||
browser {
|
||||
}
|
||||
}
|
||||
}
|
||||
+8
@@ -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")
|
||||
}
|
||||
+5
-9
@@ -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")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user