From 10692b5b7c02124c54fe7d66fd999d5a671c29a7 Mon Sep 17 00:00:00 2001 From: "sebastian.sellmair" Date: Thu, 1 Apr 2021 14:12:31 +0200 Subject: [PATCH] [Minor] Add commonizer classpath to HierarchicalNativeDistributionCommonizerTask --- .../native/internal/CInteropCommonizerTask.kt | 4 ++-- ...ierarchicalKotlinNativePlatformDependencies.kt | 12 +++--------- ...ierarchicalNativeDistributionCommonizerTask.kt | 15 ++++++++++++++- .../kotlin/gradle/utils/providerApiUtils.kt | 4 ++-- 4 files changed, 21 insertions(+), 14 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerTask.kt index a44e5d73813..7bd574c92d5 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerTask.kt @@ -24,7 +24,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.kotlinSourceSetsIncludingDefault import org.jetbrains.kotlin.gradle.plugin.sources.resolveAllDependsOnSourceSets import org.jetbrains.kotlin.gradle.targets.native.internal.CInteropCommonizerTask.CInteropGist import org.jetbrains.kotlin.gradle.tasks.CInteropProcess -import org.jetbrains.kotlin.gradle.utils.fileProvider +import org.jetbrains.kotlin.gradle.utils.filesProvider import org.jetbrains.kotlin.konan.target.KonanTarget import java.io.File @@ -180,7 +180,7 @@ private fun CInteropProcess.toGist(): CInteropGist { konanTarget = konanTarget, sourceSets = project.provider { settings.compilation.kotlinSourceSetsIncludingDefault }, libraryFile = outputFileProvider, - dependencies = project.fileProvider { settings.dependencyFiles }.filter(File::isValidDependency) + dependencies = project.filesProvider { settings.dependencyFiles }.filter(File::isValidDependency) ) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/HierarchicalKotlinNativePlatformDependencies.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/HierarchicalKotlinNativePlatformDependencies.kt index 224197866ff..79cb06172e3 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/HierarchicalKotlinNativePlatformDependencies.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/HierarchicalKotlinNativePlatformDependencies.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.gradle.targets.native.internal import org.gradle.api.Project -import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.FileCollection import org.jetbrains.kotlin.commonizer.HierarchicalCommonizerOutputLayout import org.jetbrains.kotlin.commonizer.KonanDistribution @@ -16,7 +15,7 @@ import org.jetbrains.kotlin.compilerRunner.konanHome import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.targets.metadata.getMetadataCompilationForSourceSet -import java.io.File +import org.jetbrains.kotlin.gradle.utils.filesProvider internal fun Project.setUpHierarchicalKotlinNativePlatformDependencies() { val task = commonizeNativeDistributionHierarchicalTask?.get() ?: return @@ -31,8 +30,8 @@ internal fun Project.setUpHierarchicalKotlinNativePlatformDependencies() { val rootOutputDirectory = task.getRootOutputDirectory(rootTarget) val targetOutputDirectory = HierarchicalCommonizerOutputLayout.getTargetDirectory(rootOutputDirectory, target) - val dependencies = project.lazyFiles { targetOutputDirectory.listFiles().orEmpty().toList() }.builtBy(task) - val stdlib = project.lazyFiles { listOf(konanDistribution.stdlib) } + val dependencies = project.filesProvider { targetOutputDirectory.listFiles().orEmpty().toList() }.builtBy(task) + val stdlib = project.filesProvider { listOf(konanDistribution.stdlib) } addDependencies(sourceSet, dependencies) addDependencies(sourceSet, stdlib) } @@ -45,10 +44,5 @@ private fun Project.addDependencies(sourceSet: KotlinSourceSet, libraries: FileC dependencies.add(sourceSet.implementationMetadataConfigurationName, libraries) } - -private fun Project.lazyFiles(provider: () -> Iterable): ConfigurableFileCollection { - return project.files(project.provider { provider() }) -} - private val Project.konanDistribution: KonanDistribution get() = KonanDistribution(project.file(konanHome)) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/HierarchicalNativeDistributionCommonizerTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/HierarchicalNativeDistributionCommonizerTask.kt index 6af1b96343a..ff43ba23cba 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/HierarchicalNativeDistributionCommonizerTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/HierarchicalNativeDistributionCommonizerTask.kt @@ -50,6 +50,19 @@ internal open class HierarchicalNativeDistributionCommonizerTask : DefaultTask() val outputDirectories: Set get() = rootCommonizerTargets.map(::getRootOutputDirectory).toSet() + @get:Internal + internal val commonizerRunner = KotlinNativeCommonizerToolRunner(project) + + @get:Classpath + @Suppress("unused") // Only for up-to-date checker. The directory with the original platform libs. + internal val commonizerClasspath: Set + get() = commonizerRunner.classpath + + @get:Input + @Suppress("unused") // Only for up-to-date checker. The directory with the original platform libs. + internal val commonizerJvmArgs: List + get() = commonizerRunner.getCustomJvmArgs() + internal fun getRootOutputDirectory(target: SharedCommonizerTarget): File { val kotlinVersion = checkNotNull(project.getKotlinPluginVersion()) { "Missing Kotlin Plugin version" } @@ -69,7 +82,7 @@ internal open class HierarchicalNativeDistributionCommonizerTask : DefaultTask() protected fun run() { for (target in rootCommonizerTargets) { getRootOutputDirectory(target).deleteRecursively() - KotlinNativeCommonizerToolRunner(project).run(getCommandLineArguments(target)) + commonizerRunner.run(getCommandLineArguments(target)) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/providerApiUtils.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/providerApiUtils.kt index 9cb29bebafa..c49e977dcab 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/providerApiUtils.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/providerApiUtils.kt @@ -6,7 +6,7 @@ package org.jetbrains.kotlin.gradle.utils import org.gradle.api.Project -import org.gradle.api.file.FileCollection +import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.RegularFileProperty import org.gradle.api.provider.Property import org.gradle.api.provider.Provider @@ -49,6 +49,6 @@ internal fun Project.newFileProperty(initialize: (() -> File)? = null): RegularF } } -internal fun Project.fileProvider(provider: () -> Any) : FileCollection { +internal fun Project.filesProvider(provider: () -> Any) : ConfigurableFileCollection { return project.files(project.provider(provider)) }