[Gradle] Remove relatedConfigurationNames

It was public api which has not much use outside KGP.
Moreover, this api has a little use so it is ok list configuration names
in place.

^KT-58225 Verification Pending
This commit is contained in:
Anton Lakotka
2023-07-04 16:38:58 +02:00
committed by Space Team
parent 8aacdb471b
commit 001bdc411d
11 changed files with 95 additions and 109 deletions
@@ -196,10 +196,6 @@ interface HasKotlinDependencies {
val implementationConfigurationName: String
val compileOnlyConfigurationName: String
val runtimeOnlyConfigurationName: String
@Deprecated("Scheduled for removal with Kotlin 2.0")
val relatedConfigurationNames: List<String>
get() = listOf(apiConfigurationName, implementationConfigurationName, compileOnlyConfigurationName, runtimeOnlyConfigurationName)
}
@Deprecated("Do not use in your build script")
@@ -140,11 +140,6 @@ interface KotlinCompilation<out T : KotlinCommonOptionsDeprecated> : Named,
override fun getName(): String = compilationName
@Deprecated("Scheduled for removal with Kotlin 2.0")
@Suppress("DEPRECATION")
override val relatedConfigurationNames: List<String>
get() = super.relatedConfigurationNames + compileDependencyConfigurationName
val disambiguatedName
get() = target.disambiguationClassifier + name
}
@@ -154,11 +149,6 @@ interface KotlinCompilationToRunnableFiles<T : KotlinCommonOptionsDeprecated> :
override val runtimeDependencyConfigurationName: String
override var runtimeDependencyFiles: FileCollection
@Suppress("DEPRECATION")
@Deprecated("Scheduled for removal with Kotlin 2.0")
override val relatedConfigurationNames: List<String>
get() = super.relatedConfigurationNames + runtimeDependencyConfigurationName
}
@Deprecated("Scheduled for removal with Kotlin 2.0")
@@ -21,9 +21,4 @@ internal constructor(compilation: KotlinCompilationImpl) : AbstractKotlinCompila
final override var runtimeDependencyFiles: FileCollection =
compilation.runtimeDependencyFiles ?: error("$compilation: Missing 'runtimeDependencyFiles'")
@Deprecated("Scheduled for removal with Kotlin 2.0")
@Suppress("DEPRECATION")
override val relatedConfigurationNames: List<String>
get() = compilation.relatedConfigurationNames
}
@@ -202,60 +202,6 @@ class KotlinMultiplatformPlugin : Plugin<Project> {
}
}
/**
* The attributes attached to the targets and compilations need to be propagated to the relevant Gradle configurations:
* 1. Output configurations of each target need the corresponding compilation's attributes (and, indirectly, the target's attributes)
* 2. Resolvable configurations of each compilation need the compilation's attributes
*/
internal fun applyUserDefinedAttributes(target: AbstractKotlinTarget) {
val project = target.project
project.whenEvaluated {
// To copy the attributes to the output configurations, find those output configurations and their producing compilations
// based on the target's components:
val outputConfigurationsWithCompilations = target.kotlinComponents.filterIsInstance<KotlinVariant>().flatMap { kotlinVariant ->
kotlinVariant.usages.mapNotNull { usageContext ->
project.configurations.findByName(usageContext.dependencyConfigurationName)?.let { configuration ->
configuration to usageContext.compilation
}
}
}.toMutableList()
val mainCompilation = target.compilations.findByName(KotlinCompilation.MAIN_COMPILATION_NAME)
// Add usages of android library when its variants are grouped by flavor
outputConfigurationsWithCompilations += target.kotlinComponents
.filterIsInstance<JointAndroidKotlinTargetComponent>()
.flatMap { variant -> variant.usages }
.mapNotNull { usage ->
val configuration = project.configurations.findByName(usage.dependencyConfigurationName) ?: return@mapNotNull null
configuration to usage.compilation
}
outputConfigurationsWithCompilations.forEach { (configuration, compilation) ->
copyAttributes(compilation.attributes, configuration.attributes)
}
target.compilations.all { compilation ->
val compilationAttributes = compilation.attributes
@Suppress("DEPRECATION")
compilation.relatedConfigurationNames
.mapNotNull { configurationName -> target.project.configurations.findByName(configurationName) }
.forEach { configuration -> copyAttributes(compilationAttributes, configuration.attributes) }
}
// Copy to host-specific metadata elements configurations
if (target is KotlinNativeTarget) {
val hostSpecificMetadataElements = project.configurations.findByName(target.hostSpecificMetadataElementsConfigurationName)
if (hostSpecificMetadataElements != null) {
copyAttributes(from = target.attributes, to = hostSpecificMetadataElements.attributes)
}
}
}
}
internal fun Project.setupGeneralKotlinExtensionParameters() {
project.launch {
for (sourceSet in kotlinExtension.awaitSourceSets()) {
@@ -0,0 +1,85 @@
/*
* 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.plugin.mpp
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.copyAttributes
import org.jetbrains.kotlin.gradle.plugin.whenEvaluated
/**
* The attributes attached to the targets and compilations need to be propagated to the relevant Gradle configurations:
* 1. Output configurations of each target need the corresponding compilation's attributes (and, indirectly, the target's attributes)
* 2. Resolvable configurations of each compilation need the compilation's attributes
*/
internal fun applyUserDefinedAttributes(target: AbstractKotlinTarget) {
val project = target.project
project.whenEvaluated {
// To copy the attributes to the output configurations, find those output configurations and their producing compilations
// based on the target's components:
val outputConfigurationsWithCompilations = target.kotlinComponents.filterIsInstance<KotlinVariant>().flatMap { kotlinVariant ->
kotlinVariant.usages.mapNotNull { usageContext ->
project.configurations.findByName(usageContext.dependencyConfigurationName)?.let { configuration ->
configuration to usageContext.compilation
}
}
}.toMutableList()
// Add usages of android library when its variants are grouped by flavor
outputConfigurationsWithCompilations += target.kotlinComponents
.filterIsInstance<JointAndroidKotlinTargetComponent>()
.flatMap { variant -> variant.usages }
.mapNotNull { usage ->
val configuration = project.configurations.findByName(usage.dependencyConfigurationName) ?: return@mapNotNull null
configuration to usage.compilation
}
outputConfigurationsWithCompilations.forEach { (configuration, compilation) ->
copyAttributes(compilation.attributes, configuration.attributes)
}
target.compilations.all { compilation ->
val compilationAttributes = compilation.attributes
compilation.allOwnedConfigurationsNames
.mapNotNull { configurationName -> target.project.configurations.findByName(configurationName) }
.forEach { configuration -> copyAttributes(compilationAttributes, configuration.attributes) }
}
// Copy to host-specific metadata elements configurations
if (target is KotlinNativeTarget) {
val hostSpecificMetadataElements = project.configurations.findByName(target.hostSpecificMetadataElementsConfigurationName)
if (hostSpecificMetadataElements != null) {
copyAttributes(from = target.attributes, to = hostSpecificMetadataElements.attributes)
}
}
}
}
private val KotlinCompilation<*>.allOwnedConfigurationsNames
get(): List<String> {
val defaultConfigurations = listOfNotNull(
apiConfigurationName,
implementationConfigurationName,
compileOnlyConfigurationName,
runtimeOnlyConfigurationName,
compileDependencyConfigurationName,
runtimeDependencyConfigurationName,
)
val implementationSpecificConfigurations = when (this) {
is KotlinJvmAndroidCompilation -> listOfNotNull(
"${androidVariant.name}ApiElements",
"${androidVariant.name}RuntimeElements",
androidVariant.compileConfiguration.name,
androidVariant.runtimeConfiguration.name
)
is KotlinJsCompilation -> listOfNotNull(npmAggregatedConfigurationName, publicPackageJsonConfigurationName)
else -> emptyList()
}
return defaultConfigurations + implementationSpecificConfigurations
}
@@ -127,16 +127,6 @@ internal class KotlinCompilationImpl constructor(
override var runtimeDependencyFiles: FileCollection? = configurations.runtimeDependencyConfiguration
@Deprecated("Scheduled for removal with Kotlin 2.0")
override val relatedConfigurationNames: List<String> = listOfNotNull(
apiConfigurationName,
implementationConfigurationName,
compileOnlyConfigurationName,
runtimeOnlyConfigurationName,
compileDependencyConfigurationName,
runtimeDependencyConfigurationName
)
override fun dependencies(configure: KotlinDependencyHandler.() -> Unit) {
HasKotlinDependencies(project, configurations).dependencies(configure)
}
@@ -219,9 +219,7 @@ private fun KotlinTargetComponent.findUsageContext(configurationName: String): U
return usageContexts.find { usageContext ->
if (usageContext !is KotlinUsageContext) return@find false
val compilation = usageContext.compilation
@Suppress("DEPRECATION")
configurationName in compilation.relatedConfigurationNames ||
configurationName == compilation.target.apiElementsConfigurationName ||
configurationName == compilation.target.apiElementsConfigurationName ||
configurationName == compilation.target.runtimeElementsConfigurationName
}
}
@@ -63,13 +63,6 @@ interface GradleKpmFragment : KpmFragment, HasKotlinDependencies, GradleKpmFragm
override val runtimeOnlyConfigurationName: String
get() = runtimeOnlyConfiguration.name
@Deprecated("Scheduled for removal with Kotlin 2.0")
@Suppress("DEPRECATION")
override val relatedConfigurationNames: List<String>
get() = super.relatedConfigurationNames +
// TODO: resolvable metadata configurations?
listOf(transitiveApiConfiguration.name, transitiveImplementationConfiguration.name)
}
val GradleKpmFragment.path: String
@@ -40,8 +40,15 @@ internal abstract class KotlinSourceSetFactory<T : KotlinSourceSet> internal con
}
private fun defineSourceSetConfigurations(project: Project, sourceSet: KotlinSourceSet) = with(project.configurations) {
@Suppress("DEPRECATION")
sourceSet.relatedConfigurationNames.forEach { configurationName ->
val configurationNames = sourceSet.run {
listOfNotNull(
apiConfigurationName,
implementationConfigurationName,
compileOnlyConfigurationName,
runtimeOnlyConfigurationName,
)
}
configurationNames.forEach { configurationName ->
maybeCreate(configurationName).apply {
if (!configurationName.endsWith(METADATA_CONFIGURATION_NAME_SUFFIX)) {
isCanBeResolved = false
@@ -60,11 +60,6 @@ open class KotlinJsCompilation @Inject internal constructor(
val publicPackageJsonConfigurationName
get() = compilation.disambiguateName("publicPackageJsonConfiguration")
@Deprecated("Scheduled for removal with Kotlin 2.0")
@Suppress("DEPRECATION")
override val relatedConfigurationNames: List<String>
get() = super.relatedConfigurationNames + npmAggregatedConfigurationName + publicPackageJsonConfigurationName
override fun getAttributes(): AttributeContainer {
return compilation.attributes
}
@@ -49,13 +49,4 @@ open class KotlinJvmAndroidCompilation @Inject internal constructor(
val compileJavaTaskProvider: TaskProvider<out JavaCompile>
get() = androidVariant.getJavaTaskProvider()
@Deprecated("Scheduled for removal with Kotlin 2.0")
@Suppress("DEPRECATION")
override val relatedConfigurationNames: List<String>
get() = compilation.relatedConfigurationNames + listOf(
"${androidVariant.name}ApiElements",
"${androidVariant.name}RuntimeElements",
androidVariant.compileConfiguration.name,
androidVariant.runtimeConfiguration.name
)
}