CInteropCommonization: Filter out illegal dependencies

^KT-45832 Fixed
This commit is contained in:
sebastian.sellmair
2021-04-01 10:03:18 +02:00
committed by Space
parent c775508f64
commit 3f3e51f36e
3 changed files with 13 additions and 2 deletions
@@ -8,6 +8,7 @@ repositories {
}
kotlin {
jvm() // https://youtrack.jetbrains.com/issue/KT-45832
val targetA = <targetA>("targetA")
val targetB = <targetB>("targetB")
@@ -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")
}
@@ -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)))
}
}
}
}
internal fun Project.fileProvider(provider: () -> Any) : FileCollection {
return project.files(project.provider(provider))
}