[JS IR] Build hybrid versions of stdlib and kotlin.test

IR version of libraries are no published by default inside pre-IR JARs
This commit is contained in:
Svyatoslav Kuzmich
2019-10-17 14:14:07 +03:00
parent d872b27663
commit b9f88350dd
6 changed files with 34 additions and 91 deletions
-70
View File
@@ -1,70 +0,0 @@
description = 'Kotlin Test for JS IR'
apply plugin: 'kotlin-platform-js'
dependencies {
expectedBy project(':kotlin-test:kotlin-test-common')
expectedBy project(':kotlin-test:kotlin-test-annotations-common')
compile project(':kotlin-stdlib-js-ir')
}
def jsCommonDir = "${buildDir}/common-js-sources"
task prepareCommonJsSources(type: Sync) {
from "${projectDir}/../js/src/"
into jsCommonDir
}
compileKotlin2Js {
dependsOn prepareCommonJsSources
kotlinOptions {
moduleKind = "umd"
freeCompilerArgs = [
"-Xir",
"-Xir-produce-only=klib",
"-Xallow-kotlin-package",
"-Xuse-experimental=kotlin.contracts.ExperimentalContracts",
]
}
}
sourceSets {
main {
kotlin {
srcDir jsCommonDir
}
}
}
compileTestKotlin2Js {
kotlinOptions.freeCompilerArgs = [
"-Xir",
"-Xir-produce-only=js",
"-Xallow-kotlin-package",
]
kotlinOptions {
metaInfo = false
moduleKind = "umd"
}
}
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from(sourceSets.main.allSource)
}
archivesBaseName = 'kotlin-test-js-ir'
jar {
manifestAttributes(manifest, project, 'Test')
}
artifacts {
archives sourcesJar
}
if (project.findProperty("kotlin.stdlib.js.ir.publish")?.toBoolean() == true) {
configurePublishing(project)
}
+5 -1
View File
@@ -16,7 +16,11 @@ dependencies {
}
compileKotlin2Js {
kotlinOptions.freeCompilerArgs = ["-Xallow-kotlin-package", "-Xuse-experimental=kotlin.contracts.ExperimentalContracts"]
kotlinOptions.freeCompilerArgs = [
"-Xallow-kotlin-package",
"-Xuse-experimental=kotlin.contracts.ExperimentalContracts",
"-Xir-produce-klib-dir"
]
kotlinOptions {
moduleKind = "umd"
outputFile = "${buildDir}/classes/main/kotlin-test.js"
+6 -12
View File
@@ -92,7 +92,7 @@ configurations {
dependencies {
expectedBy project(":kotlin-stdlib-common")
commonSources project(path: ":kotlin-stdlib-common", configuration: "sources")
testCompile project(':kotlin-test:kotlin-test-js-ir')
testCompile project(':kotlin-test:kotlin-test-js')
}
@@ -107,8 +107,8 @@ compileKotlin2Js {
main = "noCall"
verbose = true
freeCompilerArgs += [
"-Xir",
"-Xir-produce-only=klib",
"-Xir-produce-klib-dir",
"-Xir-only",
"-Xallow-kotlin-package",
"-Xallow-result-return-type",
"-Xuse-experimental=kotlin.Experimental",
@@ -120,7 +120,7 @@ compileKotlin2Js {
}
def testOutputFile = "${buildDir}/classes/kotlin/test/kotlin-stdlib-js-ir_test.js"
def kotlinTestTestOutputFile = "${project(':kotlin-test:kotlin-test-js-ir').buildDir}/classes/kotlin/test/kotlin-test-js-ir_test.js"
def kotlinTestTestOutputFile = "${project(':kotlin-test:kotlin-test-js').buildDir}/classes/kotlin/test/kotlin-test-js-ir_test.js"
compileTestKotlin2Js {
kotlinOptions {
@@ -128,8 +128,7 @@ compileTestKotlin2Js {
verbose = true
outputFile = testOutputFile
freeCompilerArgs += [
"-Xir",
"-Xir-produce-only=js",
"-Xir-produce-js",
"-verbose",
"-Xuse-experimental=kotlin.Experimental",
"-Xuse-experimental=kotlin.ExperimentalUnsignedTypes",
@@ -155,11 +154,6 @@ artifacts {
archives sourcesJar
}
if (project.findProperty("kotlin.stdlib.js.ir.publish")?.toBoolean() == true) {
configurePublishing(project)
}
node {
download = true
version = '8.9.4' // The default 6.9.1 has buggy hyperbolic functions implementation
@@ -177,7 +171,7 @@ task installTeamcityReporter(type: NpmTask) {
task runMocha(type: NodeTask) {
dependsOn compileTestKotlin2Js
dependsOn installMocha
dependsOn ':kotlin-test:kotlin-test-js-ir:testClasses'
dependsOn ':kotlin-test:kotlin-test-js:testClasses'
script = file("${buildDir}/node_modules/mocha/bin/mocha")
+22 -3
View File
@@ -14,6 +14,7 @@ configurations {
commonSources
distSources
distJs
distLibrary
}
def builtinsSrcDir = "${buildDir}/builtin-sources"
@@ -283,9 +284,10 @@ jar {
enabled false
}
task mergedJar(type: Jar, dependsOn: compileJs) {
task libraryJarWithoutIr(type: Jar, dependsOn: compileJs) {
classifier = null
manifestAttributes(manifest, project, 'Main')
destinationDirectory = file("$buildDir/lib/dist")
// TODO: Use standard implementation title after js stdlib detector becomes more flexible (KT-17655)
Properties properties = new Properties()
@@ -307,6 +309,22 @@ task mergedJar(type: Jar, dependsOn: compileJs) {
exclude "${experimentalJsModuleName}.*"
}
task libraryJarWithIr(type: Zip, dependsOn: libraryJarWithoutIr) {
def irStdlibJar = tasks.getByPath(":kotlin-stdlib-js-ir:jar")
dependsOn(irStdlibJar)
archiveExtension = "jar"
destinationDirectory = file("$buildDir/libs")
duplicatesStrategy DuplicatesStrategy.FAIL
from zipTree(libraryJarWithoutIr.archiveFile)
from(zipTree(irStdlibJar.archiveFile)) {
exclude 'META-INF/*'
}
}
task sourcesJar(type: Jar, dependsOn: compileJs) {
classifier = 'sources'
includeEmptyDirs false
@@ -352,11 +370,12 @@ task distSourcesJar(type: Jar) {
artifacts {
runtime mergedJar
archives mergedJar
runtime libraryJarWithIr
archives libraryJarWithIr
archives sourcesJar
sources sourcesJar
distSources distSourcesJar
distLibrary libraryJarWithoutIr
compileJs.outputs.files.forEach { artifact ->
distJs(artifact) { builtBy(compileJs) }
+1 -3
View File
@@ -91,7 +91,6 @@ val distLibraryProjects = listOfNotNull(
":kotlin-stdlib-js-ir".takeIf { kotlinBuildProperties.jsIrDist },
":kotlin-source-sections-compiler-plugin",
":kotlin-test:kotlin-test-js",
":kotlin-test:kotlin-test-js-ir".takeIf { kotlinBuildProperties.jsIrDist },
":kotlin-test:kotlin-test-junit",
":kotlin-test:kotlin-test-junit5",
":kotlin-test:kotlin-test-jvm",
@@ -114,7 +113,6 @@ val distSourcesProjects = listOfNotNull(
":kotlin-script-runtime",
":kotlin-stdlib-js-ir".takeIf { kotlinBuildProperties.jsIrDist },
":kotlin-test:kotlin-test-js",
":kotlin-test:kotlin-test-js-ir".takeIf { kotlinBuildProperties.jsIrDist },
":kotlin-test:kotlin-test-junit",
":kotlin-test:kotlin-test-junit5",
":kotlin-test:kotlin-test-jvm",
@@ -149,7 +147,7 @@ dependencies {
libraries(intellijDep()) { includeIntellijCoreJarDependencies(project) { it.startsWith("trove4j") } }
libraries(commonDep("io.ktor", "ktor-network"))
libraries(kotlinStdlib("jdk8"))
libraries(kotlinStdlib("js"))
libraries(kotlinStdlib("js", "distLibrary"))
distLibraryProjects.forEach {
libraries(project(it)) { isTransitive = false }
-2
View File
@@ -274,7 +274,6 @@ if (flags.inJpsBuildIdeaSync) {
":kotlin-stdlib-common",
":kotlin-stdlib",
":kotlin-stdlib-js",
":kotlin-test:kotlin-test-js-ir",
":kotlin-stdlib-js-ir",
":kotlin-stdlib-jdk7",
":kotlin-stdlib-jdk8",
@@ -289,7 +288,6 @@ if (flags.inJpsBuildIdeaSync) {
project(':kotlin-stdlib').projectDir = "$rootDir/libraries/stdlib/jvm" as File
project(':kotlin-stdlib-js').projectDir = "$rootDir/libraries/stdlib/js-v1" as File
project(':kotlin-stdlib-js-ir').projectDir = "$rootDir/libraries/stdlib/js-ir" as File
project(':kotlin-test:kotlin-test-js-ir').projectDir = "$rootDir/libraries/kotlin.test/js-ir" as File
project(':kotlin-stdlib-jdk7').projectDir = "$rootDir/libraries/stdlib/jdk7" as File
project(':kotlin-stdlib-jdk8').projectDir = "$rootDir/libraries/stdlib/jdk8" as File
project(':kotlin-stdlib:samples').projectDir = "$rootDir/libraries/stdlib/samples" as File