Introduce IncrementalCompilerRunner#makeServices
This commit is contained in:
+15
-7
@@ -135,7 +135,7 @@ abstract class IncrementalCompilerRunner<
|
|||||||
caches.platformCache.markDirty(dirtySources)
|
caches.platformCache.markDirty(dirtySources)
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract fun compareAndUpdateCache(caches: CacheManager, generatedFiles: List<GeneratedFile>): CompilationResult
|
protected abstract fun compareAndUpdateCache(services: Services, caches: CacheManager, generatedFiles: List<GeneratedFile>): CompilationResult
|
||||||
|
|
||||||
protected open fun preBuildHook(args: Args, compilationMode: CompilationMode) {}
|
protected open fun preBuildHook(args: Args, compilationMode: CompilationMode) {}
|
||||||
protected open fun postCompilationHook(exitCode: ExitCode) {}
|
protected open fun postCompilationHook(exitCode: ExitCode) {}
|
||||||
@@ -144,11 +144,22 @@ abstract class IncrementalCompilerRunner<
|
|||||||
protected open fun additionalDirtyLookupSymbols(): Iterable<LookupSymbol> =
|
protected open fun additionalDirtyLookupSymbols(): Iterable<LookupSymbol> =
|
||||||
emptyList()
|
emptyList()
|
||||||
|
|
||||||
|
protected open fun makeServices(
|
||||||
|
args: Args,
|
||||||
|
lookupTracker: LookupTracker,
|
||||||
|
caches: CacheManager,
|
||||||
|
compilationMode: CompilationMode
|
||||||
|
): Services.Builder =
|
||||||
|
Services.Builder().apply {
|
||||||
|
register(LookupTracker::class.java, lookupTracker)
|
||||||
|
register(CompilationCanceledStatus::class.java, EmptyCompilationCanceledStatus)
|
||||||
|
}
|
||||||
|
|
||||||
protected abstract fun runCompiler(
|
protected abstract fun runCompiler(
|
||||||
sourcesToCompile: Set<File>,
|
sourcesToCompile: Set<File>,
|
||||||
args: Args,
|
args: Args,
|
||||||
caches: CacheManager,
|
caches: CacheManager,
|
||||||
services: Services.Builder,
|
services: Services,
|
||||||
messageCollector: MessageCollector
|
messageCollector: MessageCollector
|
||||||
): ExitCode
|
): ExitCode
|
||||||
|
|
||||||
@@ -188,10 +199,7 @@ abstract class IncrementalCompilerRunner<
|
|||||||
val text = allSourcesToCompile.joinToString(separator = System.getProperty("line.separator")) { it.canonicalPath }
|
val text = allSourcesToCompile.joinToString(separator = System.getProperty("line.separator")) { it.canonicalPath }
|
||||||
dirtySourcesSinceLastTimeFile.writeText(text)
|
dirtySourcesSinceLastTimeFile.writeText(text)
|
||||||
|
|
||||||
val services = Services.Builder().apply {
|
val services = makeServices(args, lookupTracker, caches, compilationMode).build()
|
||||||
register(LookupTracker::class.java, lookupTracker)
|
|
||||||
register(CompilationCanceledStatus::class.java, EmptyCompilationCanceledStatus)
|
|
||||||
}
|
|
||||||
|
|
||||||
args.reportOutputFiles = true
|
args.reportOutputFiles = true
|
||||||
val outputItemsCollector = OutputItemsCollectorImpl()
|
val outputItemsCollector = OutputItemsCollectorImpl()
|
||||||
@@ -218,7 +226,7 @@ abstract class IncrementalCompilerRunner<
|
|||||||
allGeneratedFiles.addAll(generatedFiles)
|
allGeneratedFiles.addAll(generatedFiles)
|
||||||
caches.inputsCache.registerOutputForSourceFiles(generatedFiles)
|
caches.inputsCache.registerOutputForSourceFiles(generatedFiles)
|
||||||
caches.lookupCache.update(lookupTracker, sourcesToCompile, removedKotlinSources)
|
caches.lookupCache.update(lookupTracker, sourcesToCompile, removedKotlinSources)
|
||||||
val compilationResult = compareAndUpdateCache(caches, generatedFiles)
|
val compilationResult = compareAndUpdateCache(services, caches, generatedFiles)
|
||||||
|
|
||||||
if (compilationMode is CompilationMode.Rebuild) break
|
if (compilationMode is CompilationMode.Rebuild) break
|
||||||
|
|
||||||
|
|||||||
+17
-8
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler
|
|||||||
import org.jetbrains.kotlin.compilerRunner.ArgumentUtils
|
import org.jetbrains.kotlin.compilerRunner.ArgumentUtils
|
||||||
import org.jetbrains.kotlin.config.IncrementalCompilation
|
import org.jetbrains.kotlin.config.IncrementalCompilation
|
||||||
import org.jetbrains.kotlin.config.Services
|
import org.jetbrains.kotlin.config.Services
|
||||||
|
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||||
import org.jetbrains.kotlin.incremental.multiproject.ArtifactChangesProvider
|
import org.jetbrains.kotlin.incremental.multiproject.ArtifactChangesProvider
|
||||||
import org.jetbrains.kotlin.incremental.multiproject.ChangesRegistry
|
import org.jetbrains.kotlin.incremental.multiproject.ChangesRegistry
|
||||||
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
|
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
|
||||||
@@ -210,7 +211,7 @@ class IncrementalJvmCompilerRunner(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun compareAndUpdateCache(caches: IncrementalJvmCachesManager, generatedFiles: List<GeneratedFile>): CompilationResult =
|
override fun compareAndUpdateCache(services: Services, caches: IncrementalJvmCachesManager, generatedFiles: List<GeneratedFile>): CompilationResult =
|
||||||
updateIncrementalCache(generatedFiles, caches.platformCache)
|
updateIncrementalCache(generatedFiles, caches.platformCache)
|
||||||
|
|
||||||
override fun additionalDirtyFiles(
|
override fun additionalDirtyFiles(
|
||||||
@@ -256,11 +257,24 @@ class IncrementalJvmCompilerRunner(
|
|||||||
override fun additionalDirtyLookupSymbols(): Iterable<LookupSymbol> =
|
override fun additionalDirtyLookupSymbols(): Iterable<LookupSymbol> =
|
||||||
javaFilesProcessor.allChangedSymbols
|
javaFilesProcessor.allChangedSymbols
|
||||||
|
|
||||||
|
override fun makeServices(
|
||||||
|
args: K2JVMCompilerArguments,
|
||||||
|
lookupTracker: LookupTracker,
|
||||||
|
caches: IncrementalJvmCachesManager,
|
||||||
|
compilationMode: CompilationMode
|
||||||
|
): Services.Builder =
|
||||||
|
super.makeServices(args, lookupTracker, caches, compilationMode).apply {
|
||||||
|
val targetId = TargetId(args.moduleName!!, "java-production")
|
||||||
|
val targetToCache = mapOf(targetId to caches.platformCache)
|
||||||
|
val incrementalComponents = IncrementalCompilationComponentsImpl(targetToCache)
|
||||||
|
register(IncrementalCompilationComponents::class.java, incrementalComponents)
|
||||||
|
}
|
||||||
|
|
||||||
override fun runCompiler(
|
override fun runCompiler(
|
||||||
sourcesToCompile: Set<File>,
|
sourcesToCompile: Set<File>,
|
||||||
args: K2JVMCompilerArguments,
|
args: K2JVMCompilerArguments,
|
||||||
caches: IncrementalJvmCachesManager,
|
caches: IncrementalJvmCachesManager,
|
||||||
services: Services.Builder,
|
services: Services,
|
||||||
messageCollector: MessageCollector
|
messageCollector: MessageCollector
|
||||||
): ExitCode {
|
): ExitCode {
|
||||||
val compiler = K2JVMCompiler()
|
val compiler = K2JVMCompiler()
|
||||||
@@ -278,14 +292,9 @@ class IncrementalJvmCompilerRunner(
|
|||||||
args.buildFile = moduleFile.absolutePath
|
args.buildFile = moduleFile.absolutePath
|
||||||
|
|
||||||
try {
|
try {
|
||||||
val targetId = TargetId(args.buildFile!!, "java-production")
|
|
||||||
val targetToCache = mapOf(targetId to caches.platformCache)
|
|
||||||
val incrementalComponents = IncrementalCompilationComponentsImpl(targetToCache)
|
|
||||||
services.register(IncrementalCompilationComponents::class.java, incrementalComponents)
|
|
||||||
|
|
||||||
reporter.report { "compiling with args: ${ArgumentUtils.convertArgumentsToStringList(args)}" }
|
reporter.report { "compiling with args: ${ArgumentUtils.convertArgumentsToStringList(args)}" }
|
||||||
reporter.report { "compiling with classpath: ${classpath.toList().sorted().joinToString()}" }
|
reporter.report { "compiling with classpath: ${classpath.toList().sorted().joinToString()}" }
|
||||||
val exitCode = compiler.exec(messageCollector, services.build(), args)
|
val exitCode = compiler.exec(messageCollector, services, args)
|
||||||
reporter.reportCompileIteration(sourcesToCompile, exitCode)
|
reporter.reportCompileIteration(sourcesToCompile, exitCode)
|
||||||
return exitCode
|
return exitCode
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user