[Gradle] Migrate from ChangesFiles to SourcesChanges
It allows getting rid of the dependency on `:compiler:incremental-compilation-impl` #KT-61449 In Progress
This commit is contained in:
committed by
Space Team
parent
4eb468443a
commit
3fb1f7bf42
@@ -65,7 +65,7 @@ public final class org/jetbrains/kotlin/buildtools/api/SharedApiClassesClassLoad
|
|||||||
public static final fun newInstance ()Ljava/lang/ClassLoader;
|
public static final fun newInstance ()Ljava/lang/ClassLoader;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract interface class org/jetbrains/kotlin/buildtools/api/SourcesChanges {
|
public abstract interface class org/jetbrains/kotlin/buildtools/api/SourcesChanges : java/io/Serializable {
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class org/jetbrains/kotlin/buildtools/api/SourcesChanges$Known : org/jetbrains/kotlin/buildtools/api/SourcesChanges {
|
public final class org/jetbrains/kotlin/buildtools/api/SourcesChanges$Known : org/jetbrains/kotlin/buildtools/api/SourcesChanges {
|
||||||
|
|||||||
+2
-2
@@ -6,12 +6,12 @@
|
|||||||
package org.jetbrains.kotlin.buildtools.api
|
package org.jetbrains.kotlin.buildtools.api
|
||||||
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
import java.io.Serializable
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A hierarchy representing source files changes for incremental compilation
|
* A hierarchy representing source files changes for incremental compilation
|
||||||
*/
|
*/
|
||||||
@ExperimentalBuildToolsApi
|
public sealed interface SourcesChanges : Serializable {
|
||||||
public sealed interface SourcesChanges {
|
|
||||||
/**
|
/**
|
||||||
* A marker object stating that the API consumer cannot calculate changes (either because it's an initial build or for some other reason).
|
* A marker object stating that the API consumer cannot calculate changes (either because it's an initial build or for some other reason).
|
||||||
* The Build Tools API will not enable its source file changes detector in this mode, expecting the API consumer to provide file changes as [Known] for the consequent builds.
|
* The Build Tools API will not enable its source file changes detector in this mode, expecting the API consumer to provide file changes as [Known] for the consequent builds.
|
||||||
|
|||||||
+4
-4
@@ -9,6 +9,7 @@ import org.gradle.api.logging.Logger
|
|||||||
import org.jetbrains.kotlin.build.report.metrics.*
|
import org.jetbrains.kotlin.build.report.metrics.*
|
||||||
import org.jetbrains.kotlin.build.report.statistics.StatTag
|
import org.jetbrains.kotlin.build.report.statistics.StatTag
|
||||||
import org.jetbrains.kotlin.buildtools.api.KotlinLogger
|
import org.jetbrains.kotlin.buildtools.api.KotlinLogger
|
||||||
|
import org.jetbrains.kotlin.buildtools.api.SourcesChanges
|
||||||
import org.jetbrains.kotlin.cli.common.ExitCode
|
import org.jetbrains.kotlin.cli.common.ExitCode
|
||||||
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
||||||
import org.jetbrains.kotlin.config.Services
|
import org.jetbrains.kotlin.config.Services
|
||||||
@@ -20,7 +21,6 @@ import org.jetbrains.kotlin.gradle.plugin.internal.state.TaskLoggers
|
|||||||
import org.jetbrains.kotlin.gradle.report.*
|
import org.jetbrains.kotlin.gradle.report.*
|
||||||
import org.jetbrains.kotlin.gradle.tasks.*
|
import org.jetbrains.kotlin.gradle.tasks.*
|
||||||
import org.jetbrains.kotlin.gradle.utils.stackTraceAsString
|
import org.jetbrains.kotlin.gradle.utils.stackTraceAsString
|
||||||
import org.jetbrains.kotlin.incremental.ChangedFiles
|
|
||||||
import org.jetbrains.kotlin.incremental.ClasspathChanges
|
import org.jetbrains.kotlin.incremental.ClasspathChanges
|
||||||
import org.jetbrains.kotlin.incremental.IncrementalModuleInfo
|
import org.jetbrains.kotlin.incremental.IncrementalModuleInfo
|
||||||
import org.jetbrains.kotlin.incremental.util.ExceptionLocation
|
import org.jetbrains.kotlin.incremental.util.ExceptionLocation
|
||||||
@@ -309,12 +309,12 @@ internal class GradleKotlinCompilerWork @Inject constructor(
|
|||||||
bufferingMessageCollector: GradleBufferingMessageCollector
|
bufferingMessageCollector: GradleBufferingMessageCollector
|
||||||
): CompileService.CallResult<Int> {
|
): CompileService.CallResult<Int> {
|
||||||
val icEnv = incrementalCompilationEnvironment ?: error("incrementalCompilationEnvironment is null!")
|
val icEnv = incrementalCompilationEnvironment ?: error("incrementalCompilationEnvironment is null!")
|
||||||
val knownChangedFiles = icEnv.changedFiles as? ChangedFiles.Known
|
val knownChangedFiles = icEnv.changedFiles as? SourcesChanges.Known
|
||||||
val requestedCompilationResults = requestedCompilationResults()
|
val requestedCompilationResults = requestedCompilationResults()
|
||||||
val compilationOptions = IncrementalCompilationOptions(
|
val compilationOptions = IncrementalCompilationOptions(
|
||||||
areFileChangesKnown = knownChangedFiles != null,
|
areFileChangesKnown = knownChangedFiles != null,
|
||||||
modifiedFiles = knownChangedFiles?.modified,
|
modifiedFiles = knownChangedFiles?.modifiedFiles,
|
||||||
deletedFiles = knownChangedFiles?.removed,
|
deletedFiles = knownChangedFiles?.removedFiles,
|
||||||
classpathChanges = icEnv.classpathChanges,
|
classpathChanges = icEnv.classpathChanges,
|
||||||
workingDir = icEnv.workingDir,
|
workingDir = icEnv.workingDir,
|
||||||
reportCategories = reportCategories(isVerbose),
|
reportCategories = reportCategories(isVerbose),
|
||||||
|
|||||||
+2
-2
@@ -5,14 +5,14 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.compilerRunner
|
package org.jetbrains.kotlin.compilerRunner
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.buildtools.api.SourcesChanges
|
||||||
import org.jetbrains.kotlin.daemon.common.MultiModuleICSettings
|
import org.jetbrains.kotlin.daemon.common.MultiModuleICSettings
|
||||||
import org.jetbrains.kotlin.incremental.ChangedFiles
|
|
||||||
import org.jetbrains.kotlin.incremental.ClasspathChanges
|
import org.jetbrains.kotlin.incremental.ClasspathChanges
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.Serializable
|
import java.io.Serializable
|
||||||
|
|
||||||
internal class IncrementalCompilationEnvironment(
|
internal class IncrementalCompilationEnvironment(
|
||||||
val changedFiles: ChangedFiles,
|
val changedFiles: SourcesChanges,
|
||||||
val classpathChanges: ClasspathChanges,
|
val classpathChanges: ClasspathChanges,
|
||||||
val workingDir: File,
|
val workingDir: File,
|
||||||
val rootProjectDir: File,
|
val rootProjectDir: File,
|
||||||
|
|||||||
+1
-9
@@ -27,18 +27,10 @@ import org.jetbrains.kotlin.gradle.plugin.internal.BuildIdService
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.internal.state.TaskLoggers
|
import org.jetbrains.kotlin.gradle.plugin.internal.state.TaskLoggers
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompilerExecutionStrategy
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompilerExecutionStrategy
|
||||||
import org.jetbrains.kotlin.gradle.tasks.throwExceptionIfCompilationFailed
|
import org.jetbrains.kotlin.gradle.tasks.throwExceptionIfCompilationFailed
|
||||||
import org.jetbrains.kotlin.incremental.ChangedFiles
|
|
||||||
import org.jetbrains.kotlin.incremental.ClasspathChanges
|
import org.jetbrains.kotlin.incremental.ClasspathChanges
|
||||||
import org.slf4j.LoggerFactory
|
import org.slf4j.LoggerFactory
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
@OptIn(ExperimentalBuildToolsApi::class)
|
|
||||||
private val ChangedFiles.asSourcesChanges: SourcesChanges
|
|
||||||
get() = when (this) {
|
|
||||||
is ChangedFiles.Known -> SourcesChanges.Known(modified, removed)
|
|
||||||
is ChangedFiles.Unknown -> SourcesChanges.Unknown
|
|
||||||
}
|
|
||||||
|
|
||||||
internal abstract class BuildToolsApiCompilationWork : WorkAction<BuildToolsApiCompilationWork.BuildToolsApiCompilationParameters> {
|
internal abstract class BuildToolsApiCompilationWork : WorkAction<BuildToolsApiCompilationWork.BuildToolsApiCompilationParameters> {
|
||||||
internal interface BuildToolsApiCompilationParameters : WorkParameters {
|
internal interface BuildToolsApiCompilationParameters : WorkParameters {
|
||||||
val buildIdService: Property<BuildIdService>
|
val buildIdService: Property<BuildIdService>
|
||||||
@@ -113,7 +105,7 @@ internal abstract class BuildToolsApiCompilationWork : WorkAction<BuildToolsApiC
|
|||||||
}
|
}
|
||||||
jvmCompilationConfig.useIncrementalCompilation(
|
jvmCompilationConfig.useIncrementalCompilation(
|
||||||
icEnv.workingDir,
|
icEnv.workingDir,
|
||||||
icEnv.changedFiles.asSourcesChanges,
|
icEnv.changedFiles,
|
||||||
classpathSnapshotsParameters,
|
classpathSnapshotsParameters,
|
||||||
classpathSnapshotsConfig,
|
classpathSnapshotsConfig,
|
||||||
)
|
)
|
||||||
|
|||||||
+2
-2
@@ -31,12 +31,12 @@ import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.internal.state.TaskExecutionResults
|
import org.jetbrains.kotlin.gradle.plugin.internal.state.TaskExecutionResults
|
||||||
import org.jetbrains.kotlin.build.report.statistics.BuildStartParameters
|
import org.jetbrains.kotlin.build.report.statistics.BuildStartParameters
|
||||||
import org.jetbrains.kotlin.build.report.statistics.StatTag
|
import org.jetbrains.kotlin.build.report.statistics.StatTag
|
||||||
|
import org.jetbrains.kotlin.buildtools.api.SourcesChanges
|
||||||
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
|
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
|
||||||
import org.jetbrains.kotlin.gradle.report.BuildReportsService.Companion.getStartParameters
|
import org.jetbrains.kotlin.gradle.report.BuildReportsService.Companion.getStartParameters
|
||||||
import org.jetbrains.kotlin.gradle.report.data.BuildOperationRecord
|
import org.jetbrains.kotlin.gradle.report.data.BuildOperationRecord
|
||||||
import org.jetbrains.kotlin.gradle.tasks.withType
|
import org.jetbrains.kotlin.gradle.tasks.withType
|
||||||
import org.jetbrains.kotlin.gradle.utils.SingleActionPerProject
|
import org.jetbrains.kotlin.gradle.utils.SingleActionPerProject
|
||||||
import org.jetbrains.kotlin.incremental.ChangedFiles
|
|
||||||
import org.jetbrains.kotlin.statistics.metrics.BooleanMetrics
|
import org.jetbrains.kotlin.statistics.metrics.BooleanMetrics
|
||||||
import org.jetbrains.kotlin.statistics.metrics.NumericalMetrics
|
import org.jetbrains.kotlin.statistics.metrics.NumericalMetrics
|
||||||
import java.util.concurrent.ConcurrentHashMap
|
import java.util.concurrent.ConcurrentHashMap
|
||||||
@@ -330,7 +330,7 @@ internal class TaskRecord(
|
|||||||
override val skipMessage: String?,
|
override val skipMessage: String?,
|
||||||
override val icLogLines: List<String>,
|
override val icLogLines: List<String>,
|
||||||
val kotlinLanguageVersion: KotlinVersion?,
|
val kotlinLanguageVersion: KotlinVersion?,
|
||||||
val changedFiles: ChangedFiles? = null,
|
val changedFiles: SourcesChanges? = null,
|
||||||
val compilerArguments: Array<String> = emptyArray(),
|
val compilerArguments: Array<String> = emptyArray(),
|
||||||
val statTags: Set<StatTag> = emptySet(),
|
val statTags: Set<StatTag> = emptySet(),
|
||||||
) : BuildOperationRecord {
|
) : BuildOperationRecord {
|
||||||
|
|||||||
+2
-2
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.build.report.metrics.GradleBuildPerformanceMetric
|
|||||||
import org.jetbrains.kotlin.build.report.metrics.GradleBuildTime
|
import org.jetbrains.kotlin.build.report.metrics.GradleBuildTime
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
|
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
|
||||||
import org.jetbrains.kotlin.build.report.statistics.StatTag
|
import org.jetbrains.kotlin.build.report.statistics.StatTag
|
||||||
import org.jetbrains.kotlin.incremental.ChangedFiles
|
import org.jetbrains.kotlin.buildtools.api.SourcesChanges
|
||||||
|
|
||||||
internal class TaskExecutionResult(
|
internal class TaskExecutionResult(
|
||||||
val buildMetrics: BuildMetrics<GradleBuildTime, GradleBuildPerformanceMetric>,
|
val buildMetrics: BuildMetrics<GradleBuildTime, GradleBuildPerformanceMetric>,
|
||||||
@@ -20,7 +20,7 @@ internal class TaskExecutionResult(
|
|||||||
|
|
||||||
internal class TaskExecutionInfo(
|
internal class TaskExecutionInfo(
|
||||||
val kotlinLanguageVersion: KotlinVersion? = null,
|
val kotlinLanguageVersion: KotlinVersion? = null,
|
||||||
val changedFiles: ChangedFiles? = null,
|
val changedFiles: SourcesChanges? = null,
|
||||||
val compilerArguments: Array<String> = emptyArray(),
|
val compilerArguments: Array<String> = emptyArray(),
|
||||||
val tags: Set<StatTag> = emptySet(),
|
val tags: Set<StatTag> = emptySet(),
|
||||||
)
|
)
|
||||||
|
|||||||
+3
-3
@@ -11,8 +11,8 @@ import org.gradle.tooling.events.task.TaskSkippedResult
|
|||||||
import org.gradle.tooling.events.task.TaskSuccessResult
|
import org.gradle.tooling.events.task.TaskSuccessResult
|
||||||
import org.jetbrains.kotlin.build.report.metrics.*
|
import org.jetbrains.kotlin.build.report.metrics.*
|
||||||
import org.jetbrains.kotlin.build.report.statistics.StatTag
|
import org.jetbrains.kotlin.build.report.statistics.StatTag
|
||||||
|
import org.jetbrains.kotlin.buildtools.api.SourcesChanges
|
||||||
import org.jetbrains.kotlin.gradle.report.data.BuildOperationRecord
|
import org.jetbrains.kotlin.gradle.report.data.BuildOperationRecord
|
||||||
import org.jetbrains.kotlin.incremental.ChangedFiles
|
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
|
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
|
||||||
import org.jetbrains.kotlin.gradle.report.data.GradleCompileStatisticsData
|
import org.jetbrains.kotlin.gradle.report.data.GradleCompileStatisticsData
|
||||||
@@ -71,8 +71,8 @@ internal fun prepareData(
|
|||||||
buildMetrics, startTime, System.currentTimeMillis()
|
buildMetrics, startTime, System.currentTimeMillis()
|
||||||
)
|
)
|
||||||
val buildAttributes = collectBuildAttributes(buildMetrics)
|
val buildAttributes = collectBuildAttributes(buildMetrics)
|
||||||
val changes = if (buildOperationRecord is TaskRecord && buildOperationRecord.changedFiles is ChangedFiles.Known) {
|
val changes = if (buildOperationRecord is TaskRecord && buildOperationRecord.changedFiles is SourcesChanges.Known) {
|
||||||
buildOperationRecord.changedFiles.modified.map { it.absolutePath } + buildOperationRecord.changedFiles.removed.map { it.absolutePath }
|
buildOperationRecord.changedFiles.modifiedFiles.map { it.absolutePath } + buildOperationRecord.changedFiles.removedFiles.map { it.absolutePath }
|
||||||
} else {
|
} else {
|
||||||
emptyList<String>()
|
emptyList<String>()
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -15,6 +15,7 @@ import org.gradle.api.tasks.*
|
|||||||
import org.gradle.work.*
|
import org.gradle.work.*
|
||||||
import org.gradle.workers.WorkerExecutor
|
import org.gradle.workers.WorkerExecutor
|
||||||
import org.jetbrains.kotlin.build.report.metrics.*
|
import org.jetbrains.kotlin.build.report.metrics.*
|
||||||
|
import org.jetbrains.kotlin.buildtools.api.SourcesChanges
|
||||||
import org.jetbrains.kotlin.cli.common.CompilerSystemProperties
|
import org.jetbrains.kotlin.cli.common.CompilerSystemProperties
|
||||||
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
||||||
import org.jetbrains.kotlin.compilerRunner.CompilerExecutionSettings
|
import org.jetbrains.kotlin.compilerRunner.CompilerExecutionSettings
|
||||||
@@ -37,7 +38,6 @@ import org.jetbrains.kotlin.gradle.plugin.internal.UsesBuildIdProviderService
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
|
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
|
||||||
import org.jetbrains.kotlin.gradle.report.*
|
import org.jetbrains.kotlin.gradle.report.*
|
||||||
import org.jetbrains.kotlin.gradle.utils.*
|
import org.jetbrains.kotlin.gradle.utils.*
|
||||||
import org.jetbrains.kotlin.incremental.ChangedFiles
|
|
||||||
import org.jetbrains.kotlin.incremental.IncrementalCompilerRunner
|
import org.jetbrains.kotlin.incremental.IncrementalCompilerRunner
|
||||||
import org.jetbrains.kotlin.statistics.metrics.BooleanMetrics
|
import org.jetbrains.kotlin.statistics.metrics.BooleanMetrics
|
||||||
import org.jetbrains.kotlin.statistics.metrics.StringMetrics
|
import org.jetbrains.kotlin.statistics.metrics.StringMetrics
|
||||||
@@ -332,7 +332,7 @@ abstract class AbstractKotlinCompile<T : CommonCompilerArguments> @Inject constr
|
|||||||
inputChanges: InputChanges,
|
inputChanges: InputChanges,
|
||||||
incrementalProps: List<FileCollection>
|
incrementalProps: List<FileCollection>
|
||||||
) = if (!inputChanges.isIncremental) {
|
) = if (!inputChanges.isIncremental) {
|
||||||
ChangedFiles.Unknown()
|
SourcesChanges.Unknown
|
||||||
} else {
|
} else {
|
||||||
incrementalProps
|
incrementalProps
|
||||||
.fold(mutableListOf<File>() to mutableListOf<File>()) { (modified, removed), prop ->
|
.fold(mutableListOf<File>() to mutableListOf<File>()) { (modified, removed), prop ->
|
||||||
@@ -346,7 +346,7 @@ abstract class AbstractKotlinCompile<T : CommonCompilerArguments> @Inject constr
|
|||||||
modified to removed
|
modified to removed
|
||||||
}
|
}
|
||||||
.run {
|
.run {
|
||||||
ChangedFiles.Known(first, second)
|
SourcesChanges.Known(first, second)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user