[Gradle] Introduce ConfigurationCacheStartParameterAccessor

#KT-61457 In Progress
This commit is contained in:
Alexander.Likhachev
2023-08-25 18:02:40 +02:00
committed by Space Team
parent 6ce096f0ed
commit 51fe1fd3cc
12 changed files with 160 additions and 0 deletions
@@ -194,6 +194,11 @@ abstract class DefaultKotlinBasePlugin : KotlinBasePlugin {
UnameExecutor.UnameExecutorVariantFactory::class,
DefaultUnameExecutorVariantFactory()
)
factories.putIfAbsent(
ConfigurationCacheStartParameterAccessor.Factory::class,
DefaultConfigurationCacheStartParameterAccessorVariantFactory()
)
}
protected fun setupAttributeMatchingStrategy(
@@ -0,0 +1,42 @@
/*
* 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.internal
import org.gradle.api.Project
import org.gradle.api.invocation.Gradle
import org.jetbrains.kotlin.gradle.plugin.VariantImplementationFactories
import org.jetbrains.kotlin.gradle.plugin.variantImplementationFactory
/**
* KGP was using `StartParametersInternal.isConfigurationCache` to find out whether the build requests configuration cache.
* That property became deprecated since Gradle 7.1 and is scheduled to be removed soon.
* As a replacement, Gradle provides [org.gradle.StartParameter.isConfigurationCacheRequested] since Gradle 7.6
*/
internal interface ConfigurationCacheStartParameterAccessor {
val isConfigurationCacheRequested: Boolean
interface Factory : VariantImplementationFactories.VariantImplementationFactory {
fun getInstance(gradle: Gradle): ConfigurationCacheStartParameterAccessor
}
}
internal class DefaultConfigurationCacheStartParameterAccessorVariantFactory :
ConfigurationCacheStartParameterAccessor.Factory {
override fun getInstance(gradle: Gradle) = DefaultConfigurationCacheStartParameterAccessor(gradle)
}
internal class DefaultConfigurationCacheStartParameterAccessor(
private val gradle: Gradle,
) : ConfigurationCacheStartParameterAccessor {
override val isConfigurationCacheRequested: Boolean by lazy {
gradle.startParameter.isConfigurationCacheRequested
}
}
internal val Project.isConfigurationCacheRequested
get() = variantImplementationFactory<ConfigurationCacheStartParameterAccessor.Factory>()
.getInstance(gradle)
.isConfigurationCacheRequested
@@ -166,4 +166,5 @@ private fun Project.registerVariantImplementations() {
CompatibilityConventionRegistrarG70.Factory()
factories[UnameExecutor.UnameExecutorVariantFactory::class] =
UnameExecutorG70.UnameExecutorVariantFactoryG70()
factories[ConfigurationCacheStartParameterAccessor.Factory::class] = ConfigurationCacheStartParameterAccessorG70.Factory()
}
@@ -0,0 +1,21 @@
/*
* 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.internal
import org.gradle.api.internal.StartParameterInternal
import org.gradle.api.invocation.Gradle
internal class ConfigurationCacheStartParameterAccessorG70(
private val gradle: Gradle,
) : ConfigurationCacheStartParameterAccessor {
override val isConfigurationCacheRequested by lazy {
(gradle.startParameter as StartParameterInternal).isConfigurationCache
}
internal class Factory : ConfigurationCacheStartParameterAccessor.Factory {
override fun getInstance(gradle: Gradle) = ConfigurationCacheStartParameterAccessorG70(gradle)
}
}
@@ -167,4 +167,5 @@ private fun Project.registerVariantImplementations() {
CompatibilityConventionRegistrarG71.Factory()
factories[UnameExecutor.UnameExecutorVariantFactory::class] =
UnameExecutorG71.UnameExecutorVariantFactoryG71()
factories[ConfigurationCacheStartParameterAccessor.Factory::class] = ConfigurationCacheStartParameterAccessorG71.Factory()
}
@@ -0,0 +1,22 @@
/*
* 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.internal
import org.gradle.api.internal.StartParameterInternal
import org.gradle.api.invocation.Gradle
internal class ConfigurationCacheStartParameterAccessorG71(
private val gradle: Gradle,
) : ConfigurationCacheStartParameterAccessor {
@Suppress("DEPRECATION")
override val isConfigurationCacheRequested by lazy {
(gradle.startParameter as StartParameterInternal).isConfigurationCache
}
internal class Factory : ConfigurationCacheStartParameterAccessor.Factory {
override fun getInstance(gradle: Gradle) = ConfigurationCacheStartParameterAccessorG71(gradle)
}
}
@@ -156,4 +156,5 @@ private fun Project.registerVariantImplementations() {
CompatibilityConventionRegistrarG74.Factory()
factories[UnameExecutor.UnameExecutorVariantFactory::class] =
UnameExecutorG74.UnameExecutorVariantFactoryG74()
factories[ConfigurationCacheStartParameterAccessor.Factory::class] = ConfigurationCacheStartParameterAccessorG74.Factory()
}
@@ -0,0 +1,22 @@
/*
* 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.internal
import org.gradle.api.internal.StartParameterInternal
import org.gradle.api.invocation.Gradle
internal class ConfigurationCacheStartParameterAccessorG74(
private val gradle: Gradle,
) : ConfigurationCacheStartParameterAccessor {
@Suppress("DEPRECATION")
override val isConfigurationCacheRequested by lazy {
(gradle.startParameter as StartParameterInternal).isConfigurationCache
}
internal class Factory : ConfigurationCacheStartParameterAccessor.Factory {
override fun getInstance(gradle: Gradle) = ConfigurationCacheStartParameterAccessorG74(gradle)
}
}
@@ -153,4 +153,5 @@ private fun Project.registerVariantImplementations() {
ProjectIsolationStartParameterAccessorG75.Factory()
factories[CompatibilityConventionRegistrar.Factory::class] =
CompatibilityConventionRegistrarG75.Factory()
factories[ConfigurationCacheStartParameterAccessor.Factory::class] = ConfigurationCacheStartParameterAccessorG75.Factory()
}
@@ -0,0 +1,22 @@
/*
* 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.internal
import org.gradle.api.internal.StartParameterInternal
import org.gradle.api.invocation.Gradle
internal class ConfigurationCacheStartParameterAccessorG75(
private val gradle: Gradle,
) : ConfigurationCacheStartParameterAccessor {
@Suppress("DEPRECATION")
override val isConfigurationCacheRequested by lazy {
(gradle.startParameter as StartParameterInternal).isConfigurationCache
}
internal class Factory : ConfigurationCacheStartParameterAccessor.Factory {
override fun getInstance(gradle: Gradle) = ConfigurationCacheStartParameterAccessorG75(gradle)
}
}
@@ -172,4 +172,5 @@ private fun Project.registerVariantImplementations() {
CompatibilityConventionRegistrarG6.Factory()
factories[UnameExecutor.UnameExecutorVariantFactory::class] =
UnameExecutorG6.UnameExecutorVariantFactoryG6()
factories[ConfigurationCacheStartParameterAccessor.Factory::class] = ConfigurationCacheStartParameterAccessorG6.Factory()
}
@@ -0,0 +1,21 @@
/*
* 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.internal
import org.gradle.api.internal.StartParameterInternal
import org.gradle.api.invocation.Gradle
internal class ConfigurationCacheStartParameterAccessorG6(
private val gradle: Gradle,
) : ConfigurationCacheStartParameterAccessor {
override val isConfigurationCacheRequested by lazy {
(gradle.startParameter as StartParameterInternal).isConfigurationCache
}
internal class Factory : ConfigurationCacheStartParameterAccessor.Factory {
override fun getInstance(gradle: Gradle) = ConfigurationCacheStartParameterAccessorG6(gradle)
}
}