Skip to content

Commit 2e039d8

Browse files
committed
chore: kotlin 2.2.0 refactor
1 parent b715d9b commit 2e039d8

File tree

9 files changed

+6116
-171
lines changed

9 files changed

+6116
-171
lines changed

compose/cmp/build.gradle.kts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import kotlin.io.path.listDirectoryEntries
88
import org.jetbrains.compose.ExperimentalComposeLibrary
99
import org.jetbrains.compose.desktop.application.dsl.TargetFormat.*
1010
import org.jetbrains.compose.desktop.application.tasks.AbstractJPackageTask
11-
import org.jetbrains.kotlin.compose.compiler.gradle.ComposeFeatureFlag
1211

1312
plugins {
1413
dev.suresh.plugin.kotlin.mpp
@@ -64,7 +63,7 @@ kotlin {
6463

6564
composeCompiler {
6665
reportsDestination = layout.buildDirectory.dir("compose_compiler")
67-
featureFlags.add(ComposeFeatureFlag.OptimizeNonSkippingGroups)
66+
// featureFlags.add(ComposeFeatureFlag.)
6867
}
6968

7069
compose {

gradle/build-logic/src/main/kotlin/common/ProjectExtns.kt

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,12 @@ val Project.isComposeModuleEnabled: Boolean
9191
val Project.isBootModuleEnabled: Boolean
9292
get() = gradleBooleanProp("module.boot.enabled").get()
9393

94+
val Project.isMvnSnapshotRepoEnabled: Boolean
95+
get() = gradleBooleanProp("maven.snapshot.repo.enabled").get()
96+
97+
val Project.isAutomaticModuleEnabled
98+
get() = gradleBooleanProp("java.automatic.module.enabled").get()
99+
94100
/** Java version properties. */
95101
val Project.javaVersion
96102
get() = libs.versions.java.asProvider().map { JavaVersion.toVersion(it) }
@@ -107,9 +113,6 @@ val Project.toolchainVendor
107113
val Project.addModules
108114
get() = libs.versions.java.addModules.get()
109115

110-
val Project.isAutomaticModuleEnabled
111-
get() = gradleBooleanProp("java.automatic.module.enabled").get()
112-
113116
val Project.defaultJarManifest
114117
get() = buildMap {
115118
put("Enable-Native-Access", "ALL-UNNAMED")
@@ -442,6 +445,10 @@ fun KotlinCommonCompilerOptions.configureKotlinCommon(project: Project) =
442445
"-Xwhen-guards",
443446
"-Xmulti-dollar-interpolation",
444447
"-Xnon-local-break-continue",
448+
"-Xnested-type-aliases",
449+
"-Xreport-all-warnings",
450+
// "-Wextra",
451+
// "-Xexpected-type-guided-resolution",
445452
// "-XXLanguage:+ExplicitBackingFields",
446453
// "-Xsuppress-version-warnings",
447454
// "-P",
@@ -466,8 +473,8 @@ fun KotlinCommonCompilerOptions.configureKotlinCommon(project: Project) =
466473
fun KspAATask.configureKspConfig() =
467474
with(project) {
468475
kspConfig.apply {
469-
apiVersion = kotlinApiVersion.map { it.version }
470476
jvmTarget = kotlinJvmTarget.map { it.target }
477+
apiVersion = kotlinApiVersion.map { it.version }
471478
languageVersion = kotlinLangVersion.map { it.version }
472479
allWarningsAsErrors = false
473480
}
@@ -499,7 +506,6 @@ fun KotlinJvmCompilerOptions.configureKotlinJvm(project: Project) =
499506
"-Xassertions=jvm",
500507
"-Xemit-jvm-type-annotations",
501508
"-Xjspecify-annotations=strict",
502-
"-Xextended-compiler-checks",
503509
"-Xskip-prerelease-check",
504510
// Remove null check intrinsics from bytecode
505511
"-Xno-param-assertions",
@@ -514,6 +520,7 @@ fun KotlinJvmCompilerOptions.configureKotlinJvm(project: Project) =
514520
// "-Xgenerate-strict-metadata-version",
515521
// "-Xuse-kapt4",
516522
)
523+
// jvmDefault = JvmDefaultMode.NO_COMPATIBILITY
517524
}
518525

519526
fun Test.configureJavaTest() {
@@ -586,8 +593,8 @@ fun TestLoggingContainer.configureLogEvents() {
586593
}
587594

588595
fun KotlinJsCompilerOptions.configureKotlinJs() {
589-
// freeCompilerArgs.addAll("-Xir-per-file")
590-
// target = "es2015"
596+
freeCompilerArgs.addAll("-Xir-per-file")
597+
target = "es2015"
591598
// sourceMap = true
592599
// sourceMapEmbedSources = "always"
593600
}

gradle/build-logic/src/main/kotlin/dev.suresh.plugin.graalvm.gradle.kts

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
@file:Suppress("UnstableApiUsage")
22

3-
import com.javiersc.semver.project.gradle.plugin.SemverExtension
43
import common.*
5-
import common.GithubAction
64
import common.Platform
75
import org.jetbrains.kotlin.gradle.utils.extendsFrom
86

@@ -16,7 +14,7 @@ val muslEnabled = project.hasProperty("musl")
1614
val reportsEnabled = project.hasProperty("reports")
1715
val agentEnabled = project.hasProperty("agent")
1816

19-
val semverExtn = extensions.getByType<SemverExtension>()
17+
// val semverExtn = extensions.getByType<SemverExtension>()
2018

2119
graalvmNative {
2220
binaries.all {
@@ -34,23 +32,22 @@ graalvmNative {
3432
add("--enable-https")
3533
add("--install-exit-handlers")
3634
add("-R:MaxHeapSize=64m")
37-
add("-EBUILD_NUMBER=${project.version}")
38-
add("-ECOMMIT_HASH=${semverExtn.commits.get().first().hash}")
39-
4035
add("-H:+UnlockExperimentalVMOptions")
41-
add("-H:+VectorAPISupport")
4236
add("-H:+CompactingOldGen")
4337
add("-H:+ReportExceptionStackTraces")
4438
add("-O3")
4539
// add("-Os")
4640
// add("-H:+ForeignAPISupport")
47-
// add("--features=graal.aot.RuntimeFeature")
41+
// add("-H:+VectorAPISupport")
4842
// add("-H:+AddAllCharsets")
4943
// add("-H:+IncludeAllLocales")
5044
// add("-H:+IncludeAllTimeZones")
5145
// add("-H:IncludeResources=.*(message\\.txt|\\app.properties)\$")
46+
// add("--features=graal.aot.RuntimeFeature")
5247
// add("--enable-url-protocols=http,https,jar,unix")
5348
// add("--initialize-at-build-time=kotlinx,kotlin,org.slf4j")
49+
// add("-EBUILD_NUMBER=${project.version}")
50+
// add("-ECOMMIT_HASH=${semverExtn.commits.get().first().hash}")
5451

5552
val monOpts = buildString {
5653
append("heapdump,jfr,jvmstat,threaddump,nmt")
@@ -103,8 +100,7 @@ graalvmNative {
103100
// }
104101

105102
jvmArgs = jvmArguments()
106-
systemProperties =
107-
mapOf("java.awt.headless" to "false", "jdk.incubator.vector.VECTOR_ACCESS_OOB_CHECK" to "0")
103+
systemProperties = mapOf("java.awt.headless" to "false")
108104
javaLauncher = javaToolchains.launcherFor { configureJvmToolchain(project) }
109105
}
110106

@@ -119,7 +115,7 @@ graalvmNative {
119115
}
120116

121117
metadataRepository { enabled = true }
122-
toolchainDetection = false
118+
toolchainDetection = true
123119
}
124120

125121
/**
@@ -205,7 +201,8 @@ val niArchiveName
205201

206202
dependencies {
207203
// Dependencies required for native-image build. Use "graalCompileOnly" for compile only deps.
208-
// "graalCompileOnly"(libs.graalvm.sdk)
209-
// "graalImplementation"(libs.classgraph)
204+
"graalCompileOnly"(libs.graal.sdk)
210205
nativeImageCompileOnly(graal.map { it.output })
206+
compileOnly(libs.graal.sdk)
207+
// "graalImplementation"(libs.classgraph)
211208
}

gradle/build-logic/src/main/kotlin/dev.suresh.plugin.kotlin.jvm.gradle.kts

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import com.github.ajalt.mordant.rendering.TextColors
2+
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
23
import com.google.cloud.tools.jib.gradle.BuildDockerTask
34
import com.google.devtools.ksp.gradle.KspAATask
45
import common.*
5-
import java.io.PrintWriter
6-
import java.io.StringWriter
6+
import java.io.*
77
import java.util.spi.ToolProvider
88
import kotlinx.validation.*
99
import org.gradle.internal.os.OperatingSystem
@@ -16,11 +16,10 @@ plugins {
1616
kotlin("plugin.serialization")
1717
kotlin("plugin.power-assert")
1818
com.google.devtools.ksp
19-
dev.zacsweers.redacted
20-
com.javiersc.kotlin.kopy
19+
// dev.zacsweers.redacted
20+
// com.javiersc.kotlin.kopy
2121
id("dev.suresh.plugin.common")
2222
id("dev.suresh.plugin.kotlin.docs")
23-
// kotlin("plugin.atomicfu")
2423
// `test-suite-base`
2524
}
2625

@@ -64,18 +63,22 @@ testing {
6463

6564
ksp { allWarningsAsErrors = false }
6665

67-
powerAssert { functions = listOf("kotlin.assert", "kotlin.test.assertTrue") }
68-
69-
redacted {
70-
enabled = true
71-
replacementString = ""
66+
powerAssert {
67+
functions =
68+
listOf(
69+
"kotlin.assert",
70+
"kotlin.test.assertTrue",
71+
"kotlin.test.assertEquals",
72+
"kotlin.test.assertNull",
73+
"kotlin.require")
7274
}
7375

74-
kopy {
75-
copyFunctions = listOf(KopyCopyFunctions.Copy)
76-
// debug = false
77-
// reportPath = layout.buildDirectory.dir("reports/kopy")
78-
}
76+
// redacted {
77+
// enabled = true
78+
// replacementString = "█"
79+
// }
80+
81+
// kopy { copyFunctions = listOf(KopyCopyFunctions.Copy) }
7982

8083
// Java agent configuration for jib
8184
val javaAgent by configurations.registering { isTransitive = false }
@@ -136,12 +139,11 @@ tasks {
136139
}
137140

138141
pluginManager.withPlugin("com.gradleup.shadow") {
139-
val shadowJar by existing(Jar::class)
140142
val buildExecutable by
141143
registering(ReallyExecJar::class) {
142-
jarFile = shadowJar.flatMap { it.archiveFile }
144+
jarFile = named<ShadowJar>("shadowJar").flatMap { it.archiveFile }
143145
// javaOpts = application.applicationDefaultJvmArgs
144-
javaOpts = named<JavaExec>("run").get().jvmArgs
146+
javaOpts = jvmRunArgs
145147
execJarFile = layout.buildDirectory.dir("libs").map { it.file("${project.name}-app") }
146148
onlyIf { OperatingSystem.current().isUnix }
147149
}
@@ -152,6 +154,7 @@ tasks {
152154
description = "Print Java Platform Module dependencies of the application."
153155
group = LifecycleBasePlugin.BUILD_GROUP
154156

157+
val shadowJar = named<ShadowJar>("shadowJar")
155158
doLast {
156159
val jarFile = shadowJar.get().archiveFile.get().asFile
157160

@@ -185,7 +188,7 @@ tasks {
185188

186189
val jdepExtn = extensions.create<JdeprscanExtension>("jdeprscan")
187190
register<Jdeprscan>("jdeprscan", jdepExtn).configure {
188-
jarFile = shadowJar.flatMap { it.archiveFile }
191+
jarFile = named<ShadowJar>("shadowJar").flatMap { it.archiveFile }
189192
}
190193
}
191194

gradle/build-logic/src/main/kotlin/dev.suresh.plugin.kotlin.mpp.gradle.kts

Lines changed: 42 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
@file:Suppress("UnstableApiUsage")
2-
@file:OptIn(ExperimentalKotlinGradlePluginApi::class, ExperimentalBCVApi::class)
32

43
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
54
import com.google.devtools.ksp.gradle.KspAATask
65
import common.*
76
import kotlinx.validation.*
87
import org.gradle.internal.os.OperatingSystem
9-
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
108
import org.jetbrains.kotlin.gradle.targets.js.nodejs.*
119
import org.jetbrains.kotlin.gradle.targets.js.npm.*
12-
import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask
10+
import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.*
11+
import org.jetbrains.kotlin.gradle.targets.wasm.nodejs.*
12+
import org.jetbrains.kotlin.gradle.targets.wasm.npm.*
1313
import tasks.*
1414

1515
plugins {
@@ -20,14 +20,10 @@ plugins {
2020
id("dev.suresh.plugin.common")
2121
id("dev.suresh.plugin.kotlin.docs")
2222
com.google.devtools.ksp
23-
dev.zacsweers.redacted
24-
com.javiersc.kotlin.kopy
25-
// kotlin("plugin.atomicfu")
23+
// dev.zacsweers.redacted
24+
// com.javiersc.kotlin.kopy
2625
// kotlin("plugin.compose")
27-
// io.github.terrakok.`kmp-hierarchy`
2826
// org.gradle.kotlin.`kotlin-dsl`
29-
// app.cash.molecule
30-
// dev.mokkery
3127
}
3228

3329
configurations.configureEach { resolutionStrategy { failOnNonReproducibleResolution() } }
@@ -57,9 +53,10 @@ kotlin {
5753
// group("apple")
5854
// }
5955
//
60-
// group("jsCommon") {
56+
// group("jsAndWasmShared") {
6157
// withJs()
6258
// withWasmJs()
59+
// withWasmWasi()
6360
// }
6461
// }
6562
// }
@@ -77,18 +74,22 @@ ksp {
7774
// excludedSources.from(generateCodeTask)
7875
}
7976

80-
powerAssert { functions = listOf("kotlin.assert", "kotlin.test.assertTrue") }
81-
82-
redacted {
83-
enabled = true
84-
replacementString = ""
77+
powerAssert {
78+
functions =
79+
listOf(
80+
"kotlin.assert",
81+
"kotlin.test.assertTrue",
82+
"kotlin.test.assertEquals",
83+
"kotlin.test.assertNull",
84+
"kotlin.require")
8585
}
8686

87-
kopy {
88-
copyFunctions = listOf(KopyCopyFunctions.Copy)
89-
// debug = false
90-
// reportPath = layout.buildDirectory.dir("reports/kopy")
91-
}
87+
// redacted {
88+
// enabled = true
89+
// replacementString = "█"
90+
// }
91+
92+
// kopy { copyFunctions = listOf(KopyCopyFunctions.Copy) }
9293

9394
tasks {
9495
val buildConfigExtn = extensions.create<BuildConfigExtension>("buildConfig")
@@ -129,11 +130,10 @@ tasks {
129130
}
130131

131132
pluginManager.withPlugin("com.gradleup.shadow") {
132-
// https://gradleup.com/shadow/kmp-plugin/
133-
val shadowJar by existing(ShadowJar::class)
134133
val buildExecutable by
135134
registering(ReallyExecJar::class) {
136-
jarFile = shadowJar.flatMap { it.archiveFile }
135+
// https://gradleup.com/shadow/kotlin-plugins/
136+
jarFile = named<ShadowJar>("shadowJar").flatMap { it.archiveFile }
137137
javaOpts = jvmRunArgs
138138
execJarFile = layout.buildDirectory.dir("libs").map { it.file("${project.name}-app") }
139139
onlyIf { OperatingSystem.current().isUnix }
@@ -164,12 +164,12 @@ tasks {
164164
}
165165

166166
withType<KotlinApiBuildTask>().configureEach {
167-
// inputJar = named<Jar>("shadowJar").flatMap { it.archiveFile }
167+
// inputJar = named<ShadowJar>("shadowJar").flatMap { it.archiveFile }
168168
}
169169
}
170170
}
171171

172-
var npmEnabled: String? by rootProject.extra
172+
// var npmEnabled: String? by rootProject.extra
173173

174174
plugins.withType<NodeJsPlugin> {
175175
the<NodeJsEnvSpec>().apply {
@@ -178,13 +178,23 @@ plugins.withType<NodeJsPlugin> {
178178
// downloadBaseUrl = "https://nodejs.org/download/nightly"
179179
}
180180

181-
if (!npmEnabled.toBoolean()) {
182-
rootProject.the<NpmExtension>().apply {
183-
lockFileDirectory = project.rootDir.resolve("gradle/kotlin-js-store")
184-
packageLockMismatchReport = LockFileMismatchReport.WARNING
185-
packageLockAutoReplace = false
186-
}
187-
npmEnabled = "true"
181+
rootProject.the<NpmExtension>().apply {
182+
lockFileDirectory = project.rootDir.resolve("gradle/kotlin-js-store")
183+
packageLockMismatchReport = LockFileMismatchReport.WARNING
184+
packageLockAutoReplace = false
185+
}
186+
}
187+
188+
plugins.withType<WasmNodeJsPlugin> {
189+
the<WasmNodeJsEnvSpec>().apply {
190+
download = true
191+
// version = libs.versions.nodejs.version.get()
192+
// downloadBaseUrl = "https://nodejs.org/download/nightly"
193+
}
194+
rootProject.the<WasmNpmExtension>().apply {
195+
lockFileDirectory = project.rootDir.resolve("gradle/kotlin-js-store/wasm")
196+
packageLockMismatchReport = LockFileMismatchReport.WARNING
197+
packageLockAutoReplace = false
188198
}
189199
}
190200

0 commit comments

Comments
 (0)