[MPP] Use SetProperty in CInteropCommonizerTask for configuration avoidance

^KT-58712
This commit is contained in:
Timofey Solonin
2023-06-27 16:16:29 +02:00
committed by Space Team
parent 57cbab7d8e
commit a1db10c5fe
4 changed files with 9 additions and 19 deletions
@@ -150,7 +150,7 @@ open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget> : AbstractKotl
} }
project.commonizeCInteropTask?.configure { commonizeCInteropTask -> project.commonizeCInteropTask?.configure { commonizeCInteropTask ->
commonizeCInteropTask.from((interopTask.get())) commonizeCInteropTask.from(interopTask)
} }
val interopOutput = project.files(interopTask.map { it.outputFileProvider }) val interopOutput = project.files(interopTask.map { it.outputFileProvider })
@@ -12,6 +12,7 @@ import org.gradle.api.model.ObjectFactory
import org.gradle.api.provider.ListProperty import org.gradle.api.provider.ListProperty
import org.gradle.api.provider.Property import org.gradle.api.provider.Property
import org.gradle.api.provider.Provider import org.gradle.api.provider.Provider
import org.gradle.api.provider.SetProperty
import org.gradle.api.tasks.* import org.gradle.api.tasks.*
import org.gradle.process.ExecOperations import org.gradle.process.ExecOperations
import org.jetbrains.kotlin.commonizer.* import org.jetbrains.kotlin.commonizer.*
@@ -136,7 +137,7 @@ internal open class CInteropCommonizerTask
(group.targets + group.targets.allLeaves()).map { target -> (group.targets + group.targets.allLeaves()).map { target ->
val externalDependencyFiles: List<FileCollection> = when (target) { val externalDependencyFiles: List<FileCollection> = when (target) {
is LeafCommonizerTarget -> { is LeafCommonizerTarget -> {
cinterops cinterops.get()
.filter { cinterop -> cinterop.identifier in group.interops && cinterop.konanTarget == target.konanTarget } .filter { cinterop -> cinterop.identifier in group.interops && cinterop.konanTarget == target.konanTarget }
.map { cinterop -> cinterop.dependencies } .map { cinterop -> cinterop.dependencies }
} }
@@ -170,25 +171,16 @@ internal open class CInteropCommonizerTask
} }
@get:Nested @get:Nested
internal var cinterops = setOf<CInteropGist>() internal val cinterops: SetProperty<CInteropGist> = objectFactory.setProperty<CInteropGist>()
private set
@get:OutputDirectories @get:OutputDirectories
val allOutputDirectories: Set<File> val allOutputDirectories: Set<File>
get() = allInteropGroups.getOrThrow().map { outputDirectory(it) }.toSet() get() = allInteropGroups.getOrThrow().map { outputDirectory(it) }.toSet()
fun from(vararg tasks: CInteropProcess) = from( internal fun from(task: TaskProvider<CInteropProcess>) {
tasks.toList() dependsOn(task)
.onEach { task -> this.dependsOn(task) } cinterops.add(task.map { it.toGist() })
.map { task -> task.toGist() }
)
internal fun from(vararg cinterop: CInteropGist) {
from(cinterop.toList())
}
internal fun from(cinterops: List<CInteropGist>) {
this.cinterops += cinterops
} }
@TaskAction @TaskAction
@@ -197,7 +189,7 @@ internal open class CInteropCommonizerTask
} }
private fun commonize(group: CInteropCommonizerGroup) { private fun commonize(group: CInteropCommonizerGroup) {
val cinteropsForTarget = cinterops.filter { cinterop -> cinterop.identifier in group.interops } val cinteropsForTarget = cinterops.get().filter { cinterop -> cinterop.identifier in group.interops }
outputDirectory(group).deleteRecursively() outputDirectory(group).deleteRecursively()
if (cinteropsForTarget.isEmpty()) return if (cinteropsForTarget.isEmpty()) return
@@ -21,7 +21,6 @@ internal class CompilerPluginData(
internal class SharedCompilationData( internal class SharedCompilationData(
val manifestFile: File, val manifestFile: File,
val isAllowCommonizer: Boolean,
val refinesPaths: FileCollection, val refinesPaths: FileCollection,
) )
@@ -419,7 +419,6 @@ internal constructor(
.map { it + (languageSettings as DefaultLanguageSettingsBuilder).freeCompilerArgsForNonImport } .map { it + (languageSettings as DefaultLanguageSettingsBuilder).freeCompilerArgsForNonImport }
private val runnerSettings = KotlinNativeCompilerRunner.Settings.fromProject(project) private val runnerSettings = KotlinNativeCompilerRunner.Settings.fromProject(project)
private val isAllowCommonizer: Boolean by lazy { project.isAllowCommonizer() }
// endregion. // endregion.
@Suppress("DeprecatedCallableAddReplaceWith") @Suppress("DeprecatedCallableAddReplaceWith")
@@ -507,7 +506,7 @@ internal constructor(
properties[KLIB_PROPERTY_NATIVE_TARGETS] = konanTargetsForManifest properties[KLIB_PROPERTY_NATIVE_TARGETS] = konanTargetsForManifest
properties.saveToFile(org.jetbrains.kotlin.konan.file.File(manifestFile.toPath())) properties.saveToFile(org.jetbrains.kotlin.konan.file.File(manifestFile.toPath()))
return SharedCompilationData(manifestFile, isAllowCommonizer, refinesModule) return SharedCompilationData(manifestFile, refinesModule)
} }
@TaskAction @TaskAction