From 3f3e51f36e33259833f4152cc1eea422908b7812 Mon Sep 17 00:00:00 2001 From: "sebastian.sellmair" Date: Thu, 1 Apr 2021 10:03:18 +0200 Subject: [PATCH] CInteropCommonization: Filter out illegal dependencies ^KT-45832 Fixed --- .../commonizeInteropUsingPosixApis/build.gradle.kts | 1 + .../targets/native/internal/CInteropCommonizerTask.kt | 7 ++++++- .../org/jetbrains/kotlin/gradle/utils/providerApiUtils.kt | 7 ++++++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeInteropUsingPosixApis/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeInteropUsingPosixApis/build.gradle.kts index 9bbdc545608..953688b74bd 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeInteropUsingPosixApis/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeInteropUsingPosixApis/build.gradle.kts @@ -8,6 +8,7 @@ repositories { } kotlin { + jvm() // https://youtrack.jetbrains.com/issue/KT-45832 val targetA = ("targetA") val targetB = ("targetB") 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 bcd1f34f48e..100ad533676 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 @@ -28,6 +28,7 @@ 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.transitiveClosure +import org.jetbrains.kotlin.gradle.utils.fileProvider import org.jetbrains.kotlin.konan.target.KonanTarget import java.io.File @@ -170,7 +171,7 @@ private fun CInteropProcess.toGist(): CInteropGist { konanTarget = konanTarget, sourceSets = project.provider { settings.compilation.kotlinSourceSetsIncludingDefault }, libraryFile = outputFileProvider, - dependencies = project.files(project.provider { settings.dependencyFiles }) + dependencies = project.fileProvider { settings.dependencyFiles }.filter(File::isValidDependency) ) } @@ -236,3 +237,7 @@ private fun Project.getDependingNativeCompilations(compilation: KotlinSharedNati .filter { nativeCompilation -> nativeCompilation.allParticipatingSourceSets().containsAll(allParticipatingSourceSetsOfCompilation) } .toSet() } + +private fun File.isValidDependency(): Boolean { + return this.exists() && (this.isDirectory || this.extension == "klib") +} 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 b53f5369cdf..9cb29bebafa 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,6 +6,7 @@ package org.jetbrains.kotlin.gradle.utils import org.gradle.api.Project +import org.gradle.api.file.FileCollection import org.gradle.api.file.RegularFileProperty import org.gradle.api.provider.Property import org.gradle.api.provider.Provider @@ -46,4 +47,8 @@ internal fun Project.newFileProperty(initialize: (() -> File)? = null): RegularF set(project.layout.file(project.provider(initialize))) } } -} \ No newline at end of file +} + +internal fun Project.fileProvider(provider: () -> Any) : FileCollection { + return project.files(project.provider(provider)) +}