Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 25 additions & 5 deletions src/main/kotlin/BinaryCompatibilityValidatorPlugin.kt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
import org.jetbrains.kotlin.konan.target.HostManager
import org.jetbrains.kotlin.library.abi.ExperimentalLibraryAbiReader
import org.jetbrains.kotlin.library.abi.LibraryAbiReader
import java.io.*
import java.util.*

Expand Down Expand Up @@ -648,18 +647,32 @@ private val Project.jvmDumpFileName: String
private val Project.klibDumpFileName: String
get() = "$name.klib.api"

private fun Project.isGradle8Dot2OrHigher(): Boolean {
val parts = gradle.gradleVersion.split('.')
if (parts.size < 2) return false
val major = parts[0].toIntOrNull() ?: return false
val minor = parts[1].toIntOrNull() ?: return false
if (major < 8) return false
if (major == 8 && minor < 2) return false
return true
}
Comment on lines +650 to +658

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See #265 which uses Gradle's GradleVersion API that obviates the need to do any manual version parsing like this.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indeed, thanks, missed that PR


private fun Project.prepareKlibValidationClasspath(): NamedDomainObjectProvider<Configuration> {
val compilerVersion = project.objects.property(String::class.java).convention("2.0.0")
project.withKotlinPluginVersion { version ->
compilerVersion.set(version)
}

val gradle8Dot2OrHigher = isGradle8Dot2OrHigher()
val dependencyConfiguration =
project.configurations.create("bcv-rt-klib-cp") {
it.description = "Runtime classpath for running binary-compatibility-validator."
it.isCanBeResolved = false
it.isCanBeConsumed = false
it.isCanBeDeclared = true

if (gradle8Dot2OrHigher) {
it.isCanBeDeclared = true
}
it.isVisible = false
}

Expand All @@ -669,7 +682,9 @@ private fun Project.prepareKlibValidationClasspath(): NamedDomainObjectProvider<
it.description = "Resolve the runtime classpath for running binary-compatibility-validator."
it.isCanBeResolved = true
it.isCanBeConsumed = false
it.isCanBeDeclared = false
if (gradle8Dot2OrHigher) {
it.isCanBeDeclared = false
}
it.isVisible = false
it.extendsFrom(dependencyConfiguration)
}
Expand All @@ -684,12 +699,15 @@ private fun Project.prepareJvmValidationClasspath(): NamedDomainObjectProvider<C
}


val gradle8Dot2OrHigher = isGradle8Dot2OrHigher()
val dependencyConfiguration =
project.configurations.create("bcv-rt-jvm-cp") {
it.description = "Runtime classpath for running binary-compatibility-validator."
it.isCanBeResolved = false
it.isCanBeConsumed = false
it.isCanBeDeclared = true
if (gradle8Dot2OrHigher) {
it.isCanBeDeclared = true
}
it.isVisible = false
}

Expand All @@ -701,7 +719,9 @@ private fun Project.prepareJvmValidationClasspath(): NamedDomainObjectProvider<C
it.description = "Resolve the runtime classpath for running binary-compatibility-validator."
it.isCanBeResolved = true
it.isCanBeConsumed = false
it.isCanBeDeclared = false
if (gradle8Dot2OrHigher) {
it.isCanBeDeclared = false
}
it.isVisible = false
it.extendsFrom(dependencyConfiguration)
}
Expand Down