[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.DomainObjectSet
|
||||||
import org.gradle.api.Task
|
import org.gradle.api.Task
|
||||||
import org.gradle.api.file.Directory
|
import org.gradle.api.file.Directory
|
||||||
import org.gradle.api.file.DirectoryProperty
|
|
||||||
import org.gradle.api.provider.Property
|
import org.gradle.api.provider.Property
|
||||||
import org.gradle.api.provider.Provider
|
import org.gradle.api.provider.Provider
|
||||||
import org.gradle.api.tasks.Copy
|
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.KotlinWebpackConfig.Mode
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackDevtool
|
import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackDevtool
|
||||||
import org.jetbrains.kotlin.gradle.tasks.dependsOn
|
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.archivesName
|
||||||
import org.jetbrains.kotlin.gradle.utils.doNotTrackStateCompat
|
import org.jetbrains.kotlin.gradle.utils.doNotTrackStateCompat
|
||||||
import org.jetbrains.kotlin.gradle.utils.relativeOrAbsolute
|
import org.jetbrains.kotlin.gradle.utils.relativeOrAbsolute
|
||||||
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
|
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
|
||||||
import java.io.File
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
abstract class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
|
abstract class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
|
||||||
@@ -234,12 +231,11 @@ abstract class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
|
|||||||
|
|
||||||
if (binary.compilation.platformType == KotlinPlatformType.wasm) {
|
if (binary.compilation.platformType == KotlinPlatformType.wasm) {
|
||||||
copy.from(
|
copy.from(
|
||||||
binary.linkSyncTask.flatMap { linkSyncTask ->
|
binary.linkSyncTask.zip(binary.linkTask) { linkSyncTask, linkTask ->
|
||||||
linkSyncTask.destinationDirectory.map { destDir ->
|
val moduleNameProvider = linkTask.compilerOptions.moduleName
|
||||||
binary.linkTask.map { linkTask ->
|
linkSyncTask.destinationDirectory.zip(moduleNameProvider) { destDir, moduleName ->
|
||||||
linkTask.compilerOptions.moduleName.map {
|
moduleName.map {
|
||||||
destDir.resolve("$it.wasm")
|
destDir.resolve("$it.wasm")
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user