Skip to content

Commit 9a69395

Browse files
committed
chore: update plugins, dependencies, and ABI validation configurations
1 parent 46983d4 commit 9a69395

22 files changed

+170
-186
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ native-image. The plugin will take care of configuring most common build tasks,
2222
* `GraalVM Native` Image
2323
* Documentation (`JavaDoc`, `Dokka`)
2424
* Benchmarking (`JMH`)
25-
* API binary compatibility validation
25+
* Binary compatibility (`ABI`) validation
2626
* Deprecated API scanning (using `jdeprscan`)
2727
* Builds truly executable JAR files
2828
* Build config generation

gradle/build-logic/build.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ kotlin {
2929
"-Xno-param-assertions",
3030
"-Xno-call-assertions",
3131
"-Xno-receiver-assertions",
32-
"-Xreturn-value-checker=check")
32+
"-Xreturn-value-checker=check",
33+
)
3334
optIn.addAll(
3435
"kotlin.ExperimentalStdlibApi",
3536
"kotlin.time.ExperimentalTime",

gradle/build-logic/src/main/kotlin/plugin.kotlin.dsl.gradle.kts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,15 @@ kotlin {
2323
"-Xno-param-assertions",
2424
"-Xno-call-assertions",
2525
"-Xno-receiver-assertions",
26-
"-Xreturn-value-checker=check")
26+
"-Xreturn-value-checker=check",
27+
)
2728
optIn.addAll(
2829
"kotlin.ExperimentalStdlibApi",
2930
"kotlin.time.ExperimentalTime",
3031
"kotlin.io.encoding.ExperimentalEncodingApi",
3132
"kotlinx.coroutines.ExperimentalCoroutinesApi",
3233
"kotlinx.serialization.ExperimentalSerializationApi",
34+
"org.jetbrains.kotlin.gradle.dsl.abi.ExperimentalAbiValidation",
3335
)
3436
}
3537

gradle/build-logic/src/main/kotlin/plugin.root.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ if (hasCleanTask) {
1919
| actually be fixed by cleaning. What cleaning will do though is make your next few builds
2020
| significantly slower because all the incremental compilation data has to be regenerated,
2121
| so you're really just making your day worse.
22-
""")
22+
"""
23+
)
2324
.trimMargin(),
2425
)
2526
}

plugins/project/build.gradle.kts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ description = "Gradle build project plugins!"
1515

1616
kotlin {
1717
compilerOptions.optIn.addAll(
18-
"kotlinx.validation.ExperimentalBCVApi",
1918
"org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi",
2019
"org.jetbrains.kotlin.gradle.ExperimentalWasmDsl",
21-
"org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalDistributionDsl")
20+
"org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalDistributionDsl",
21+
)
2222
}
2323

2424
jte {
@@ -95,7 +95,6 @@ dependencies {
9595
implementation(libs.plugins.kotlinx.serialization.dep)
9696
implementation(libs.plugins.kotlinx.kover.dep)
9797
implementation(libs.plugins.kotlinx.benchmark.dep)
98-
implementation(libs.plugins.kotlinx.bcv.dep)
9998
implementation(libs.plugins.jetbrains.dokka.dep)
10099
implementation(libs.plugins.graalvm.nativeimage.dep)
101100
implementation(libs.plugins.redacted.dep)

plugins/project/src/main/kotlin/common/Multiplatform.kt

Lines changed: 4 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -10,76 +10,6 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
1010
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode
1111
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig
1212

13-
fun KotlinMultiplatformExtension.commonTarget(project: Project) =
14-
with(project) {
15-
jvmToolchain { configureJvmToolchain(project) }
16-
compilerOptions { configureKotlinCommon(project) }
17-
withSourcesJar(publish = true)
18-
// targets.configureEach {}
19-
20-
sourceSets {
21-
all {
22-
// Apply multiplatform library bom to all source sets
23-
dependencies {
24-
api(project.dependencies.platform(libs.kotlin.bom))
25-
api(project.dependencies.platform(libs.kotlinx.coroutines.bom))
26-
api(project.dependencies.platform(libs.kotlinx.serialization.bom))
27-
api(project.dependencies.platform(libs.ktor.bom))
28-
api(project.dependencies.platform(libs.kotlin.wrappers.bom))
29-
}
30-
// languageSettings.enableLanguageFeature(LanguageFeature.xx)
31-
}
32-
33-
commonMain {
34-
dependencies {
35-
api(libs.kotlinx.coroutines.core)
36-
api(libs.kotlinx.datetime)
37-
api(libs.kotlinx.io.core)
38-
api(libs.kotlinx.serialization.json)
39-
api(libs.kotlinx.serialization.json.io)
40-
api(libs.kotlinx.collections.immutable)
41-
api(libs.kotlin.redacted.annotations)
42-
api(libs.kotlin.retry)
43-
api(libs.kotlin.logging)
44-
api(libs.kotlinx.html)
45-
api(libs.ktor.client.core)
46-
api(libs.ktor.client.cio)
47-
api(libs.ktor.client.content.negotiation)
48-
api(libs.ktor.client.encoding)
49-
api(libs.ktor.client.logging)
50-
api(libs.ktor.client.resources)
51-
api(libs.ktor.client.auth)
52-
api(libs.ktor.client.serialization)
53-
api(libs.ktor.client.websockets)
54-
api(libs.ktor.serialization.json)
55-
}
56-
// kotlin.srcDirs()
57-
// resources.srcDirs()
58-
}
59-
60-
commonTest {
61-
dependencies {
62-
api(kotlin("test"))
63-
api(libs.kotlinx.coroutines.test)
64-
api(libs.ktor.client.mock)
65-
api(libs.cash.turbine)
66-
}
67-
}
68-
69-
// Get target compilations
70-
// val commonTarget = targets.first { it.platformType == KotlinPlatformType.common }
71-
// OR targets["metadata"]
72-
// val compilation = commonTarget.compilations["main"]
73-
74-
// Add a task output as sourceSet
75-
// compilation.defaultSourceSet.kotlin.srcDir(buildConfig)
76-
77-
// Add new sourceSet
78-
// val newSourceSet = sourceSets.create("gen")
79-
// compilation.defaultSourceSet.dependsOn(newSourceSet)
80-
}
81-
}
82-
8313
fun KotlinMultiplatformExtension.jvmTarget(project: Project) =
8414
with(project) {
8515
jvm {
@@ -263,7 +193,8 @@ fun KotlinMultiplatformExtension.wasmWasiTarget(project: Project) =
263193
compilations.all {
264194
compileTaskProvider.configure {
265195
compilerOptions.freeCompilerArgs.addAll(
266-
listOf("-Xwasm-use-traps-instead-of-exceptions"))
196+
listOf("-Xwasm-use-traps-instead-of-exceptions")
197+
)
267198
}
268199
}
269200
}
@@ -291,7 +222,7 @@ fun KotlinMultiplatformExtension.hostNativeTarget(configure: KotlinNativeTarget.
291222

292223
fun KotlinMultiplatformExtension.nativeTargets(
293224
project: Project,
294-
configure: KotlinNativeTarget.() -> Unit = {}
225+
configure: KotlinNativeTarget.() -> Unit = {},
295226
) =
296227
with(project) {
297228
fun KotlinNativeTarget.configureAll() {
@@ -329,7 +260,7 @@ fun KotlinMultiplatformExtension.nativeTargets(
329260
fun KotlinMultiplatformExtension.addKspDependencyForAllTargets(
330261
project: Project,
331262
dependencyNotation: Any,
332-
configurationNameSuffix: String = ""
263+
configurationNameSuffix: String = "",
333264
) =
334265
with(project) {
335266
// val kotlin = extensions.getByType<KotlinMultiplatformExtension>()

plugins/project/src/main/kotlin/common/ProjectExtns.kt

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
package common
44

5-
import com.google.devtools.ksp.gradle.KspAATask
65
import java.io.ByteArrayOutputStream
76
import java.io.File
87
import java.nio.file.Path
@@ -176,7 +175,8 @@ val Project.defaultJarManifest
176175
put("Built-Jdk", System.getProperty("java.runtime.version"))
177176
put(
178177
"Built-OS",
179-
"${System.getProperty("os.name")} ${System.getProperty("os.arch")} ${System.getProperty("os.version")}")
178+
"${System.getProperty("os.name")} ${System.getProperty("os.arch")} ${System.getProperty("os.version")}",
179+
)
180180
put("Build-Timestamp", DateTimeFormatter.ISO_INSTANT.format(ZonedDateTime.now()))
181181
put("Created-By", "Gradle ${gradle.gradleVersion}")
182182
put(Attributes.Name.IMPLEMENTATION_TITLE.toString(), project.name)
@@ -198,7 +198,8 @@ val Project.containerLabels
198198
"org.opencontainers.image.vendor" to project.githubUser,
199199
"org.opencontainers.image.url" to project.githubRepo,
200200
"org.opencontainers.image.source" to project.githubRepo,
201-
"org.opencontainers.image.licenses" to "Apache-2.0")
201+
"org.opencontainers.image.licenses" to "Apache-2.0",
202+
)
202203

203204
val Project.defaultJvmArgs
204205
get() = buildList {
@@ -357,7 +358,8 @@ val Project.runJvmArgs
357358
// "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005",
358359
// "-agentlib:jdwp=transport=dt_socket,server=n,address=host:5005,suspend=y,onthrow=<FQ
359360
// exception class name>,onuncaught=<y/n>"
360-
))
361+
)
362+
)
361363
}
362364
}
363365
}
@@ -391,14 +393,17 @@ fun JavaCompile.configureJavac(project: Project) =
391393
// add("--patch-module")
392394
// add("$moduleName=${sourceSets.main.get().output.asPath}")
393395
// add("-Xplugin:unchecked") // compiler plugin
394-
})
396+
}
397+
)
395398

396399
// Add the Kotlin classes to the module path (compileKotlinJvm)
397400
val compileKotlin = tasks.findByName("compileKotlin") as? KotlinCompile
398401
if (compileKotlin != null) {
399402
compilerArgumentProviders +=
400403
PatchModuleArgProvider(
401-
provider { project.group.toString() }, compileKotlin.destinationDirectory)
404+
provider { project.group.toString() },
405+
compileKotlin.destinationDirectory,
406+
)
402407
}
403408
}
404409
}
@@ -440,19 +445,8 @@ fun KotlinCommonCompilerOptions.configureKotlinCommon(project: Project) =
440445
"kotlin.ExperimentalMultiplatform",
441446
"kotlin.js.ExperimentalJsExport",
442447
"kotlin.uuid.ExperimentalUuidApi",
443-
"kotlin.concurrent.atomics.ExperimentalAtomicApi"
444-
// "org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi",
445-
)
446-
}
447-
448-
fun KspAATask.configureKspConfig() =
449-
with(project) {
450-
kspConfig.apply {
451-
jvmTarget = kotlinJvmTarget.map { it.target }
452-
apiVersion = kotlinApiVersion.map { it.version }
453-
languageVersion = kotlinLangVersion.map { it.version }
454-
allWarningsAsErrors = false
455-
}
448+
"kotlin.concurrent.atomics.ExperimentalAtomicApi",
449+
)
456450
}
457451

458452
/**
@@ -482,6 +476,7 @@ fun KotlinJvmCompilerOptions.configureKotlinJvm(project: Project) =
482476
"-Xemit-jvm-type-annotations",
483477
"-Xjspecify-annotations=strict",
484478
"-Xskip-prerelease-check",
479+
"-Xwhen-expressions=indy",
485480
// Remove null check intrinsics from bytecode
486481
"-Xno-param-assertions",
487482
"-Xno-call-assertions",
@@ -538,11 +533,12 @@ fun Test.configureJavaTest() {
538533
|Passed : ${result.successfulTestCount}
539534
|Failed : ${result.failedTestCount}
540535
|Skipped : ${result.skippedTestCount}
541-
|
542-
"""
543-
.trimMargin())
536+
|"""
537+
.trimMargin()
538+
)
544539
}
545-
}))
540+
})
541+
)
546542
}
547543

548544
fun TestLoggingContainer.configureLogEvents() {
@@ -568,7 +564,8 @@ fun TestLoggingContainer.configureLogEvents() {
568564
TestLogEvent.PASSED,
569565
TestLogEvent.SKIPPED,
570566
TestLogEvent.STANDARD_ERROR,
571-
TestLogEvent.STANDARD_OUT)
567+
TestLogEvent.STANDARD_OUT,
568+
)
572569
exceptionFormat = TestExceptionFormat.FULL
573570
}
574571
}
@@ -595,7 +592,8 @@ fun KotlinSourceSet.ksp(dependencyNotation: Any) {
595592
name in
596593
listOf(
597594
KotlinSourceSet.COMMON_MAIN_SOURCE_SET_NAME,
598-
KotlinSourceSet.COMMON_TEST_SOURCE_SET_NAME) -> "commonMainMetadata"
595+
KotlinSourceSet.COMMON_TEST_SOURCE_SET_NAME,
596+
) -> "commonMainMetadata"
599597

600598
name.endsWith("Main") -> name.substringBeforeLast("Main")
601599
else -> name

plugins/project/src/main/kotlin/dev.suresh.plugin.common.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ tasks {
6666
val isLast = index == config.outgoing.artifacts.size - 1
6767
val prefix = if (isLast) " └─" else " ├─"
6868
logger.lifecycle(
69-
"$prefix ${cyan(artifact.file.name)} (${artifact.file.length().decimalBytes})")
69+
"$prefix ${cyan(artifact.file.name)} (${artifact.file.length().decimalBytes})"
70+
)
7071
}
7172
}
7273
}

plugins/project/src/main/kotlin/dev.suresh.plugin.graalvm.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,8 @@ tasks {
177177

178178
val binFile = archiveFile.get().asFile
179179
logger.lifecycle(
180-
"Native Image Archive: ${binFile.absolutePath} (${binFile.length().decimalBytes})")
180+
"Native Image Archive: ${binFile.absolutePath} (${binFile.length().decimalBytes})"
181+
)
181182
}
182183
}
183184

plugins/project/src/main/kotlin/dev.suresh.plugin.kotlin.jvm.gradle.kts

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import com.google.cloud.tools.jib.gradle.JibTask
33
import common.*
44
import java.io.*
55
import java.util.spi.ToolProvider
6-
import kotlinx.validation.*
76
import org.gradle.internal.os.OperatingSystem
87
import org.gradle.kotlin.dsl.*
98
import tasks.*
@@ -15,7 +14,7 @@ plugins {
1514
kotlin("plugin.power-assert")
1615
com.google.devtools.ksp
1716
dev.zacsweers.redacted
18-
// com.javiersc.kotlin.kopy
17+
com.javiersc.kotlin.kopy
1918
id("dev.suresh.plugin.common")
2019
id("dev.suresh.plugin.kotlin.docs")
2120
// `test-suite-base`
@@ -47,6 +46,13 @@ kotlin {
4746
configureKotlinCommon(project)
4847
configureKotlinJvm(project)
4948
}
49+
50+
@OptIn(org.jetbrains.kotlin.gradle.dsl.abi.ExperimentalAbiValidation::class)
51+
abiValidation {
52+
enabled = false
53+
filters { excluded { byNames.addAll("BuildConfig", $$"BuildConfig$Host") } }
54+
}
55+
5056
// sourceSets.all { kotlin.setSrcDirs(listOf("src/kotlin")) }
5157
}
5258

@@ -68,16 +74,15 @@ powerAssert {
6874
"kotlin.test.assertTrue",
6975
"kotlin.test.assertEquals",
7076
"kotlin.test.assertNull",
71-
"kotlin.require")
77+
"kotlin.require",
78+
)
7279
}
7380

7481
redacted {
7582
enabled = true
7683
replacementString = ""
7784
}
7885

79-
// kopy { copyFunctions = listOf(KopyCopyFunctions.Copy) }
80-
8186
// Java agent configuration for jib
8287
val javaAgent by configurations.registering { isTransitive = false }
8388

@@ -176,7 +181,8 @@ tasks {
176181
|${modules.split(",").mapIndexed { i, module -> " ${(i + 1).toString()
177182
.padStart(2)}) $module" }.joinToString(System.lineSeparator())}
178183
"""
179-
.trimMargin())
184+
.trimMargin()
185+
)
180186
}
181187
dependsOn(shadowJar)
182188
}
@@ -206,19 +212,6 @@ tasks {
206212

207213
withType<JibTask>().configureEach { notCompatibleWithConfigurationCache("because Jib#3132") }
208214
}
209-
210-
pluginManager.withPlugin("org.jetbrains.kotlinx.binary-compatibility-validator") {
211-
configure<ApiValidationExtension> {
212-
ignoredPackages.add("dev.suresh.test")
213-
ignoredClasses.addAll(listOf("BuildConfig", $$"BuildConfig$Host"))
214-
validationDisabled = false
215-
klib { enabled = true }
216-
}
217-
218-
withType<KotlinApiBuildTask>().configureEach {
219-
// inputJar = named<Jar>("shadowJar").flatMap { it.archiveFile }
220-
}
221-
}
222215
}
223216

224217
dependencies {

0 commit comments

Comments
 (0)