Skip to content

Commit 40e07a4

Browse files
Bencodesoliviernotteghem
authored andcommitted
Add support for Kotlin 2.1.20 (bazelbuild#1298)
* Add support for Kotlin 2.1.20 * Docs * Fixes * Fix maven_install file name for 2.1.20 version * Get the compose example building again
1 parent d42868f commit 40e07a4

File tree

6 files changed

+661
-1223
lines changed

6 files changed

+661
-1223
lines changed

docs/kotlin.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -576,8 +576,8 @@ Call this in the WORKSPACE file to setup the Kotlin rules.
576576
| <a id="kotlin_repositories-is_bzlmod"></a>is_bzlmod | <p align="center"> - </p> | `False` |
577577
| <a id="kotlin_repositories-compiler_repository_name"></a>compiler_repository_name | for the kotlinc compiler repository. | `"com_github_jetbrains_kotlin"` |
578578
| <a id="kotlin_repositories-ksp_repository_name"></a>ksp_repository_name | <p align="center"> - </p> | `"com_github_google_ksp"` |
579-
| <a id="kotlin_repositories-compiler_release"></a>compiler_release | version provider from versions.bzl. | `struct(sha256 = "b6698d5728ad8f9edcdd01617d638073191d8a03139cc538a391b4e3759ad297", url_templates = ["https://github.com/JetBrains/kotlin/releases/download/v{version}/kotlin-compiler-{version}.zip"], version = "2.1.0")` |
580-
| <a id="kotlin_repositories-ksp_compiler_release"></a>ksp_compiler_release | (internal) version provider from versions.bzl. | `struct(sha256 = "fc27b08cadc061a4a989af01cbeccb613feef1995f4aad68f2be0f886a3ee251", url_templates = ["https://github.com/google/ksp/releases/download/{version}/artifacts.zip"], version = "2.1.0-1.0.28")` |
579+
| <a id="kotlin_repositories-compiler_release"></a>compiler_release | version provider from versions.bzl. | `struct(sha256 = "a118197b0de55ffab2bc8d5cd03a5e39033cfb53383d6931bc761dec0784891a", url_templates = ["https://github.com/JetBrains/kotlin/releases/download/v{version}/kotlin-compiler-{version}.zip"], version = "2.1.20")` |
580+
| <a id="kotlin_repositories-ksp_compiler_release"></a>ksp_compiler_release | (internal) version provider from versions.bzl. | `struct(sha256 = "9f74659d447d3df29cabe0c8ee068810af313a584c1bbdde821f9894127f26e0", url_templates = ["https://github.com/google/ksp/releases/download/{version}/artifacts.zip"], version = "2.1.20-1.0.32")` |
581581

582582

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

examples/dagger/WORKSPACE

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,11 @@ load("@rules_jvm_external//:defs.bzl", "maven_install")
4040

4141
maven_install(
4242
artifacts = [
43-
"com.google.dagger:dagger:2.51.1",
44-
"com.google.dagger:dagger-compiler:2.51.1",
45-
"com.google.dagger:dagger-producers:2.51.1",
43+
"com.google.dagger:dagger:2.56.2",
44+
"com.google.dagger:dagger-compiler:2.56.2",
45+
"com.google.dagger:dagger-producers:2.56.2",
4646
"javax.inject:javax.inject:1",
47-
"org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.2",
47+
"org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2",
4848
],
4949
repositories = [
5050
"https://repo1.maven.org/maven2",

examples/jetpack_compose/WORKSPACE

Lines changed: 75 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -8,44 +8,57 @@ http_archive(
88
url = "https://github.com/bazelbuild/rules_kotlin/releases/download/v1.9.5/rules_kotlin-v1.9.5.tar.gz",
99
)
1010

11-
load("@rules_kotlin//kotlin:repositories.bzl", "kotlin_repositories", "kotlinc_version", "versions")
12-
13-
KOTLINC_RELEASE = versions.KOTLIN_CURRENT_COMPILER_RELEASE
14-
15-
kotlin_repositories(
16-
compiler_release = kotlinc_version(
17-
release = "2.0.0",
18-
sha256 = "ef578730976154fd2c5968d75af8c2703b3de84a78dffe913f670326e149da3b",
19-
) if KOTLINC_RELEASE.version == "1.9.22" else kotlinc_version(
20-
release = KOTLINC_RELEASE.version,
21-
sha256 = KOTLINC_RELEASE.sha256,
22-
),
11+
load("@rules_kotlin//kotlin:repositories.bzl", "kotlin_repositories", "versions")
12+
13+
http_archive(
14+
name = "rules_jvm_external",
15+
sha256 = versions.RULES_JVM_EXTERNAL.sha256,
16+
strip_prefix = "rules_jvm_external-%s" % versions.RULES_JVM_EXTERNAL.version,
17+
urls = [url.format(version = versions.RULES_JVM_EXTERNAL.version) for url in versions.RULES_JVM_EXTERNAL.url_templates],
2318
)
2419

25-
register_toolchains("//:kotlin_toolchain")
20+
http_archive(
21+
name = "rules_android",
22+
sha256 = versions.RULES_ANDROID.sha256,
23+
strip_prefix = versions.RULES_ANDROID.strip_prefix_template.format(version = versions.RULES_ANDROID.version),
24+
urls = [url.format(version = versions.RULES_ANDROID.version) for url in versions.RULES_ANDROID.url_templates],
25+
)
2626

27-
## JVM External
27+
http_archive(
28+
name = "robolectric",
29+
sha256 = "b2d2164bae80fcfbdd078eb2f0935ba06557402b8c814928d9e3bec7358e2b7b",
30+
strip_prefix = "robolectric-bazel-4.14.1.2",
31+
urls = ["https://github.com/robolectric/robolectric-bazel/releases/download/4.14.1.2/robolectric-bazel-4.14.1.2.tar.gz"],
32+
)
2833

29-
versions.use_repository(
30-
name = "io_bazel_stardoc",
31-
rule = http_archive,
32-
version = versions.IO_BAZEL_STARDOC,
34+
http_archive(
35+
name = "bazel_skylib",
36+
sha256 = versions.BAZEL_SKYLIB.sha256,
37+
urls = [url.format(version = versions.BAZEL_SKYLIB.version) for url in versions.BAZEL_SKYLIB.url_templates],
3338
)
3439

35-
RULES_JVM_EXTERNAL_TAG = "6.6"
40+
# Android rules dependencies
41+
load("@rules_android//:prereqs.bzl", "rules_android_prereqs")
3642

37-
RULES_JVM_EXTERNAL_SHA = "3afe5195069bd379373528899c03a3072f568d33bd96fe037bd43b1f590535e7"
43+
rules_android_prereqs()
3844

39-
http_archive(
40-
name = "rules_jvm_external",
41-
sha256 = RULES_JVM_EXTERNAL_SHA,
42-
strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG,
43-
url = "https://github.com/bazelbuild/rules_jvm_external/releases/download/%s/rules_jvm_external-%s.tar.gz" % (
44-
RULES_JVM_EXTERNAL_TAG,
45-
RULES_JVM_EXTERNAL_TAG,
46-
),
47-
)
45+
##### rules_java setup for rules_android #####
46+
load("@rules_java//java:rules_java_deps.bzl", "rules_java_dependencies")
47+
48+
rules_java_dependencies()
49+
50+
# note that the following line is what is minimally required from protobuf for the java rules
51+
# consider using the protobuf_deps() public API from @com_google_protobuf//:protobuf_deps.bzl
52+
load("@com_google_protobuf//bazel/private:proto_bazel_features.bzl", "proto_bazel_features") # buildifier: disable=bzl-visibility
53+
54+
proto_bazel_features(name = "proto_bazel_features")
55+
56+
# register toolchains
57+
load("@rules_java//java:repositories.bzl", "rules_java_toolchains")
58+
59+
rules_java_toolchains()
4860

61+
##### rules_jvm_external setup for rules_android #####
4962
load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
5063

5164
rules_jvm_external_deps()
@@ -54,19 +67,34 @@ load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")
5467

5568
rules_jvm_external_setup()
5669

57-
KOTLIN_TO_COMPOSE = {
58-
"1.9.22": [
59-
"org.jetbrains.kotlin:kotlin-compose-compiler-plugin-embeddable:2.0.0",
60-
"androidx.core:core-ktx:1.7.0",
61-
"androidx.appcompat:appcompat:1.4.1",
62-
"androidx.activity:activity-compose:1.3.0",
63-
"androidx.compose.material:material:1.2.1",
64-
"androidx.compose.ui:ui:1.2.1",
65-
"androidx.compose.ui:ui-tooling:1.2.1",
66-
"androidx.compose.runtime:runtime:1.2.1",
67-
],
68-
"2.1.0": [
69-
"org.jetbrains.kotlin:kotlin-compose-compiler-plugin-embeddable:2.1.0",
70+
##### rules_android setup #####
71+
load("@rules_android//:defs.bzl", "rules_android_workspace")
72+
73+
rules_android_workspace()
74+
75+
# Android SDK setup
76+
load("@rules_android//rules:rules.bzl", "android_sdk_repository")
77+
78+
android_sdk_repository(name = "androidsdk")
79+
80+
register_toolchains(
81+
"@rules_android//toolchains/android:android_default_toolchain",
82+
"@rules_android//toolchains/android_sdk:android_sdk_tools",
83+
)
84+
85+
kotlin_repositories()
86+
87+
load("@rules_kotlin//kotlin:core.bzl", "kt_register_toolchains")
88+
89+
kt_register_toolchains()
90+
91+
load("@rules_jvm_external//:defs.bzl", "maven_install")
92+
93+
maven_install(
94+
name = "maven_rules_kotlin_example",
95+
aar_import_bzl_label = "@rules_android//rules:rules.bzl",
96+
artifacts = [
97+
"org.jetbrains.kotlin:kotlin-compose-compiler-plugin-embeddable:2.1.20",
7098
"androidx.core:core-ktx:1.15.0",
7199
"androidx.appcompat:appcompat:1.7.0",
72100
"androidx.activity:activity-compose:1.7.0",
@@ -76,49 +104,20 @@ KOTLIN_TO_COMPOSE = {
76104
"androidx.compose.ui:ui-tooling:1.7.6",
77105
"androidx.compose.runtime:runtime:1.7.6",
78106
],
79-
}
80-
81-
load("@rules_jvm_external//:defs.bzl", "maven_install")
82-
83-
maven_install(
84-
name = "maven",
85-
artifacts = KOTLIN_TO_COMPOSE[KOTLINC_RELEASE.version],
86107
fetch_sources = True,
87-
maven_install_json = "//:maven_install-%s.json" % KOTLINC_RELEASE.version,
108+
maven_install_json = "//:maven_install.json",
88109
repositories = [
89110
"https://maven.google.com",
90111
"https://repo1.maven.org/maven2",
91112
],
92-
resolver = "coursier" if KOTLINC_RELEASE.version == "1.9.22" else "maven",
113+
resolver = "maven",
114+
use_starlark_android_rules = True,
93115
)
94116

95117
load("@maven//:defs.bzl", "pinned_maven_install")
96118

97119
pinned_maven_install()
98120

99-
http_archive(
100-
name = "bazel_skylib",
101-
sha256 = versions.SKYLIB_SHA,
102-
urls = ["https://github.com/bazelbuild/bazel-skylib/releases/download/%s/bazel-skylib-%s.tar.gz" % (
103-
versions.SKYLIB_VERSION,
104-
versions.SKYLIB_VERSION,
105-
)],
106-
)
107-
108-
## Android
109-
110-
http_archive(
111-
name = "rules_android",
112-
sha256 = versions.ANDROID.SHA,
113-
strip_prefix = "rules_android-%s" % versions.ANDROID.VERSION,
114-
urls = ["https://github.com/bazelbuild/rules_android/archive/v%s.zip" % versions.ANDROID.VERSION],
115-
)
116-
117-
load("@rules_android//android:rules.bzl", "android_sdk_repository")
121+
load("@robolectric//bazel:robolectric.bzl", "robolectric_repositories")
118122

119-
android_sdk_repository(name = "androidsdk")
120-
121-
android_ndk_repository(
122-
name = "androidndk",
123-
api_level = 21,
124-
)
123+
robolectric_repositories()

0 commit comments

Comments
 (0)