Skip to content

Commit e764de7

Browse files
ting-yuanKSP Auto Pick
authored and
KSP Auto Pick
committed
KSP1: better support of compilation avoidance
by setting up the incremental properties on classpathStructure instead of libraries. (cherry picked from commit 4eab36a)
1 parent 9b2d7d9 commit e764de7

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle/KotlinFactories.kt

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
package com.google.devtools.ksp.gradle
2121
import org.gradle.api.Project
2222
import org.gradle.api.Task
23+
import org.gradle.api.file.ConfigurableFileCollection
2324
import org.gradle.api.file.FileCollection
2425
import org.gradle.api.model.ObjectFactory
2526
import org.gradle.api.provider.ListProperty
@@ -30,14 +31,17 @@ import org.gradle.api.tasks.IgnoreEmptyDirectories
3031
import org.gradle.api.tasks.InputFiles
3132
import org.gradle.api.tasks.Internal
3233
import org.gradle.api.tasks.Nested
34+
import org.gradle.api.tasks.Optional
3335
import org.gradle.api.tasks.OutputDirectory
3436
import org.gradle.api.tasks.PathSensitive
3537
import org.gradle.api.tasks.PathSensitivity
3638
import org.gradle.api.tasks.SkipWhenEmpty
3739
import org.gradle.api.tasks.TaskProvider
3840
import org.gradle.process.CommandLineArgumentProvider
3941
import org.gradle.process.ExecOperations
42+
import org.gradle.work.Incremental
4043
import org.gradle.work.InputChanges
44+
import org.gradle.work.NormalizeLineEndings
4145
import org.gradle.workers.WorkerExecutor
4246
import org.jetbrains.kotlin.buildtools.api.SourcesChanges
4347
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
@@ -90,20 +94,12 @@ class KotlinFactories {
9094
KotlinCompileConfig(KotlinCompilationInfo(kotlinCompilation))
9195
.execute(kspTaskProvider as TaskProvider<KotlinCompile>)
9296

93-
// useClasspathSnapshot isn't configurable per task.
94-
// Workaround: enable the other path and ignore irrelevant changes
95-
// See [KotlinCompileConfig] in for details.
96-
// FIXME: make it configurable in upstream or support useClasspathSnapshot == true, if possible.
9797
kspTaskProvider.configure {
9898
val compilerOptions = kotlinCompilation.compilerOptions.options as KotlinJvmCompilerOptions
9999
KotlinJvmCompilerOptionsHelper.syncOptionsAsConvention(
100100
from = compilerOptions,
101101
into = it.compilerOptions
102102
)
103-
104-
if (it.classpathSnapshotProperties.useClasspathSnapshot.get()) {
105-
it.classpathSnapshotProperties.classpath.from(project.provider { it.libraries })
106-
}
107103
}
108104
}
109105
}
@@ -205,13 +201,22 @@ abstract class KspTaskJvm @Inject constructor(
205201
@get:OutputDirectory
206202
abstract val destination: Property<File>
207203

204+
@get:PathSensitive(PathSensitivity.NONE)
205+
@get:Incremental
206+
@get:IgnoreEmptyDirectories
207+
@get:NormalizeLineEndings
208+
@get:Optional
209+
@get:InputFiles
210+
abstract val classpathStructure: ConfigurableFileCollection
211+
208212
// Override incrementalProps to exclude irrelevant changes
209213
override val incrementalProps: List<FileCollection>
210214
get() = listOf(
211215
sources,
212216
javaSources,
213217
commonSourceSet,
214218
classpathSnapshotProperties.classpath,
219+
classpathStructure,
215220
)
216221

217222
// Overrding an internal function is hacky.

gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -498,6 +498,7 @@ class KspGradleSubplugin @Inject internal constructor(private val registry: Tool
498498
project.provider { processorClasspath }
499499
)
500500
)
501+
kspTask.classpathStructure.from(classStructureFiles)
501502
}
502503
// Don't support binary generation for non-JVM platforms yet.
503504
// FIXME: figure out how to add user generated libraries.

0 commit comments

Comments
 (0)