[Gradle] Get rid of StartParameterInternal.isConfigurationCache calls
#KT-61457 Fixed
This commit is contained in:
committed by
Space Team
parent
51fe1fd3cc
commit
57294f91fe
+2
-2
@@ -15,10 +15,10 @@ import org.gradle.api.services.BuildServiceParameters
|
||||
import org.gradle.api.tasks.Internal
|
||||
import org.jetbrains.kotlin.cli.common.CompilerSystemProperties
|
||||
import org.jetbrains.kotlin.gradle.plugin.internal.configurationTimePropertiesAccessor
|
||||
import org.jetbrains.kotlin.gradle.plugin.internal.isConfigurationCacheRequested
|
||||
import org.jetbrains.kotlin.gradle.plugin.internal.usedAtConfigurationTime
|
||||
import org.jetbrains.kotlin.gradle.tasks.withType
|
||||
import org.jetbrains.kotlin.gradle.utils.SingleActionPerProject
|
||||
import org.jetbrains.kotlin.gradle.utils.isConfigurationCacheAvailable
|
||||
|
||||
internal interface UsesCompilerSystemPropertiesService : Task {
|
||||
@get:Internal
|
||||
@@ -67,7 +67,7 @@ internal abstract class CompilerSystemPropertiesService : BuildService<CompilerS
|
||||
"${CompilerSystemPropertiesService::class.java.canonicalName}_${CompilerSystemPropertiesService::class.java.classLoader.hashCode()}",
|
||||
CompilerSystemPropertiesService::class.java
|
||||
) { service ->
|
||||
if (isConfigurationCacheAvailable(project.gradle)) {
|
||||
if (project.isConfigurationCacheRequested) {
|
||||
service.parameters.properties.set(
|
||||
CompilerSystemProperties.values()
|
||||
.filterNot { it.alwaysDirectAccess }
|
||||
|
||||
+2
-2
@@ -11,8 +11,8 @@ import org.gradle.api.Project
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_NATIVE_USE_XCODE_MESSAGE_STYLE
|
||||
import org.jetbrains.kotlin.gradle.plugin.cocoapods.KotlinCocoapodsPlugin
|
||||
import org.jetbrains.kotlin.gradle.plugin.internal.isConfigurationCacheRequested
|
||||
import org.jetbrains.kotlin.gradle.utils.getOrPutRootProjectProperty
|
||||
import org.jetbrains.kotlin.gradle.utils.isConfigurationCacheAvailable
|
||||
|
||||
internal val Project.useXcodeMessageStyle: Boolean
|
||||
get() = getOrPutRootProjectProperty("$KOTLIN_NATIVE_USE_XCODE_MESSAGE_STYLE.extra") {
|
||||
@@ -32,7 +32,7 @@ internal fun Project.addBuildListenerForXcode() {
|
||||
return
|
||||
}
|
||||
|
||||
if (isConfigurationCacheAvailable(gradle)) {
|
||||
if (isConfigurationCacheRequested) {
|
||||
// TODO https://youtrack.jetbrains.com/issue/KT-55832
|
||||
// Configuration cache case will be supported later
|
||||
return
|
||||
|
||||
+5
-5
@@ -20,10 +20,10 @@ import org.gradle.util.GradleVersion
|
||||
import org.jetbrains.kotlin.gradle.logging.kotlinDebug
|
||||
import org.jetbrains.kotlin.gradle.plugin.BuildEventsListenerRegistryHolder
|
||||
import org.jetbrains.kotlin.gradle.plugin.StatisticsBuildFlowManager
|
||||
import org.jetbrains.kotlin.gradle.plugin.internal.isConfigurationCacheRequested
|
||||
import org.jetbrains.kotlin.gradle.plugin.internal.isProjectIsolationEnabled
|
||||
import org.jetbrains.kotlin.gradle.report.BuildReportType
|
||||
import org.jetbrains.kotlin.gradle.report.reportingSettings
|
||||
import org.jetbrains.kotlin.gradle.utils.isConfigurationCacheAvailable
|
||||
import org.jetbrains.kotlin.statistics.metrics.BooleanMetrics
|
||||
import org.jetbrains.kotlin.statistics.metrics.IStatisticsValuesConsumer
|
||||
import org.jetbrains.kotlin.statistics.metrics.NumericalMetrics
|
||||
@@ -46,13 +46,13 @@ internal abstract class BuildFlowService : BuildService<BuildFlowService.Paramet
|
||||
companion object {
|
||||
private val serviceName = "${BuildFlowService::class.simpleName}_${BuildFlowService::class.java.classLoader.hashCode()}"
|
||||
|
||||
private fun fusStatisticsAvailable(gradle: Gradle): Boolean {
|
||||
private fun fusStatisticsAvailable(project: Project): Boolean {
|
||||
return when {
|
||||
//known issue for Gradle with configurationCache: https://github.com/gradle/gradle/issues/20001
|
||||
GradleVersion.current().baseVersion < GradleVersion.version("7.4") -> !isConfigurationCacheAvailable(gradle)
|
||||
GradleVersion.current().baseVersion < GradleVersion.version("7.4") -> !project.isConfigurationCacheRequested
|
||||
GradleVersion.current().baseVersion < GradleVersion.version("8.1") -> true
|
||||
//known issue. Cant reuse cache if file is changed in gradle_user_home dir: KT-58768
|
||||
else -> !isConfigurationCacheAvailable(gradle)
|
||||
else -> !project.isConfigurationCacheRequested
|
||||
}
|
||||
}
|
||||
fun registerIfAbsent(
|
||||
@@ -64,7 +64,7 @@ internal abstract class BuildFlowService : BuildService<BuildFlowService.Paramet
|
||||
return it.service as Provider<BuildFlowService>
|
||||
}
|
||||
|
||||
val fusStatisticsAvailable = fusStatisticsAvailable(project.gradle)
|
||||
val fusStatisticsAvailable = fusStatisticsAvailable(project)
|
||||
val buildScanReportEnabled = reportingSettings(project).buildReportOutputs.contains(BuildReportType.BUILD_SCAN)
|
||||
|
||||
//Workaround for known issues for Gradle 8+: https://github.com/gradle/gradle/issues/24887:
|
||||
|
||||
+5
-4
@@ -36,13 +36,13 @@ import org.jetbrains.kotlin.gradle.report.BuildReportsService.Companion.getStart
|
||||
import org.jetbrains.kotlin.gradle.report.data.BuildOperationRecord
|
||||
import org.jetbrains.kotlin.gradle.tasks.withType
|
||||
import org.jetbrains.kotlin.gradle.utils.SingleActionPerProject
|
||||
import org.jetbrains.kotlin.gradle.utils.isConfigurationCacheAvailable
|
||||
import org.jetbrains.kotlin.incremental.ChangedFiles
|
||||
import org.jetbrains.kotlin.statistics.metrics.BooleanMetrics
|
||||
import org.jetbrains.kotlin.statistics.metrics.NumericalMetrics
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
import java.util.concurrent.ConcurrentLinkedQueue
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
|
||||
import org.jetbrains.kotlin.gradle.plugin.internal.isConfigurationCacheRequested
|
||||
import java.lang.management.ManagementFactory
|
||||
|
||||
internal interface UsesBuildMetricsService : Task {
|
||||
@@ -220,7 +220,7 @@ abstract class BuildMetricsService : BuildService<BuildMetricsService.Parameters
|
||||
}
|
||||
it.parameters.projectDir.set(project.rootProject.layout.projectDirectory)
|
||||
//init gradle tags for build scan and http reports
|
||||
it.parameters.buildConfigurationTags.value(setupTags(project.gradle))
|
||||
it.parameters.buildConfigurationTags.value(setupTags(project))
|
||||
}.also {
|
||||
subscribeForTaskEvents(project, it)
|
||||
}
|
||||
@@ -294,9 +294,10 @@ abstract class BuildMetricsService : BuildService<BuildMetricsService.Parameters
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupTags(gradle: Gradle): ArrayList<StatTag> {
|
||||
private fun setupTags(project: Project): ArrayList<StatTag> {
|
||||
val gradle = project.gradle
|
||||
val additionalTags = ArrayList<StatTag>()
|
||||
if (isConfigurationCacheAvailable(gradle)) {
|
||||
if (project.isConfigurationCacheRequested) {
|
||||
additionalTags.add(StatTag.CONFIGURATION_CACHE)
|
||||
}
|
||||
if (gradle.startParameter.isBuildCacheEnabled) {
|
||||
|
||||
+2
-2
@@ -13,10 +13,10 @@ import org.gradle.api.plugins.ExtraPropertiesExtension
|
||||
import org.gradle.api.tasks.TaskState
|
||||
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.addExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.internal.isConfigurationCacheRequested
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.disambiguateName
|
||||
import org.jetbrains.kotlin.gradle.targets.native.tasks.NativePerformanceReport
|
||||
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
||||
import org.jetbrains.kotlin.gradle.utils.isConfigurationCacheAvailable
|
||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
|
||||
@@ -66,7 +66,7 @@ open class KotlinPerformancePlugin : Plugin<Project> {
|
||||
|
||||
private fun configureTasks(project: Project, performanceExtension: PerformanceExtension) {
|
||||
// Add time listener.
|
||||
if (!isConfigurationCacheAvailable(project.gradle)) {
|
||||
if (!project.isConfigurationCacheRequested) {
|
||||
val timeListener = TaskTimerListener(project)
|
||||
project.gradle.addListener(timeListener)
|
||||
performanceExtension.trackedBinaries.forEach { binary ->
|
||||
|
||||
+3
-10
@@ -8,27 +8,20 @@ package org.jetbrains.kotlin.gradle.utils
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.Task
|
||||
import org.gradle.api.internal.StartParameterInternal
|
||||
import org.gradle.api.invocation.Gradle
|
||||
import org.gradle.api.provider.Provider
|
||||
import org.jetbrains.kotlin.gradle.plugin.internal.configurationTimePropertiesAccessor
|
||||
import org.jetbrains.kotlin.gradle.plugin.internal.isConfigurationCacheRequested
|
||||
import org.jetbrains.kotlin.gradle.plugin.internal.usedAtConfigurationTime
|
||||
|
||||
internal fun isConfigurationCacheAvailable(gradle: Gradle) =
|
||||
try {
|
||||
val startParameters = gradle.startParameter
|
||||
startParameters.javaClass.getMethod("isConfigurationCache").invoke(startParameters) as? Boolean
|
||||
} catch (_: Exception) {
|
||||
null
|
||||
} ?: false
|
||||
|
||||
internal fun Project.readSystemPropertyAtConfigurationTime(key: String): Provider<String> {
|
||||
return providers.systemProperty(key).usedAtConfigurationTime(configurationTimePropertiesAccessor)
|
||||
}
|
||||
|
||||
fun Task.notCompatibleWithConfigurationCacheCompat(reason: String) {
|
||||
val reportConfigurationCacheWarnings = try {
|
||||
val requested = project.isConfigurationCacheRequested
|
||||
val startParameters = project.gradle.startParameter as? StartParameterInternal
|
||||
startParameters?.run { isConfigurationCache && !isConfigurationCacheQuiet } ?: false
|
||||
requested && (startParameters?.isConfigurationCacheQuiet ?: false)
|
||||
} catch (_: IncompatibleClassChangeError) { // for cases when gradle is way too old
|
||||
false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user