Skip to content

Commit 2821bbb

Browse files
authored
Add support for Kotlin 2.0.10 (#1216)
* Add support for Kotlin 2.0.10 * Support the release path * Support the release module.bazel * Pull things out into versions * Docs
1 parent 7b2ba28 commit 2821bbb

File tree

11 files changed

+113
-15
lines changed

11 files changed

+113
-15
lines changed

MODULE.bazel

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ use_repo(
2020
"com_github_jetbrains_kotlin",
2121
"com_github_jetbrains_kotlin_git",
2222
"com_github_pinterest_ktlint",
23+
"kotlinx_serialization_core_jvm",
24+
"kotlinx_serialization_json",
25+
"kotlinx_serialization_json_jvm",
2326
"released_rules_kotlin",
2427
)
2528

MODULE.release.bazel

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ use_repo(
2121
"com_github_google_ksp",
2222
"com_github_jetbrains_kotlin",
2323
"com_github_pinterest_ktlint",
24+
"kotlinx_serialization_core_jvm",
25+
"kotlinx_serialization_json",
26+
"kotlinx_serialization_json_jvm",
2427
)
2528

2629
register_toolchains("//kotlin/internal:default_toolchain")

docs/kotlin.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -575,8 +575,8 @@ Call this in the WORKSPACE file to setup the Kotlin rules.
575575
| <a id="kotlin_repositories-is_bzlmod"></a>is_bzlmod | <p align="center"> - </p> | `False` |
576576
| <a id="kotlin_repositories-compiler_repository_name"></a>compiler_repository_name | for the kotlinc compiler repository. | `"com_github_jetbrains_kotlin"` |
577577
| <a id="kotlin_repositories-ksp_repository_name"></a>ksp_repository_name | <p align="center"> - </p> | `"com_github_google_ksp"` |
578-
| <a id="kotlin_repositories-compiler_release"></a>compiler_release | version provider from versions.bzl. | `struct(sha256 = "ef578730976154fd2c5968d75af8c2703b3de84a78dffe913f670326e149da3b", url_templates = ["https://github.com/JetBrains/kotlin/releases/download/v{version}/kotlin-compiler-{version}.zip"], version = "2.0.0")` |
579-
| <a id="kotlin_repositories-ksp_compiler_release"></a>ksp_compiler_release | (internal) version provider from versions.bzl. | `struct(sha256 = "84100aed5b63effa992ce6574b3ba47d2dbb78529752daa4c181e203117ba7de", url_templates = ["https://github.com/google/ksp/releases/download/{version}/artifacts.zip"], version = "2.0.0-1.0.21")` |
578+
| <a id="kotlin_repositories-compiler_release"></a>compiler_release | version provider from versions.bzl. | `struct(sha256 = "88d7d8bad362ae4e114a8b9668c6887b8c85f48e340883db0e317e47c8dc2f4f", url_templates = ["https://github.com/JetBrains/kotlin/releases/download/v{version}/kotlin-compiler-{version}.zip"], version = "2.0.10")` |
579+
| <a id="kotlin_repositories-ksp_compiler_release"></a>ksp_compiler_release | (internal) version provider from versions.bzl. | `struct(sha256 = "e6a79e649ee383b372fa982be89686c10ee42b25e60147b3271a70fd75a9eb19", url_templates = ["https://github.com/google/ksp/releases/download/{version}/artifacts.zip"], version = "2.0.10-1.0.24")` |
580580

581581

582582
<a id="versions.use_repository"></a>

src/main/kotlin/BUILD.release.bazel

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,14 @@ java_binary(
4747
"//kotlin/compiler:symbol-processing-cmdline",
4848
"//src/main/kotlin/io/bazel/kotlin/compiler",
4949
"@com_github_jetbrains_kotlin//:home",
50+
"@kotlinx_serialization_core_jvm//jar",
51+
"@kotlinx_serialization_json//jar",
52+
"@kotlinx_serialization_json_jvm//jar",
5053
],
5154
jvm_flags = [
55+
"-D@com_github_jetbrains_kotlinx...serialization-core-jvm=$(rlocationpath @kotlinx_serialization_core_jvm//jar)",
56+
"-D@com_github_jetbrains_kotlinx...serialization-json=$(rlocationpath @kotlinx_serialization_json//jar)",
57+
"-D@com_github_jetbrains_kotlinx...serialization-json-jvm=$(rlocationpath @kotlinx_serialization_json_jvm//jar)",
5258
"-D@com_github_jetbrains_kotlin...jvm-abi-gen=$(rlocationpath //kotlin/compiler:jvm-abi-gen)",
5359
"-D@com_github_jetbrains_kotlin...kotlin-compiler=$(rlocationpath //kotlin/compiler:kotlin-compiler)",
5460
"-D@com_github_jetbrains_kotlin...kapt=$(rlocationpath //kotlin/compiler:kotlin-annotation-processing)",

src/main/kotlin/io/bazel/kotlin/builder/cmd/BUILD.bazel

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,14 @@ kt_bootstrap_binary(
2525
"//src/main/kotlin:skip-code-gen",
2626
"//src/main/kotlin/io/bazel/kotlin/compiler:compiler.jar",
2727
"@com_github_jetbrains_kotlin//:home",
28+
"@kotlinx_serialization_core_jvm//jar",
29+
"@kotlinx_serialization_json//jar",
30+
"@kotlinx_serialization_json_jvm//jar",
2831
],
2932
jvm_flags = [
33+
"-D@com_github_jetbrains_kotlinx...serialization-core-jvm=$(rlocationpath @kotlinx_serialization_core_jvm//jar)",
34+
"-D@com_github_jetbrains_kotlinx...serialization-json=$(rlocationpath @kotlinx_serialization_json//jar)",
35+
"-D@com_github_jetbrains_kotlinx...serialization-json-jvm=$(rlocationpath @kotlinx_serialization_json_jvm//jar)",
3036
"-D@com_github_jetbrains_kotlin...jvm-abi-gen=$(rlocationpath //kotlin/compiler:jvm-abi-gen)",
3137
"-D@com_github_jetbrains_kotlin...kotlin-compiler=$(rlocationpath //kotlin/compiler:kotlin-compiler)",
3238
"-D@com_github_jetbrains_kotlin...kapt=$(rlocationpath //kotlin/compiler:kotlin-annotation-processing)",

src/main/kotlin/io/bazel/kotlin/builder/toolchain/KotlinToolchain.kt

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,27 @@ class KotlinToolchain private constructor(
104104
).toPath()
105105
}
106106

107+
private val KOTLINX_SERIALIZATION_CORE_JVM by lazy {
108+
BazelRunFiles
109+
.resolveVerifiedFromProperty(
110+
"@com_github_jetbrains_kotlinx...serialization-core-jvm",
111+
).toPath()
112+
}
113+
114+
private val KOTLINX_SERIALIZATION_JSON by lazy {
115+
BazelRunFiles
116+
.resolveVerifiedFromProperty(
117+
"@com_github_jetbrains_kotlinx...serialization-json",
118+
).toPath()
119+
}
120+
121+
private val KOTLINX_SERIALIZATION_JSON_JVM by lazy {
122+
BazelRunFiles
123+
.resolveVerifiedFromProperty(
124+
"@com_github_jetbrains_kotlinx...serialization-json-jvm",
125+
).toPath()
126+
}
127+
107128
private val JAVA_HOME by lazy {
108129
FileSystems
109130
.getDefault()
@@ -129,6 +150,9 @@ class KotlinToolchain private constructor(
129150
KAPT_PLUGIN.verified().absoluteFile,
130151
KSP_SYMBOL_PROCESSING_API.toFile(),
131152
KSP_SYMBOL_PROCESSING_CMDLINE.toFile(),
153+
KOTLINX_SERIALIZATION_CORE_JVM.toFile(),
154+
KOTLINX_SERIALIZATION_JSON.toFile(),
155+
KOTLINX_SERIALIZATION_JSON_JVM.toFile(),
132156
)
133157

134158
@JvmStatic
@@ -142,6 +166,9 @@ class KotlinToolchain private constructor(
142166
kaptFile: File,
143167
kspSymbolProcessingApi: File,
144168
kspSymbolProcessingCommandLine: File,
169+
kotlinxSerializationCoreJvm: File,
170+
kotlinxSerializationJson: File,
171+
kotlinxSerializationJsonJvm: File,
145172
): KotlinToolchain =
146173
KotlinToolchain(
147174
listOf(
@@ -155,6 +182,9 @@ class KotlinToolchain private constructor(
155182
jdepsGenFile,
156183
kspSymbolProcessingApi,
157184
kspSymbolProcessingCommandLine,
185+
kotlinxSerializationCoreJvm,
186+
kotlinxSerializationJson,
187+
kotlinxSerializationJsonJvm,
158188
),
159189
jvmAbiGen =
160190
CompilerPlugin(

src/main/kotlin/io/bazel/kotlin/plugin/jdeps/k2/ClassUsageRecorder.kt

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,15 @@ class ClassUsageRecorder(
4444
visited: MutableSet<Pair<ClassId, Boolean>> = mutableSetOf(),
4545
) {
4646
if (collectTypeArguments) {
47-
coneKotlinType.forEachType { coneType ->
48-
val classId = coneType.classId ?: return@forEachType
49-
if (ANONYMOUS in classId.toString()) return@forEachType
50-
context.session.symbolProvider
51-
.getClassLikeSymbolByClassId(classId)
52-
?.let { recordClass(it, context, isExplicit, collectTypeArguments, visited) }
53-
}
47+
coneKotlinType.forEachType(
48+
action = { coneType ->
49+
val classId = coneType.classId ?: return@forEachType
50+
if (ANONYMOUS in classId.toString()) return@forEachType
51+
context.session.symbolProvider
52+
.getClassLikeSymbolByClassId(classId)
53+
?.let { recordClass(it, context, isExplicit, collectTypeArguments, visited) }
54+
},
55+
)
5456
} else {
5557
coneKotlinType.classId?.let { classId ->
5658
if (!classId.isLocal) {

src/main/starlark/core/repositories/initialize.release.bzl

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ load(
1818
"@bazel_tools//tools/build_defs/repo:http.bzl",
1919
"http_archive",
2020
"http_file",
21+
"http_jar",
2122
)
2223
load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
2324
load(
@@ -71,6 +72,27 @@ def kotlin_repositories(
7172
executable = True,
7273
)
7374

75+
maybe(
76+
http_jar,
77+
name = "kotlinx_serialization_core_jvm",
78+
sha256 = versions.KOTLINX_SERIALIZATION_CORE_JVM.sha256,
79+
urls = [url.format(version = versions.KOTLINX_SERIALIZATION_CORE_JVM.version) for url in versions.KOTLINX_SERIALIZATION_CORE_JVM.url_templates],
80+
)
81+
82+
maybe(
83+
http_jar,
84+
name = "kotlinx_serialization_json",
85+
sha256 = versions.KOTLINX_SERIALIZATION_JSON.sha256,
86+
urls = [url.format(version = versions.KOTLINX_SERIALIZATION_JSON.version) for url in versions.KOTLINX_SERIALIZATION_JSON.url_templates],
87+
)
88+
89+
maybe(
90+
http_jar,
91+
name = "kotlinx_serialization_json_jvm",
92+
sha256 = versions.KOTLINX_SERIALIZATION_JSON_JVM.sha256,
93+
urls = [url.format(version = versions.KOTLINX_SERIALIZATION_JSON_JVM.version) for url in versions.KOTLINX_SERIALIZATION_JSON_JVM.url_templates],
94+
)
95+
7496
if is_bzlmod:
7597
return
7698

src/main/starlark/core/repositories/versions.bzl

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,18 +61,18 @@ versions = struct(
6161
sha256 = "a9f923be58fbd32670a17f0b729b1df804af882fa57402165741cb26e5440ca1",
6262
),
6363
KOTLIN_CURRENT_COMPILER_RELEASE = version(
64-
version = "2.0.0",
64+
version = "2.0.10",
6565
url_templates = [
6666
"https://github.com/JetBrains/kotlin/releases/download/v{version}/kotlin-compiler-{version}.zip",
6767
],
68-
sha256 = "ef578730976154fd2c5968d75af8c2703b3de84a78dffe913f670326e149da3b",
68+
sha256 = "88d7d8bad362ae4e114a8b9668c6887b8c85f48e340883db0e317e47c8dc2f4f",
6969
),
7070
KSP_CURRENT_COMPILER_PLUGIN_RELEASE = version(
71-
version = "2.0.0-1.0.21",
71+
version = "2.0.10-1.0.24",
7272
url_templates = [
7373
"https://github.com/google/ksp/releases/download/{version}/artifacts.zip",
7474
],
75-
sha256 = "84100aed5b63effa992ce6574b3ba47d2dbb78529752daa4c181e203117ba7de",
75+
sha256 = "e6a79e649ee383b372fa982be89686c10ee42b25e60147b3271a70fd75a9eb19",
7676
),
7777
ANDROID = struct(
7878
VERSION = "0.1.1",
@@ -132,5 +132,26 @@ versions = struct(
132132
],
133133
sha256 = "b84ed8546f1969d700ead4546de9f7637e0f058d835e47e865dcbb13c4210aed",
134134
),
135+
KOTLINX_SERIALIZATION_CORE_JVM = version(
136+
version = "1.6.3",
137+
url_templates = [
138+
"https://repo1.maven.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/{version}/kotlinx-serialization-core-jvm-{version}.jar",
139+
],
140+
sha256 = "29c821a8d4e25cbfe4f2ce96cdd4526f61f8f4e69a135f9612a34a81d93b65f1",
141+
),
142+
KOTLINX_SERIALIZATION_JSON = version(
143+
version = "1.6.3",
144+
url_templates = [
145+
"https://repo1.maven.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json/{version}/kotlinx-serialization-json-{version}.jar",
146+
],
147+
sha256 = "8c0016890a79ab5980dd520a5ab1a6738023c29aa3b6437c482e0e5fdc06dab1",
148+
),
149+
KOTLINX_SERIALIZATION_JSON_JVM = version(
150+
version = "1.6.3",
151+
url_templates = [
152+
"https://repo1.maven.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json-jvm/{version}/kotlinx-serialization-json-jvm-{version}.jar",
153+
],
154+
sha256 = "d3234179bcff1886d53d67c11eca47f7f3cf7b63c349d16965f6db51b7f3dd9a",
155+
),
135156
use_repository = _use_repository,
136157
)

src/test/kotlin/io/bazel/kotlin/builder/KotlinAbstractTestBuilder.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,6 @@ final Path writeFile(DirectoryType dirType, String filename, String[] lines) {
143143
}
144144

145145

146-
147146
public final Path writeSourceFile(String filename, String[] lines) {
148147
return writeFile(DirectoryType.SOURCES, filename, lines);
149148
}
@@ -242,7 +241,10 @@ static KotlinToolchain toolchainForTest() {
242241
new File(Deps.Dep.fromLabel("//src/main/kotlin:jdeps-gen").singleCompileJar()),
243242
new File(Deps.Dep.fromLabel("//kotlin/compiler:kotlin-annotation-processing").singleCompileJar()),
244243
new File(Deps.Dep.fromLabel("//kotlin/compiler:symbol-processing-api").singleCompileJar()),
245-
new File(Deps.Dep.fromLabel("//kotlin/compiler:symbol-processing-cmdline").singleCompileJar())
244+
new File(Deps.Dep.fromLabel("//kotlin/compiler:symbol-processing-cmdline").singleCompileJar()),
245+
new File(Deps.Dep.fromLabel("@kotlinx_serialization_core_jvm//jar").singleCompileJar()),
246+
new File(Deps.Dep.fromLabel("@kotlinx_serialization_json//jar").singleCompileJar()),
247+
new File(Deps.Dep.fromLabel("@kotlinx_serialization_json_jvm//jar").singleCompileJar())
246248
);
247249
}
248250
}

0 commit comments

Comments
 (0)