From c4a3d56213040ee80811da8626e51cfe2db8e095 Mon Sep 17 00:00:00 2001 From: Anton Lakotka Date: Wed, 5 Feb 2025 10:43:52 +0100 Subject: [PATCH] [Gradle] Remove kotlin metadata compatibility flag ^KT-61817 --- .../kotlin/gradle/HierarchicalMppIT.kt | 45 +++++++--------- .../kotlin/gradle/mpp/MppDiagnosticsIt.kt | 1 - .../expectedOutput.txt | 2 +- .../gradle.properties | 2 - .../my-lib-foo/gradle.properties | 3 +- ...tlinLegacyCompatibilityMetadataArtifact.kt | 53 ------------------- .../artifacts/KotlinMetadataArtifact.kt | 4 -- .../gradle/plugin/PropertiesProvider.kt | 6 --- .../plugin/mpp/KotlinSoftwareComponent.kt | 14 +---- .../kotlin/gradle/plugin/mpp/KotlinUsages.kt | 5 +- ...MppGradlePropertiesMigrationSetupAction.kt | 2 - .../plugin/registerKotlinPluginExtensions.kt | 1 - .../KotlinMetadataTargetConfigurator.kt | 24 ++------- .../tooling/BuildKotlinToolingMetadataTask.kt | 3 +- ...5730CommonMainDependsOnAnotherSourceSet.kt | 47 ---------------- 15 files changed, 27 insertions(+), 185 deletions(-) delete mode 100644 libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/artifacts/KotlinLegacyCompatibilityMetadataArtifact.kt delete mode 100644 libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/KT55730CommonMainDependsOnAnotherSourceSet.kt diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt index 6b6b40fdffc12..3f33830f487d3 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt @@ -45,7 +45,7 @@ open class HierarchicalMppIT : KGPBaseTest() { fun testPublishedModules(gradleVersion: GradleVersion, @TempDir tempDir: Path) { val buildOptions = defaultBuildOptions.copy(logLevel = LogLevel.DEBUG) - publishThirdPartyLib(withGranularMetadata = true, gradleVersion = gradleVersion, localRepoDir = tempDir) + publishThirdPartyLib(gradleVersion = gradleVersion, localRepoDir = tempDir) nativeProject( "my-lib-foo".withPrefix, @@ -85,7 +85,7 @@ open class HierarchicalMppIT : KGPBaseTest() { @DisplayName("Check no sourceSets visible if no variant matched") @BrokenOnMacosTest fun testNoSourceSetsVisibleIfNoVariantMatched(gradleVersion: GradleVersion, @TempDir tempDir: Path) { - publishThirdPartyLib(withGranularMetadata = true, gradleVersion = gradleVersion, localRepoDir = tempDir) + publishThirdPartyLib(gradleVersion = gradleVersion, localRepoDir = tempDir) nativeProject( projectName = "my-lib-foo".withPrefix, @@ -118,7 +118,7 @@ open class HierarchicalMppIT : KGPBaseTest() { @DisplayName("Dependencies in tests should be correct with third-party library") @BrokenOnMacosTest fun testDependenciesInTests(gradleVersion: GradleVersion, @TempDir tempDir: Path) { - publishThirdPartyLib(withGranularMetadata = true, gradleVersion = gradleVersion, localRepoDir = tempDir) { + publishThirdPartyLib(gradleVersion = gradleVersion, localRepoDir = tempDir) { kotlinSourcesDir("jvmMain").copyRecursively(kotlinSourcesDir("linuxX64Main")) buildGradleKts.appendText("\nkotlin.linuxX64()") } @@ -207,7 +207,7 @@ open class HierarchicalMppIT : KGPBaseTest() { @GradleTest @DisplayName("Dependencies in project should be correct with third-party library") fun testProjectDependencies(gradleVersion: GradleVersion, @TempDir tempDir: Path) { - publishThirdPartyLib(withGranularMetadata = true, gradleVersion = gradleVersion, localRepoDir = tempDir) + publishThirdPartyLib(gradleVersion = gradleVersion, localRepoDir = tempDir) with( nativeProject( @@ -231,7 +231,7 @@ open class HierarchicalMppIT : KGPBaseTest() { @BrokenOnMacosTest fun testOnlyCompositeMetadataArtifactsTransformed(gradleVersion: GradleVersion, @TempDir tempDir: Path) { val buildOptions = defaultBuildOptions.copy(logLevel = LogLevel.DEBUG) - publishThirdPartyLib(withGranularMetadata = true, gradleVersion = gradleVersion, localRepoDir = tempDir) + publishThirdPartyLib(gradleVersion = gradleVersion, localRepoDir = tempDir) val regex = """artifact: '(.+)'""".toRegex() fun BuildResult.transformedArtifacts() = output @@ -267,7 +267,7 @@ open class HierarchicalMppIT : KGPBaseTest() { build("publish") { assertEquals( setOf( - "my-lib-foo-metadata-1.0-all.jar", + "my-lib-foo-metadata-1.0.jar", "third-party-lib-metadata-1.0.jar", "kotlin-stdlib-${buildOptions.kotlinVersion}-all.jar", ), @@ -285,8 +285,8 @@ open class HierarchicalMppIT : KGPBaseTest() { testDependencyTransformations { assertEquals( setOf( - "my-lib-foo-metadata-1.0-all.jar", - "my-lib-bar-metadata-1.0-all.jar", + "my-lib-foo-metadata-1.0.jar", + "my-lib-bar-metadata-1.0.jar", "third-party-lib-metadata-1.0.jar", "kotlin-stdlib-${buildOptions.kotlinVersion}-all.jar", "kotlin-test-${buildOptions.kotlinVersion}-all.jar", @@ -303,7 +303,6 @@ open class HierarchicalMppIT : KGPBaseTest() { @Suppress("DEPRECATION") publishThirdPartyLib( projectName = "hierarchical-mpp-with-js-published-modules/third-party-lib", - withGranularMetadata = true, gradleVersion = gradleVersion, localRepoDir = tempDir ) @@ -412,7 +411,6 @@ open class HierarchicalMppIT : KGPBaseTest() { private fun publishThirdPartyLib( projectName: String = "third-party-lib".withPrefix, - withGranularMetadata: Boolean, gradleVersion: GradleVersion, localRepoDir: Path, beforePublishing: TestProject.() -> Unit = { }, @@ -424,12 +422,6 @@ open class HierarchicalMppIT : KGPBaseTest() { buildOptions = defaultBuildOptions.copy(jsOptions = BuildOptions.JsOptions()) ).apply { beforePublishing() - - if (!withGranularMetadata) { - val gradleProperties = projectPath.toFile().resolve("gradle.properties") - gradleProperties.appendText("kotlin.internal.mpp.hierarchicalStructureByDefault=false${System.lineSeparator()}") - gradleProperties.appendText("kotlin.internal.suppressGradlePluginErrors=PreHMPPFlagsError${System.lineSeparator()}") - } build("publish") } @@ -438,7 +430,7 @@ open class HierarchicalMppIT : KGPBaseTest() { ZipFile( localRepoDir.toFile().resolve( - "com/example/foo/my-lib-foo/1.0/my-lib-foo-1.0-all.jar" + "com/example/foo/my-lib-foo/1.0/my-lib-foo-1.0.jar" ) ).use { publishedMetadataJar -> publishedMetadataJar.checkAllEntryNamesArePresent( @@ -493,7 +485,7 @@ open class HierarchicalMppIT : KGPBaseTest() { ZipFile( localRepoDir.toFile().resolve( - "com/example/bar/my-lib-bar/1.0/my-lib-bar-1.0-all.jar" + "com/example/bar/my-lib-bar/1.0/my-lib-bar-1.0.jar" ) ).use { publishedMetadataJar -> publishedMetadataJar.checkAllEntryNamesArePresent( @@ -550,7 +542,7 @@ open class HierarchicalMppIT : KGPBaseTest() { } checkNamesOnCompileClasspath( - "$taskPrefix:compileKotlinMetadata", + "$taskPrefix:compileCommonMainKotlinMetadata", shouldInclude = listOf( "my-lib-foo" to "main" ), @@ -591,7 +583,7 @@ open class HierarchicalMppIT : KGPBaseTest() { assertTasksExecuted(expectedTasks(subprojectPrefix)) checkNamesOnCompileClasspath( - "$taskPrefix:compileKotlinMetadata", + "$taskPrefix:compileCommonMainKotlinMetadata", shouldInclude = listOf( "my-lib-bar" to "main", "my-lib-foo" to "main" @@ -746,7 +738,7 @@ open class HierarchicalMppIT : KGPBaseTest() { @DisplayName("Compile only dependency processing for metadata compilations") fun testCompileOnlyDependencyProcessingForMetadataCompilations(gradleVersion: GradleVersion, @TempDir tempDir: Path) = with(nativeProject("hierarchical-mpp-project-dependency", gradleVersion, localRepoDir = tempDir)) { - publishThirdPartyLib(withGranularMetadata = true, gradleVersion = gradleVersion, localRepoDir = tempDir) + publishThirdPartyLib(gradleVersion = gradleVersion, localRepoDir = tempDir) subProject("my-lib-foo").buildGradleKts .appendText("\ndependencies { \"jvmAndJsMainCompileOnly\"(kotlin(\"test\")) }") @@ -769,7 +761,6 @@ open class HierarchicalMppIT : KGPBaseTest() { fun testHmppDependenciesInJsTests(gradleVersion: GradleVersion, @TempDir tempDir: Path) { publishThirdPartyLib( - withGranularMetadata = true, gradleVersion = gradleVersion, localRepoDir = tempDir ) @@ -788,7 +779,7 @@ open class HierarchicalMppIT : KGPBaseTest() { @GradleTest @DisplayName("Processing dependency declared in non root sourceSet") fun testProcessingDependencyDeclaredInNonRootSourceSet(gradleVersion: GradleVersion, @TempDir tempDir: Path) { - publishThirdPartyLib(withGranularMetadata = true, gradleVersion = gradleVersion, localRepoDir = tempDir) + publishThirdPartyLib(gradleVersion = gradleVersion, localRepoDir = tempDir) nativeProject( "my-lib-foo".withPrefix, @@ -813,7 +804,7 @@ open class HierarchicalMppIT : KGPBaseTest() { @DisplayName("Check dependencies in non published sourceSets") @BrokenOnMacosTest fun testDependenciesInNonPublishedSourceSets(gradleVersion: GradleVersion, @TempDir tempDir: Path) { - publishThirdPartyLib(withGranularMetadata = true, gradleVersion = gradleVersion, localRepoDir = tempDir) + publishThirdPartyLib(gradleVersion = gradleVersion, localRepoDir = tempDir) nativeProject( "my-lib-foo".withPrefix, @@ -1043,7 +1034,7 @@ open class HierarchicalMppIT : KGPBaseTest() { @DisplayName("KT-44845: all external dependencies is unresolved in IDE with kotlin.mpp.enableGranularSourceSetsMetadata=true") @BrokenOnMacosTest fun testMixedScopesFilesExistKt44845(gradleVersion: GradleVersion, @TempDir tempDir: Path) { - publishThirdPartyLib(withGranularMetadata = true, gradleVersion = gradleVersion, localRepoDir = tempDir) + publishThirdPartyLib(gradleVersion = gradleVersion, localRepoDir = tempDir) nativeProject( "my-lib-foo".withPrefix, @@ -1310,10 +1301,10 @@ open class HierarchicalMppIT : KGPBaseTest() { @DisplayName("KT-65954 Metadata Compilation should not fail when test source set has higher version of a library") fun kt65954MetadataCompilationShouldNotFail(gradleVersion: GradleVersion, @TempDir tempDir: Path) { // publish version 1.0 - publishThirdPartyLib(withGranularMetadata = true, gradleVersion = gradleVersion, localRepoDir = tempDir) + publishThirdPartyLib(gradleVersion = gradleVersion, localRepoDir = tempDir) // publish version 2.0 - publishThirdPartyLib(withGranularMetadata = true, gradleVersion = gradleVersion, localRepoDir = tempDir) { + publishThirdPartyLib(gradleVersion = gradleVersion, localRepoDir = tempDir) { buildGradleKts.appendText("\nversion = \"2.0\"\n") } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/MppDiagnosticsIt.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/MppDiagnosticsIt.kt index 6e301cc467774..5de4440a42fc9 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/MppDiagnosticsIt.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/MppDiagnosticsIt.kt @@ -250,7 +250,6 @@ class MppDiagnosticsIt : KGPBaseTest() { private val deprecatedFlags: Map get() = mapOf( "kotlin.mpp.enableGranularSourceSetsMetadata" to "true", - "kotlin.mpp.enableCompatibilityMetadataVariant" to "false", "kotlin.internal.mpp.hierarchicalStructureByDefault" to "true", "kotlin.mpp.hierarchicalStructureSupport" to "true", "kotlin.native.enableDependencyPropagation" to "false", diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/diagnosticsRenderingSmoke/expectedOutput.txt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/diagnosticsRenderingSmoke/expectedOutput.txt index 01a77069d09a0..4a6c8e125e0a8 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/diagnosticsRenderingSmoke/expectedOutput.txt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/diagnosticsRenderingSmoke/expectedOutput.txt @@ -3,7 +3,7 @@ > Configure project :subprojectA e: [PreHMPPFlagsError | ERROR] Deprecated Kotlin Multiplatform Properties The following properties are obsolete and no longer supported: -kotlin.mpp.enableCompatibilityMetadataVariant, kotlin.mpp.hierarchicalStructureSupport +kotlin.mpp.hierarchicalStructureSupport Please remove the deprecated properties from the project. Read the details here: https://kotlinlang.org/docs/multiplatform-compatibility-guide.html#deprecate-hmpp-properties #diagnostic-end diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/diagnosticsRenderingSmoke/gradle.properties b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/diagnosticsRenderingSmoke/gradle.properties index d31018be8bce6..57f252bd07a87 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/diagnosticsRenderingSmoke/gradle.properties +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/diagnosticsRenderingSmoke/gradle.properties @@ -1,5 +1,3 @@ -# Check that warnings from root project are reported -kotlin.mpp.enableCompatibilityMetadataVariant=true # Check that warnings from root project are deduplicated with warnings from subprojects # (using small trick -- 'true' state is default but still provokes warnings) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-published-modules/my-lib-foo/gradle.properties b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-published-modules/my-lib-foo/gradle.properties index 9d9bae66fc93d..d6cb37ea7f420 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-published-modules/my-lib-foo/gradle.properties +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-published-modules/my-lib-foo/gradle.properties @@ -1,2 +1 @@ -kotlin.mpp.enableCompatibilityMetadataVariant=true -kotlin.internal.suppressGradlePluginErrors=PreHMPPFlagsError \ No newline at end of file +kotlin.internal.suppressGradlePluginErrors=PreHMPPFlagsError diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/artifacts/KotlinLegacyCompatibilityMetadataArtifact.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/artifacts/KotlinLegacyCompatibilityMetadataArtifact.kt deleted file mode 100644 index 9e9e77a6c3bc0..0000000000000 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/artifacts/KotlinLegacyCompatibilityMetadataArtifact.kt +++ /dev/null @@ -1,53 +0,0 @@ -/* - * 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. - */ - -package org.jetbrains.kotlin.gradle.artifacts - -import org.gradle.api.attributes.Category -import org.gradle.api.tasks.bundling.Jar -import org.jetbrains.kotlin.gradle.dsl.kotlinExtension -import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation -import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet -import org.jetbrains.kotlin.gradle.plugin.categoryByName -import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMetadataTarget -import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages -import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope -import org.jetbrains.kotlin.gradle.plugin.sources.sourceSetDependencyConfigurationByScope -import org.jetbrains.kotlin.gradle.plugin.usesPlatformOf -import org.jetbrains.kotlin.gradle.targets.metadata.COMMON_MAIN_ELEMENTS_CONFIGURATION_NAME -import org.jetbrains.kotlin.gradle.targets.metadata.isCompatibilityMetadataVariantEnabled -import org.jetbrains.kotlin.gradle.targets.metadata.isKotlinGranularMetadataEnabled -import org.jetbrains.kotlin.gradle.tasks.registerTask -import org.jetbrains.kotlin.gradle.utils.createConsumable -import org.jetbrains.kotlin.gradle.utils.setAttribute - -internal val KotlinLegacyCompatibilityMetadataArtifact = KotlinTargetArtifact { target, _, _ -> - if (target !is KotlinMetadataTarget) return@KotlinTargetArtifact - if (!target.project.isKotlinGranularMetadataEnabled) return@KotlinTargetArtifact - if (!target.project.isCompatibilityMetadataVariantEnabled) return@KotlinTargetArtifact - - val legacyJar = target.project.registerTask(target.legacyArtifactsTaskName) - legacyJar.configure { - // Capture it here to use in onlyIf spec. Direct usage causes serialization of target attempt when configuration cache is enabled - it.description = "Assembles an archive containing the Kotlin metadata of the commonMain source set." - it.from(target.compilations.getByName(KotlinCompilation.MAIN_COMPILATION_NAME).output.allOutputs) - } - - /* Create actual Gradle artifact */ - target.project.configurations.createConsumable(COMMON_MAIN_ELEMENTS_CONFIGURATION_NAME).apply { - usesPlatformOf(target) - - KotlinUsages.configureProducerApiUsage(this, target) - attributes.setAttribute(Category.CATEGORY_ATTRIBUTE, target.project.categoryByName(Category.LIBRARY)) - - val commonMainApiConfiguration = target.project.configurations.sourceSetDependencyConfigurationByScope( - target.project.kotlinExtension.sourceSets.getByName(KotlinSourceSet.COMMON_MAIN_SOURCE_SET_NAME), - KotlinDependencyScope.API_SCOPE - ) - extendsFrom(commonMainApiConfiguration) - - target.project.artifacts.add(name, legacyJar) - } -} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/artifacts/KotlinMetadataArtifact.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/artifacts/KotlinMetadataArtifact.kt index 09d480f2744b8..6102130181310 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/artifacts/KotlinMetadataArtifact.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/artifacts/KotlinMetadataArtifact.kt @@ -11,7 +11,6 @@ import org.gradle.api.attributes.Usage import org.jetbrains.kotlin.gradle.plugin.categoryByName import org.jetbrains.kotlin.gradle.plugin.mpp.* import org.jetbrains.kotlin.gradle.plugin.usageByName -import org.jetbrains.kotlin.gradle.targets.metadata.isCompatibilityMetadataVariantEnabled import org.jetbrains.kotlin.gradle.targets.metadata.isKotlinGranularMetadataEnabled import org.jetbrains.kotlin.gradle.targets.metadata.locateOrRegisterGenerateProjectStructureMetadataTask import org.jetbrains.kotlin.gradle.targets.native.internal.includeCommonizedCInteropMetadata @@ -25,9 +24,6 @@ internal val KotlinMetadataArtifact = KotlinTargetArtifact { target, apiElements val metadataJarTask = target.createArtifactsTask { jar -> jar.description = "Assembles a jar archive containing the metadata for all Kotlin source sets." - if (target.project.isCompatibilityMetadataVariantEnabled) { - jar.archiveClassifier.set("all") - } } /* Include 'KotlinProjectStructureMetadata' file */ diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/PropertiesProvider.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/PropertiesProvider.kt index a445cde367848..7f949b35df035 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/PropertiesProvider.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/PropertiesProvider.kt @@ -35,7 +35,6 @@ import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLI import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_MPP_ANDROID_SOURCE_SET_LAYOUT_VERSION import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_MPP_APPLY_DEFAULT_HIERARCHY_TEMPLATE import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_MPP_ENABLE_CINTEROP_COMMONIZATION -import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_MPP_ENABLE_COMPATIBILITY_METADATA_VARIANT import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_MPP_ENABLE_GRANULAR_SOURCE_SETS_METADATA import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_MPP_ENABLE_INTRANSITIVE_METADATA_CONFIGURATION import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_MPP_ENABLE_OPTIMISTIC_NUMBER_COMMONIZATION @@ -193,10 +192,6 @@ internal class PropertiesProvider private constructor(private val project: Proje val mppHierarchicalStructureByDefault: Boolean get() = booleanProperty(KOTLIN_MPP_HIERARCHICAL_STRUCTURE_BY_DEFAULT) ?: true - val enableCompatibilityMetadataVariant: Boolean - get() { - return (booleanProperty(KOTLIN_MPP_ENABLE_COMPATIBILITY_METADATA_VARIANT) ?: !mppHierarchicalStructureByDefault) - } val enableKotlinToolingMetadataArtifact: Boolean get() = booleanProperty("kotlin.mpp.enableKotlinToolingMetadataArtifact") ?: true @@ -694,7 +689,6 @@ internal class PropertiesProvider private constructor(private val project: Proje val KOTLIN_JS_STDLIB_DOM_API_INCLUDED = property("kotlin.js.stdlib.dom.api.included") val KOTLIN_JS_YARN = property("kotlin.js.yarn") val KOTLIN_MPP_ENABLE_GRANULAR_SOURCE_SETS_METADATA = property("kotlin.mpp.enableGranularSourceSetsMetadata") - val KOTLIN_MPP_ENABLE_COMPATIBILITY_METADATA_VARIANT = property("kotlin.mpp.enableCompatibilityMetadataVariant") val KOTLIN_MPP_ENABLE_CINTEROP_COMMONIZATION = property("kotlin.mpp.enableCInteropCommonization") val KOTLIN_MPP_HIERARCHICAL_STRUCTURE_SUPPORT = property("kotlin.mpp.hierarchicalStructureSupport") val KOTLIN_MPP_ANDROID_SOURCE_SET_LAYOUT_VERSION = property("kotlin.mpp.androidSourceSetLayoutVersion") diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinSoftwareComponent.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinSoftwareComponent.kt index 287350596c877..ff16dc23ec29f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinSoftwareComponent.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinSoftwareComponent.kt @@ -75,7 +75,7 @@ abstract class KotlinSoftwareComponent( mutableSetOf().apply { val allMetadataJar = project.tasks.named(KotlinMetadataTargetConfigurator.ALL_METADATA_JAR_NAME) val allMetadataArtifact = project.artifacts.add(Dependency.ARCHIVES_CONFIGURATION, allMetadataJar) { allMetadataArtifact -> - allMetadataArtifact.classifier = if (project.isCompatibilityMetadataVariantEnabled) "all" else "" + allMetadataArtifact.classifier = "" } this += DefaultKotlinUsageContext( @@ -85,18 +85,6 @@ abstract class KotlinSoftwareComponent( overrideConfigurationArtifacts = project.setProperty { listOf(allMetadataArtifact) } ) - if (project.isCompatibilityMetadataVariantEnabled) { - // Ensure that consumers who expect Kotlin 1.2.x metadata package can still get one: - // publish the old metadata artifact: - this += run { - DefaultKotlinUsageContext( - metadataTarget.compilations.getByName(MAIN_COMPILATION_NAME), - KotlinUsageContext.MavenScope.COMPILE, - /** this configuration is created by [KotlinMetadataTargetConfigurator.createCommonMainElementsConfiguration] */ - COMMON_MAIN_ELEMENTS_CONFIGURATION_NAME - ) - } - } val sourcesElements = metadataTarget.sourcesElementsConfigurationName if (metadataTarget.isSourcesPublishable) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinUsages.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinUsages.kt index 564a5d06f9d94..7d267d6ade14b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinUsages.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinUsages.kt @@ -16,7 +16,6 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType.* import org.jetbrains.kotlin.gradle.plugin.KotlinTarget import org.jetbrains.kotlin.gradle.plugin.attributeValueByName import org.jetbrains.kotlin.gradle.plugin.usageByName -import org.jetbrains.kotlin.gradle.targets.metadata.isCompatibilityMetadataVariantEnabled import org.jetbrains.kotlin.gradle.utils.setAttribute object KotlinUsages { @@ -65,7 +64,7 @@ object KotlinUsages { private fun consumerApiUsage(project: Project, platformType: KotlinPlatformType) = project.usageByName( when { platformType in jvmPlatformTypes -> JAVA_API - platformType == common && !project.isCompatibilityMetadataVariantEnabled -> KOTLIN_METADATA + platformType == common -> KOTLIN_METADATA else -> KOTLIN_API } ) @@ -247,4 +246,4 @@ object KotlinUsages { } } } -} \ No newline at end of file +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/internal/DeprecatedMppGradlePropertiesMigrationSetupAction.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/internal/DeprecatedMppGradlePropertiesMigrationSetupAction.kt index 3477918b3228c..caf083282ad20 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/internal/DeprecatedMppGradlePropertiesMigrationSetupAction.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/internal/DeprecatedMppGradlePropertiesMigrationSetupAction.kt @@ -8,7 +8,6 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.internal import org.gradle.api.Project import org.jetbrains.kotlin.gradle.plugin.KotlinProjectSetupAction import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider -import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_MPP_ENABLE_COMPATIBILITY_METADATA_VARIANT import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_MPP_ENABLE_GRANULAR_SOURCE_SETS_METADATA import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_MPP_HIERARCHICAL_STRUCTURE_BY_DEFAULT import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_MPP_HIERARCHICAL_STRUCTURE_SUPPORT @@ -41,7 +40,6 @@ private fun checkAndReportDeprecatedMppProperties(project: Project) { } internal val deprecatedMppProperties: List = listOf( - KOTLIN_MPP_ENABLE_COMPATIBILITY_METADATA_VARIANT, KOTLIN_MPP_ENABLE_GRANULAR_SOURCE_SETS_METADATA, KOTLIN_MPP_HIERARCHICAL_STRUCTURE_BY_DEFAULT, KOTLIN_MPP_HIERARCHICAL_STRUCTURE_SUPPORT, diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/registerKotlinPluginExtensions.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/registerKotlinPluginExtensions.kt index 6332efe4e516a..723a1fb7ed45c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/registerKotlinPluginExtensions.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/registerKotlinPluginExtensions.kt @@ -145,7 +145,6 @@ internal fun Project.registerKotlinPluginExtensions() { KotlinTargetArtifact.extensionPoint.apply { register(project, KotlinMetadataArtifact) - register(project, KotlinLegacyCompatibilityMetadataArtifact) register(project, KotlinLegacyMetadataArtifact) register(project, KotlinJvmJarArtifact) register(project, KotlinJsKlibArtifact) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt index 773b1e2bb22db..96e557718355e 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt @@ -42,8 +42,6 @@ internal val Project.shouldCompileIntermediateSourceSetsToMetadata: Boolean } } -internal val Project.isCompatibilityMetadataVariantEnabled: Boolean - get() = PropertiesProvider(this).enableCompatibilityMetadataVariant == true class KotlinMetadataTargetConfigurator : KotlinOnlyTargetConfigurator, KotlinMetadataTarget>(createTestCompilation = false) { @@ -63,21 +61,9 @@ class KotlinMetadataTargetConfigurator : // Force the default 'main' compilation to produce *.kotlin_metadata regardless of the klib feature flag. forceCompilationToKotlinMetadata = true - // Capture it here to use in onlyIf spec. Direct usage causes serialization of target attempt when configuration cache is enabled - val isCompatibilityMetadataVariantEnabled = target.project.isCompatibilityMetadataVariantEnabled - if (isCompatibilityMetadataVariantEnabled) { - // Add directly dependsOn sources for Legacy Compatibility Metadata variant - // it isn't necessary for KLib compilations - // see [KotlinCompilationSourceSetInclusion.AddSourcesWithoutDependsOnClosure] - defaultSourceSet.internal.dependsOnClosure.forAll { - @Suppress("DEPRECATION") - addSourceSet(it) - } - } else { - // Clear the dependencies of the compilation so that they don't take time resolving during task graph construction: - compileDependencyFiles = target.project.files() - } - compileTaskProvider.configure { it.onlyIf { isCompatibilityMetadataVariantEnabled } } + // Clear the dependencies of the compilation so that they don't take time resolving during task graph construction: + compileDependencyFiles = target.project.files() + compileTaskProvider.configure { it.onlyIf { false } } } createMetadataCompilationsForCommonSourceSets(target) @@ -119,10 +105,6 @@ class KotlinMetadataTargetConfigurator : } } - if (project.isCompatibilityMetadataVariantEnabled) { - val mainCompilation = target.compilations.getByName(KotlinCompilation.MAIN_COMPILATION_NAME) - configureMetadataDependenciesForCompilation(mainCompilation) - } sourceSetsWithMetadataCompilations.values.forEach { compilation -> exportDependenciesForPublishing(compilation) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tooling/BuildKotlinToolingMetadataTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tooling/BuildKotlinToolingMetadataTask.kt index 22360cb41b7d4..7740ac94e2503 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tooling/BuildKotlinToolingMetadataTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tooling/BuildKotlinToolingMetadataTask.kt @@ -20,7 +20,6 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsSubTargetContainerDsl import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget -import org.jetbrains.kotlin.gradle.targets.metadata.isCompatibilityMetadataVariantEnabled import org.jetbrains.kotlin.gradle.targets.metadata.isKotlinGranularMetadataEnabled import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask import org.jetbrains.kotlin.library.KotlinAbiVersion @@ -112,7 +111,7 @@ private fun KotlinProjectExtension.getKotlinToolingMetadata(): KotlinToolingMeta private fun KotlinProjectExtension.buildProjectSettings(): KotlinToolingMetadata.ProjectSettings { return KotlinToolingMetadata.ProjectSettings( isHmppEnabled = project.isKotlinGranularMetadataEnabled, - isCompatibilityMetadataVariantEnabled = project.isCompatibilityMetadataVariantEnabled, + isCompatibilityMetadataVariantEnabled = false, isKPMEnabled = false ) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/KT55730CommonMainDependsOnAnotherSourceSet.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/KT55730CommonMainDependsOnAnotherSourceSet.kt deleted file mode 100644 index 616fca4c5e4e8..0000000000000 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/KT55730CommonMainDependsOnAnotherSourceSet.kt +++ /dev/null @@ -1,47 +0,0 @@ -/* - * 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. - */ - -@file:Suppress("FunctionName") - -package org.jetbrains.kotlin.gradle.regressionTests - -import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension -import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider -import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics -import org.jetbrains.kotlin.gradle.util.* -import kotlin.test.Test -import kotlin.test.assertEquals - -class KT55730CommonMainDependsOnAnotherSourceSet { - @Test - fun `legacy metadata compilation should have commonMain with its depends on closure`() { - val project = buildProject { - propertiesExtension.set(PropertiesProvider.PropertyNames.KOTLIN_MPP_ENABLE_COMPATIBILITY_METADATA_VARIANT, "true") - propertiesExtension.set( - PropertiesProvider.PropertyNames.KOTLIN_SUPPRESS_GRADLE_PLUGIN_ERRORS, - KotlinToolingDiagnostics.PreHMPPFlagsError.id - ) - applyMultiplatformPlugin() - kotlin { - val grandCommonMain = sourceSets.create("grandCommonMain") - val commonMain = sourceSets.getByName("commonMain") - commonMain.dependsOn(grandCommonMain) - } - } - - project.evaluate() - - val actualSourceSets = project - .multiplatformExtension - .metadata() - .compilations - .getByName("main") - .kotlinSourceSets - .map { it.name } - .toSet() - - assertEquals(setOf("grandCommonMain", "commonMain"), actualSourceSets) - } -} \ No newline at end of file