[Gradle, Wasm] Standartize binaryen and d8 download instead of download task

^KT-65686 fixed
This commit is contained in:
Ilya Goncharov
2024-02-09 11:18:37 +00:00
committed by Space Team
parent 5bd0bbb159
commit b4e1fa8569
31 changed files with 308 additions and 177 deletions
@@ -19,11 +19,7 @@ class KotlinWasmGradlePluginIT : KGPBaseTest() {
@DisplayName("Check wasi target")
@GradleTest
fun wasiTarget(gradleVersion: GradleVersion) {
project(
"new-mpp-wasm-wasi-test",
gradleVersion,
dependencyManagement = DependencyManagement.DisabledDependencyManagement // requires custom d8 repository during build
) {
project("new-mpp-wasm-wasi-test", gradleVersion) {
buildGradleKts.modify(::transformBuildScriptWithPluginsDsl)
build(":wasmWasiTest") {
@@ -57,15 +53,10 @@ class KotlinWasmGradlePluginIT : KGPBaseTest() {
@DisplayName("Check js target")
@GradleTest
fun jsTarget(gradleVersion: GradleVersion) {
project(
"new-mpp-wasm-test",
gradleVersion,
dependencyManagement = DependencyManagement.DisabledDependencyManagement // requires custom repository for :kotlinNodeJsSetup during build
) {
project("new-mpp-wasm-test", gradleVersion) {
buildGradleKts.modify {
transformBuildScriptWithPluginsDsl(it)
.replace("<JsEngine>", "nodejs")
.replace("<ApplyBinaryen>", "")
}
kotlinSourcesDir("wasmJsTest").resolve("Test.kt").writeText(
@@ -101,10 +92,7 @@ class KotlinWasmGradlePluginIT : KGPBaseTest() {
@DisplayName("Check wasi target run")
@GradleTest
fun wasiRun(gradleVersion: GradleVersion) {
project(
"new-mpp-wasm-wasi-test", gradleVersion,
dependencyManagement = DependencyManagement.DisabledDependencyManagement // requires d8 custom repository during build
) {
project("new-mpp-wasm-wasi-test", gradleVersion) {
buildGradleKts.modify(::transformBuildScriptWithPluginsDsl)
build(":wasmWasiNodeRun") {
@@ -1669,22 +1669,18 @@ open class NewMultiplatformIT : BaseGradleIT() {
}
}
private fun testWasmTest(engine: String, name: String, useBinaryen: Boolean) = with(
private fun testWasmTest(engine: String, name: String) = with(
Project("new-mpp-wasm-test", gradleVersionRequirement = GradleVersionRequired.AtLeast(TestVersions.Gradle.G_7_0))
) {
setupWorkingDir()
gradleBuildScript().modify {
transformBuildScriptWithPluginsDsl(it)
.replace("<JsEngine>", engine)
.replace("<ApplyBinaryen>", if (useBinaryen) "applyBinaryen()" else "")
}
build(":wasmJs${name}Test") {
assertTasksExecuted(":compileKotlinWasmJs")
if (useBinaryen) {
assertTasksExecuted(":compileTestDevelopmentExecutableKotlinWasmJsOptimize")
} else {
assertTasksNotExecuted(":compileTestDevelopmentExecutableKotlinWasmJsOptimize")
}
assertTasksNotExecuted(":compileTestDevelopmentExecutableKotlinWasmJsOptimize")
assertTasksFailed(":wasmJs${name}Test")
assertTestResults(
"testProject/new-mpp-wasm-test/TEST-${engine}.xml",
@@ -1694,16 +1690,10 @@ open class NewMultiplatformIT : BaseGradleIT() {
}
@Test
fun testWasmNodeTest() = testWasmTest("nodejs", "Node", useBinaryen = false)
fun testWasmNodeTest() = testWasmTest("nodejs", "Node")
@Test
fun testWasmWithBinaryenNodeTest() = testWasmTest("nodejs", "Node", useBinaryen = true)
@Test
fun testWasmD8Test() = testWasmTest("d8", "D8", useBinaryen = false)
@Test
fun testWasmWithBinaryenD8Test() = testWasmTest("d8", "D8", useBinaryen = true)
fun testWasmD8Test() = testWasmTest("d8", "D8")
@Test
fun testResolveMetadataCompileClasspathKt50925() {
@@ -118,6 +118,45 @@ internal fun getGroovyDependencyManagementBlock(
includeModule("org.nodejs", "node")
}
}
ivy {
url = uri("https://nodejs.org/download/v8-canary")
patternLayout {
artifact("v[revision]/[artifact](-v[revision]-[classifier]).[ext]")
}
metadataSources {
artifact()
}
content {
includeModule("org.nodejs", "node")
}
}
ivy {
url = uri("https://github.com/WebAssembly/binaryen/releases/download")
patternLayout {
artifact("version_[revision]/binaryen-version_[revision]-[classifier].[ext]")
}
metadataSources {
artifact()
}
content {
includeModule("com.github.webassembly", "binaryen")
}
}
ivy {
url = uri("https://storage.googleapis.com/chromium-v8/official/canary")
patternLayout {
artifact("[artifact]-[revision].[ext]")
}
metadataSources {
artifact()
}
content {
includeModule("google.d8", "v8")
}
}
${additionalDependencyRepositories.map { repo -> "maven{ url = \"$repo\" }" }.joinToString("\n")}
${localRepo?.absolutePathString()?.let { repo -> "maven{ url = \"${repo.replace("\\", "\\\\")}\" }" } ?: ""}
}
@@ -232,6 +271,45 @@ internal fun getKotlinDependencyManagementBlock(
includeModule("org.nodejs", "node")
}
}
ivy {
url = uri("https://nodejs.org/download/v8-canary")
patternLayout {
artifact("v[revision]/[artifact](-v[revision]-[classifier]).[ext]")
}
metadataSources {
artifact()
}
content {
includeModule("org.nodejs", "node")
}
}
ivy {
url = uri("https://github.com/WebAssembly/binaryen/releases/download")
patternLayout {
artifact("version_[revision]/binaryen-version_[revision]-[classifier].[ext]")
}
metadataSources {
artifact()
}
content {
includeModule("com.github.webassembly", "binaryen")
}
}
ivy {
url = uri("https://storage.googleapis.com/chromium-v8/official/canary")
patternLayout {
artifact("[artifact]-[revision].[ext]")
}
metadataSources {
artifact()
}
content {
includeModule("google.d8", "v8")
}
}
maven {
url = uri("https://packages.jetbrains.team/maven/p/ij/intellij-dependencies/")
}
@@ -39,7 +39,7 @@ rootProject.plugins.withType(org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJ
tasks.register("runWebpack", Exec) {
dependsOn(tasks.named('browserProductionWebpack'))
executable(kotlinNodeJs.requireConfigured().nodeExecutable)
executable(kotlinNodeJs.requireConfigured().executable)
workingDir = "${rootProject.buildDir}/js/packages/kotlin-js-dce-mainProject"
args = ["../../node_modules/webpack/bin/webpack.js"]
@@ -39,7 +39,6 @@ kotlin {
}
}
}
<ApplyBinaryen>
}
sourceSets {