[Gradle] Fix PlatformCommonizer classpath configuration consumption

Make sure that Commonizer Tasks consume correct classpath configuration

^KT-43293
This commit is contained in:
Anton Lakotka
2022-07-25 15:17:21 +02:00
committed by Space
parent 7fedf22946
commit 51034e4e46
5 changed files with 11 additions and 19 deletions
@@ -8,6 +8,7 @@
package org.jetbrains.kotlin.compilerRunner package org.jetbrains.kotlin.compilerRunner
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.artifacts.Configuration
import org.gradle.api.attributes.Category import org.gradle.api.attributes.Category
import org.gradle.api.attributes.LibraryElements import org.gradle.api.attributes.LibraryElements
import org.gradle.api.attributes.Usage import org.gradle.api.attributes.Usage
@@ -26,9 +27,9 @@ internal fun GradleCliCommonizer(commonizerToolRunner: KotlinNativeCommonizerToo
}) })
} }
internal fun Project.registerCommonizerClasspathConfigurationIfNecessary() { internal fun Project.maybeCreateCommonizerClasspathConfiguration(): Configuration {
if (configurations.findByName(KLIB_COMMONIZER_CLASSPATH_CONFIGURATION_NAME) == null) { return configurations.findByName(KLIB_COMMONIZER_CLASSPATH_CONFIGURATION_NAME)
project.configurations.create(KLIB_COMMONIZER_CLASSPATH_CONFIGURATION_NAME).run { ?: project.configurations.create(KLIB_COMMONIZER_CLASSPATH_CONFIGURATION_NAME).run {
isCanBeResolved = true isCanBeResolved = true
isCanBeConsumed = false isCanBeConsumed = false
attributes.attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.LIBRARY)) attributes.attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.LIBRARY))
@@ -40,5 +41,4 @@ internal fun Project.registerCommonizerClasspathConfigurationIfNecessary() {
) )
} }
} }
}
} }
@@ -24,7 +24,7 @@ import org.gradle.api.logging.Logger
import org.gradle.api.logging.Logging import org.gradle.api.logging.Logging
import org.gradle.api.model.ObjectFactory import org.gradle.api.model.ObjectFactory
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
import org.jetbrains.kotlin.compilerRunner.registerCommonizerClasspathConfigurationIfNecessary import org.jetbrains.kotlin.compilerRunner.maybeCreateCommonizerClasspathConfiguration
import org.jetbrains.kotlin.gradle.dsl.* import org.jetbrains.kotlin.gradle.dsl.*
import org.jetbrains.kotlin.gradle.internal.KOTLIN_COMPILER_EMBEDDABLE import org.jetbrains.kotlin.gradle.internal.KOTLIN_COMPILER_EMBEDDABLE
import org.jetbrains.kotlin.gradle.internal.KOTLIN_MODULE_GROUP import org.jetbrains.kotlin.gradle.internal.KOTLIN_MODULE_GROUP
@@ -159,7 +159,7 @@ abstract class KotlinBasePluginWrapper : DefaultKotlinBasePlugin() {
isTransitive = false isTransitive = false
addGradlePluginMetadataAttributes(project) addGradlePluginMetadataAttributes(project)
} }
project.registerCommonizerClasspathConfigurationIfNecessary() project.maybeCreateCommonizerClasspathConfiguration()
project.registerDefaultVariantImplementations() project.registerDefaultVariantImplementations()
@@ -15,9 +15,9 @@ import org.gradle.process.ExecOperations
import org.jetbrains.kotlin.commonizer.CommonizerDependency import org.jetbrains.kotlin.commonizer.CommonizerDependency
import org.jetbrains.kotlin.commonizer.TargetedCommonizerDependency import org.jetbrains.kotlin.commonizer.TargetedCommonizerDependency
import org.jetbrains.kotlin.commonizer.allLeaves import org.jetbrains.kotlin.commonizer.allLeaves
import org.jetbrains.kotlin.compilerRunner.*
import org.jetbrains.kotlin.compilerRunner.GradleCliCommonizer import org.jetbrains.kotlin.compilerRunner.GradleCliCommonizer
import org.jetbrains.kotlin.compilerRunner.KotlinNativeCommonizerToolRunner import org.jetbrains.kotlin.compilerRunner.KotlinNativeCommonizerToolRunner
import org.jetbrains.kotlin.compilerRunner.KotlinToolRunner
import org.jetbrains.kotlin.compilerRunner.konanHome import org.jetbrains.kotlin.compilerRunner.konanHome
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
@@ -97,7 +97,6 @@ internal open class CInteropCommonizerTask
private val runnerSettings: Provider<KotlinNativeCommonizerToolRunner.Settings> = kotlinPluginVersion private val runnerSettings: Provider<KotlinNativeCommonizerToolRunner.Settings> = kotlinPluginVersion
.zip(customJvmArgs) { pluginVersion, customJvmArgs -> .zip(customJvmArgs) { pluginVersion, customJvmArgs ->
commonizerClasspath
KotlinNativeCommonizerToolRunner.Settings( KotlinNativeCommonizerToolRunner.Settings(
pluginVersion, pluginVersion,
commonizerClasspath.files, commonizerClasspath.files,
@@ -9,8 +9,8 @@ import org.gradle.api.Project
import org.gradle.api.Task import org.gradle.api.Task
import org.gradle.api.tasks.Delete import org.gradle.api.tasks.Delete
import org.gradle.api.tasks.TaskProvider import org.gradle.api.tasks.TaskProvider
import org.jetbrains.kotlin.compilerRunner.maybeCreateCommonizerClasspathConfiguration
import org.jetbrains.kotlin.gradle.internal.isInIdeaSync import org.jetbrains.kotlin.gradle.internal.isInIdeaSync
import org.jetbrains.kotlin.gradle.plugin.KLIB_COMMONIZER_CLASSPATH_CONFIGURATION_NAME
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion
import org.jetbrains.kotlin.gradle.plugin.ide.Idea222Api import org.jetbrains.kotlin.gradle.plugin.ide.Idea222Api
@@ -77,9 +77,7 @@ internal val Project.commonizeCInteropTask: TaskProvider<CInteropCommonizerTask>
description = "Invokes the commonizer on c-interop bindings of the project" description = "Invokes the commonizer on c-interop bindings of the project"
kotlinPluginVersion.set(getKotlinPluginVersion()) kotlinPluginVersion.set(getKotlinPluginVersion())
commonizerClasspath.from( commonizerClasspath.from(project.maybeCreateCommonizerClasspathConfiguration())
configurations.getByName(KLIB_COMMONIZER_CLASSPATH_CONFIGURATION_NAME)
)
customJvmArgs.set(PropertiesProvider(project).commonizerJvmArgs) customJvmArgs.set(PropertiesProvider(project).commonizerJvmArgs)
} }
) )
@@ -127,10 +125,8 @@ internal val Project.commonizeNativeDistributionTask: TaskProvider<NativeDistrib
description = "Invokes the commonizer on platform libraries provided by the Kotlin/Native distribution" description = "Invokes the commonizer on platform libraries provided by the Kotlin/Native distribution"
kotlinPluginVersion.set(getKotlinPluginVersion()) kotlinPluginVersion.set(getKotlinPluginVersion())
commonizerClasspath.from( commonizerClasspath.from(rootProject.maybeCreateCommonizerClasspathConfiguration())
configurations.getByName(KLIB_COMMONIZER_CLASSPATH_CONFIGURATION_NAME) customJvmArgs.set(PropertiesProvider(rootProject).commonizerJvmArgs)
)
customJvmArgs.set(PropertiesProvider(project).commonizerJvmArgs)
} }
) )
} }
@@ -19,7 +19,6 @@ import org.jetbrains.kotlin.compilerRunner.*
import org.jetbrains.kotlin.compilerRunner.GradleCliCommonizer import org.jetbrains.kotlin.compilerRunner.GradleCliCommonizer
import org.jetbrains.kotlin.compilerRunner.KotlinNativeCommonizerToolRunner import org.jetbrains.kotlin.compilerRunner.KotlinNativeCommonizerToolRunner
import org.jetbrains.kotlin.compilerRunner.konanHome import org.jetbrains.kotlin.compilerRunner.konanHome
import org.jetbrains.kotlin.compilerRunner.registerCommonizerClasspathConfigurationIfNecessary
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider
import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion
@@ -59,7 +58,6 @@ internal open class NativeDistributionCommonizerTask
private val runnerSettings: Provider<KotlinNativeCommonizerToolRunner.Settings> = kotlinPluginVersion private val runnerSettings: Provider<KotlinNativeCommonizerToolRunner.Settings> = kotlinPluginVersion
.zip(customJvmArgs) { pluginVersion, customJvmArgs -> .zip(customJvmArgs) { pluginVersion, customJvmArgs ->
commonizerClasspath
KotlinNativeCommonizerToolRunner.Settings( KotlinNativeCommonizerToolRunner.Settings(
pluginVersion, pluginVersion,
commonizerClasspath.files, commonizerClasspath.files,
@@ -103,7 +101,6 @@ internal open class NativeDistributionCommonizerTask
} }
init { init {
project.registerCommonizerClasspathConfigurationIfNecessary()
outputs.upToDateWhen { outputs.upToDateWhen {
commonizerCache.isUpToDate(commonizerTargets) commonizerCache.isUpToDate(commonizerTargets)
} }