Draft
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeCommonizedNativePlatformDependencyResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeCommonizedNativePlatformDependencyResolver.kt index bc877e2..14fea79 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeCommonizedNativePlatformDependencyResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeCommonizedNativePlatformDependencyResolver.kt
@@ -23,7 +23,7 @@ val project = sourceSet.project val commonizerTarget = sourceSet.commonizerTarget.getOrThrow() as? SharedCommonizerTarget ?: return emptySet() val commonizerTask = project.commonizeNativeDistributionTask?.get() ?: return emptySet() - val outputDirectory = resolveCommonizedDirectory(commonizerTask.rootOutputDirectory, commonizerTarget) + val outputDirectory = resolveCommonizedDirectory(commonizerTask.rootOutputDirectoryProperty.get().asFile, commonizerTarget) return outputDirectory.listFiles().orEmpty() .filter { it.isDirectory || it.extension == KLIB_FILE_EXTENSION }
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CommonizerTasks.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CommonizerTasks.kt index 9317770..76828ea 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CommonizerTasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CommonizerTasks.kt
@@ -165,7 +165,7 @@ group = "interop" description = "Deletes all previously commonized klib's from the Kotlin/Native distribution" - commonizerDirectory.set(commonizeNativeDistributionTask.map { it.rootOutputDirectory }) + commonizerDirectory.set(commonizeNativeDistributionTask.flatMap { it.rootOutputDirectoryProperty.asFile }) } ) }
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/KotlinNativePlatformDependencies.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/KotlinNativePlatformDependencies.kt index 594af96..f030ae6 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/KotlinNativePlatformDependencies.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/KotlinNativePlatformDependencies.kt
@@ -61,7 +61,19 @@ internal fun Project.getNativeDistributionDependencies(target: CommonizerTarget): FileCollection { return when (target) { is LeafCommonizerTarget -> getOriginalPlatformLibrariesFor(target) - is SharedCommonizerTarget -> commonizeNativeDistributionTask?.get()?.getCommonizedPlatformLibrariesFor(target) ?: project.files() +// is SharedCommonizerTarget -> commonizeNativeDistributionTask?.get()?.getCommonizedPlatformLibrariesFor(target) ?: project.files() + is SharedCommonizerTarget -> { + val commonizerTaskProvider = commonizeNativeDistributionTask ?: return project.files() + val commonizedLibrariesProvider = commonizerTaskProvider.map { task -> + task.rootOutputDirectoryProperty.map { + println("$it") + println("Hi there!!") + it.asFile + // getCommonizedPlatformLibrariesFor(it.asFile, target) + } + } + project.files(commonizedLibrariesProvider) + } } } @@ -79,9 +91,9 @@ konanDistribution.platformLibsDir.resolve(target.konanTarget.name).listLibraryFiles().toSet() } -private fun NativeDistributionCommonizerTask.getCommonizedPlatformLibrariesFor(target: SharedCommonizerTarget): FileCollection { +private fun getCommonizedPlatformLibrariesFor(rootOutputDirectory: File, target: SharedCommonizerTarget): List<File> { val targetOutputDirectory = CommonizerOutputFileLayout.resolveCommonizedDirectory(rootOutputDirectory, target) - return project.filesProvider { targetOutputDirectory.listLibraryFiles() }.builtBy(this) + return targetOutputDirectory.listLibraryFiles() } private suspend fun Project.addDependencies(
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/NativeDistributionCommonizerTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/NativeDistributionCommonizerTask.kt index 83efe01..a5bdbe6 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/NativeDistributionCommonizerTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/NativeDistributionCommonizerTask.kt
@@ -8,6 +8,7 @@ import org.gradle.api.DefaultTask import org.gradle.api.Project import org.gradle.api.file.ConfigurableFileCollection +import org.gradle.api.file.RegularFileProperty import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Property @@ -80,15 +81,21 @@ private val additionalSettings = project.additionalCommonizerSettings @get:Internal - internal val rootOutputDirectory: File = project.file { - project.file(project.konanHome) - .resolve(KONAN_DISTRIBUTION_KLIB_DIR) - .resolve(KONAN_DISTRIBUTION_COMMONIZED_LIBS_DIR) - .resolve(URLEncoder.encode(project.getKotlinPluginVersion(), Charsets.UTF_8.name())) - } + @Deprecated("Use lazy replacement", replaceWith = ReplaceWith("rootOutputDirectoryProperty.get().asFile")) + internal val rootOutputDirectory: File get() = rootOutputDirectoryProperty.asFile.get() + + @get:Internal + internal val rootOutputDirectoryProperty: RegularFileProperty = objectFactory + .fileProperty() + .convention { + project.file(project.konanHome) + .resolve(KONAN_DISTRIBUTION_KLIB_DIR) + .resolve(KONAN_DISTRIBUTION_COMMONIZED_LIBS_DIR) + .resolve(URLEncoder.encode(project.getKotlinPluginVersion(), Charsets.UTF_8.name())) + } private val commonizerCache = NativeDistributionCommonizerCache( - outputDirectory = rootOutputDirectory, + outputDirectory = rootOutputDirectoryProperty.get().asFile, konanHome = konanHome, logger = logger, isCachingEnabled = project.kotlinPropertiesProvider.enableNativeDistributionCommonizationCache