[Gradle] Made kotlin native configuration init only once.

`maybeCreateResolvable` with `also` each time configures configuration.
But we cannot add new dependencies after the configuration is resolved.
Thus, it is more correct to add init block for a case when it is a newly created configuration.

^KTIJ-28742 Fixed
This commit is contained in:
Dmitrii Krasnov
2024-02-06 18:45:20 +01:00
committed by Space Team
parent 58e1c4c6ac
commit af872b5692
2 changed files with 15 additions and 9 deletions
@@ -60,12 +60,12 @@ internal object KotlinNativeBundleArtifactFormat {
internal fun addKotlinNativeBundleConfiguration(project: Project) {
project.configurations
.maybeCreateResolvable(KOTLIN_NATIVE_BUNDLE_CONFIGURATION_NAME).also { configuration ->
configuration.defaultDependencies {
.maybeCreateResolvable(KOTLIN_NATIVE_BUNDLE_CONFIGURATION_NAME) {
defaultDependencies {
it.add(project.dependencies.create(NativeCompilerDownloader.getCompilerDependencyNotation(project)))
}
if (!configuration.attributes.contains(attribute)) {
configuration.attributes.setAttribute(attribute, KotlinNativeBundleArtifactsTypes.DIRECTORY)
if (!attributes.contains(attribute)) {
attributes.setAttribute(attribute, KotlinNativeBundleArtifactsTypes.DIRECTORY)
}
}
}
@@ -20,7 +20,10 @@ const val RUNTIME = "runtime"
internal const val INTRANSITIVE = "intransitive"
private val gradleVersionWithNewApi = GradleVersion.version("8.4")
internal fun ConfigurationContainer.createResolvable(name: String): Configuration = create(name).apply {
internal fun ConfigurationContainer.createResolvable(
name: String,
configurationOnCreate: Configuration.() -> Unit = {},
): Configuration = create(name, configurationOnCreate).apply {
isCanBeConsumed = false
}
@@ -42,8 +45,11 @@ internal fun ConfigurationContainer.findResolvable(name: String): Configuration?
}
}
internal fun ConfigurationContainer.maybeCreateResolvable(name: String): Configuration =
findResolvable(name) ?: createResolvable(name)
internal fun ConfigurationContainer.maybeCreateResolvable(
name: String,
configurationOnCreate: Configuration.() -> Unit = {},
): Configuration =
findResolvable(name) ?: createResolvable(name, configurationOnCreate)
internal fun ConfigurationContainer.detachedResolvable(vararg dependencies: Dependency) =
detachedConfiguration(*dependencies).apply {
@@ -67,7 +73,7 @@ internal fun ConfigurationContainer.maybeCreateConsumable(name: String): Configu
internal fun ConfigurationContainer.createDependencyScope(
name: String,
configuration: Configuration.() -> Unit = {}
configuration: Configuration.() -> Unit = {},
): NamedDomainObjectProvider<out Configuration> =
if (GradleVersion.current() >= gradleVersionWithNewApi) {
dependencyScope(name, configuration)
@@ -91,5 +97,5 @@ internal fun ConfigurationContainer.findDependencyScope(name: String): Configura
internal fun ConfigurationContainer.maybeCreateDependencyScope(
name: String,
configurationOnCreate: Configuration.() -> Unit = {}
configurationOnCreate: Configuration.() -> Unit = {},
): Configuration = findDependencyScope(name) ?: createDependencyScope(name, configurationOnCreate).get()