diff --git a/libraries/commonConfiguration.gradle b/libraries/commonConfiguration.gradle index 82cc2de8d54..c556b8485d6 100644 --- a/libraries/commonConfiguration.gradle +++ b/libraries/commonConfiguration.gradle @@ -90,13 +90,10 @@ ext.manifestAttributes = { Manifest manifest, Project project, String component 'Kotlin-Runtime-Component': component, 'Kotlin-Version': project.kotlinLanguageVersion } - // TODO: enable as soon as this doesn't cause D8/DX to crash - /* if (multiRelease) { attributes \ 'Multi-Release': 'true' } - */ } } diff --git a/libraries/kotlin.test/jvm/build.gradle b/libraries/kotlin.test/jvm/build.gradle index 28859728813..6fb91ece43d 100644 --- a/libraries/kotlin.test/jvm/build.gradle +++ b/libraries/kotlin.test/jvm/build.gradle @@ -25,14 +25,24 @@ dependencies { archivesBaseName = 'kotlin-test' jar { - manifestAttributes(manifest, project, 'Test', true) + manifestAttributes(manifest, project, 'Test' /*true*/) // TODO: enable as soon as this doesn't cause D8/DX to crash // from sourceSets.java9.output } +task modularJar(type: Jar) { + dependsOn(jar) + manifestAttributes(manifest, project, 'Test', true) + classifier = 'modular' + + from zipTree(jar.outputs.files.singleFile) + from sourceSets.java9.output +} + artifacts { archives sourcesJar archives javadocJar + archives modularJar } dist { diff --git a/libraries/reflect/api/build.gradle b/libraries/reflect/api/build.gradle index 519942bd4d8..805f1d8704e 100644 --- a/libraries/reflect/api/build.gradle +++ b/libraries/reflect/api/build.gradle @@ -44,8 +44,7 @@ jar { task java9Jar(type: Jar) { classifier = "java9" - // TODO: enable as soon as this doesn't cause D8/DX to crash - // from sourceSets.java9.output + from sourceSets.java9.output } artifacts { diff --git a/libraries/reflect/build.gradle.kts b/libraries/reflect/build.gradle.kts index dfe77833f8b..ffb08150342 100644 --- a/libraries/reflect/build.gradle.kts +++ b/libraries/reflect/build.gradle.kts @@ -109,7 +109,7 @@ class KotlinModuleShadowTransformer(private val logger: Logger) : Transformer { val reflectShadowJar by task { classifier = "shadow" version = null - callGroovy("manifestAttributes", manifest, project, "Main", true) + callGroovy("manifestAttributes", manifest, project, "Main" /*true*/) from(project(":core:descriptors.jvm").mainSourceSet.resources) { include("META-INF/services/**") @@ -191,6 +191,16 @@ val sourcesJar = sourcesJar(sourceSet = null) { val result by task { dependsOn(proguard) from(zipTree(file(proguardOutput))) +// from(zipTree(reflectShadowJar.archivePath)) { +// include("META-INF/versions/**") +// } + callGroovy("manifestAttributes", manifest, project, "Main" /*true*/) +} + +val modularJar by task { + dependsOn(proguard) + classifier = "modular" + from(zipTree(file(proguardOutput))) from(zipTree(reflectShadowJar.archivePath)) { include("META-INF/versions/**") } @@ -208,12 +218,13 @@ artifacts { val artifactJar = mapOf( "file" to result.outputs.files.single(), "builtBy" to result, - "name" to property("archivesBaseName") + "name" to base.archivesBaseName ) add(mainJar.name, artifactJar) add("runtime", artifactJar) add("archives", artifactJar) + add("archives", modularJar) } javadocJar() diff --git a/libraries/stdlib/jdk7/build.gradle b/libraries/stdlib/jdk7/build.gradle index 36f4ff3f8f7..2ee4d3caeba 100644 --- a/libraries/stdlib/jdk7/build.gradle +++ b/libraries/stdlib/jdk7/build.gradle @@ -41,14 +41,25 @@ sourceSets { } jar { - manifestAttributes(manifest, project, 'Main', true) + manifestAttributes(manifest, project, 'Main' /*true*/) // TODO: enable as soon as this doesn't cause D8/DX to crash // from sourceSets.java9.output } +task modularJar(type: Jar) { + dependsOn(jar) + manifestAttributes(manifest, project, 'Main', true) + classifier = 'modular' + + from zipTree(jar.outputs.files.singleFile) + from sourceSets.java9.output +} + + artifacts { archives sourcesJar archives javadocJar + archives modularJar } dist { diff --git a/libraries/stdlib/jdk7/java9/module-info.java b/libraries/stdlib/jdk7/java9/module-info.java index b45c36549c1..09f7e793fa5 100644 --- a/libraries/stdlib/jdk7/java9/module-info.java +++ b/libraries/stdlib/jdk7/java9/module-info.java @@ -2,4 +2,7 @@ module kotlin.stdlib.jdk7 { requires transitive kotlin.stdlib; exports kotlin.jdk7; + + exports kotlin.internal.jdk7 to kotlin.stdlib.jdk8; + opens kotlin.internal.jdk7 to kotlin.stdlib; } diff --git a/libraries/stdlib/jdk8/build.gradle b/libraries/stdlib/jdk8/build.gradle index bf2d832d795..869571c2d41 100644 --- a/libraries/stdlib/jdk8/build.gradle +++ b/libraries/stdlib/jdk8/build.gradle @@ -44,14 +44,25 @@ sourceSets { } jar { - manifestAttributes(manifest, project, 'Main', true) + manifestAttributes(manifest, project, 'Main' /*true*/) // TODO: enable as soon as this doesn't cause D8/DX to crash // from sourceSets.java9.output } +task modularJar(type: Jar) { + dependsOn(jar) + manifestAttributes(manifest, project, 'Main', true) + classifier = 'modular' + + from zipTree(jar.outputs.files.singleFile) + from sourceSets.java9.output +} + + artifacts { archives sourcesJar archives javadocJar + archives modularJar } dist { diff --git a/libraries/stdlib/jdk8/java9/module-info.java b/libraries/stdlib/jdk8/java9/module-info.java index 6aea62c686f..d92be8be0ef 100644 --- a/libraries/stdlib/jdk8/java9/module-info.java +++ b/libraries/stdlib/jdk8/java9/module-info.java @@ -1,7 +1,10 @@ module kotlin.stdlib.jdk8 { requires transitive kotlin.stdlib; + requires kotlin.stdlib.jdk7; exports kotlin.collections.jdk8; exports kotlin.streams.jdk8; exports kotlin.text.jdk8; + + opens kotlin.internal.jdk8 to kotlin.stdlib; } diff --git a/libraries/stdlib/jvm/build.gradle b/libraries/stdlib/jvm/build.gradle index 6e33e78da3e..e19e347fcdd 100644 --- a/libraries/stdlib/jvm/build.gradle +++ b/libraries/stdlib/jvm/build.gradle @@ -73,7 +73,7 @@ dependencies { } jar { - manifestAttributes(manifest, project, 'Main', true) + manifestAttributes(manifest, project, 'Main' /*true*/) from("${rootDir}/dist/builtins") from sourceSets.experimental.output from sourceSets.coroutines.output @@ -85,14 +85,14 @@ jar { task coroutinesJar(type: Jar) { version = null classifier = 'coroutines' - manifestAttributes(manifest, project, 'Main', true) + manifestAttributes(manifest, project, 'Main') project.configure(manifest) { attributes 'Kotlin-Version': '1.3' } } task unsignedJar(type: Jar) { version = null classifier = 'unsigned' - manifestAttributes(manifest, project, 'Main', true) + manifestAttributes(manifest, project, 'Main') project.configure(manifest) { attributes 'Kotlin-Version': '1.3' } } @@ -122,9 +122,19 @@ task distMavenSources(type: Copy) { rename "-${java.util.regex.Pattern.quote(version)}", '' } +task modularJar(type: Jar) { + dependsOn(jar) + manifestAttributes(manifest, project, 'Main', true) + classifier = 'modular' + + from zipTree(jar.outputs.files.singleFile) + from sourceSets.java9.output +} + artifacts { archives sourcesJar archives javadocJar + archives modularJar } dist { @@ -189,7 +199,7 @@ compileExperimentalKotlin { } } -compileJava9Sources(project, 'kotlin.stdlib') +compileJava9Sources(project, 'kotlin.stdlib', [sourceSets.main.output, sourceSets.coroutines.output]) compileCoroutinesKotlin { kotlinOptions { diff --git a/libraries/stdlib/jvm/java9/module-info.java b/libraries/stdlib/jvm/java9/module-info.java index b816c55b57c..db2fa9e9ad3 100644 --- a/libraries/stdlib/jvm/java9/module-info.java +++ b/libraries/stdlib/jvm/java9/module-info.java @@ -4,33 +4,39 @@ module kotlin.stdlib { exports kotlin.collections; exports kotlin.comparisons; exports kotlin.concurrent; + exports kotlin.contracts; + exports kotlin.coroutines; + exports kotlin.coroutines.intrinsics; + exports kotlin.coroutines.jvm.internal; exports kotlin.io; exports kotlin.jvm; exports kotlin.jvm.functions; exports kotlin.math; exports kotlin.properties; + exports kotlin.random; exports kotlin.ranges; exports kotlin.reflect; exports kotlin.sequences; exports kotlin.system; exports kotlin.text; - exports kotlin.coroutines.experimental; - exports kotlin.coroutines.experimental.intrinsics; - exports kotlin.coroutines.experimental.jvm.internal; + // do not export experimental coroutines packages + //exports kotlin.coroutines.experimental; + //exports kotlin.coroutines.experimental.intrinsics; + //exports kotlin.coroutines.experimental.jvm.internal; + //exports kotlin.coroutines.experimental.migration; + exports kotlin.experimental; exports kotlin.internal; exports kotlin.jvm.internal; exports kotlin.jvm.internal.markers; - // TODO? - // exports org.jetbrains.annotations; - // Open packages with .kotlin_builtins files to kotlin-reflect, to allow reflection to load built-in declarations there opens kotlin to kotlin.reflect; opens kotlin.annotation to kotlin.reflect; opens kotlin.collections to kotlin.reflect; + opens kotlin.coroutines to kotlin.reflect; opens kotlin.internal to kotlin.reflect; opens kotlin.ranges to kotlin.reflect; opens kotlin.reflect to kotlin.reflect;