Skip to content

Commit 325ddc7

Browse files
authored
Merge branch 'master' into fix-ksp-maven-pinning
2 parents 8c48331 + cab082e commit 325ddc7

File tree

14 files changed

+166
-23
lines changed

14 files changed

+166
-23
lines changed

WORKSPACE

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,23 +35,36 @@ kotlin_repositories(
3535

3636
register_toolchains("//:kotlin_toolchain")
3737

38+
http_archive(
39+
name = "rules_java",
40+
sha256 = "f8ae9ed3887df02f40de9f4f7ac3873e6dd7a471f9cddf63952538b94b59aeb3",
41+
urls = [
42+
"https://github.com/bazelbuild/rules_java/releases/download/7.6.1/rules_java-7.6.1.tar.gz",
43+
],
44+
)
45+
3846
load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
3947

4048
git_repository(
4149
name = "grab_bazel_common",
42-
commit = "8cfb7bcb84f6d9631b01bb14c25644030ad2ecf8",
50+
commit = "0962a9aaeee64ed17eb65b577060693c3b3dc244",
4351
remote = "https://github.com/grab/grab-bazel-common.git",
4452
)
4553

4654
load("@grab_bazel_common//rules:repositories.bzl", "bazel_common_dependencies")
4755

4856
bazel_common_dependencies()
4957

58+
load("@grab_bazel_common//rules:deps_init.bzl", "bazel_common_deps_init")
59+
60+
bazel_common_deps_init()
61+
5062
load("@grab_bazel_common//rules:setup.bzl", "bazel_common_setup")
5163

5264
bazel_common_setup(
5365
buildifier_version = "6.3.3",
5466
patched_android_tools = True,
67+
pinned_maven_install = True,
5568
)
5669

5770
load("@grab_bazel_common//rules:maven.bzl", "pin_bazel_common_dependencies")
@@ -74,9 +87,9 @@ load("@grab_bazel_common//:workspace_defs.bzl", "GRAB_BAZEL_COMMON_ARTIFACTS")
7487

7588
http_archive(
7689
name = "rules_jvm_external",
77-
sha256 = "d31e369b854322ca5098ea12c69d7175ded971435e55c18dd9dd5f29cc5249ac",
78-
strip_prefix = "rules_jvm_external-5.3",
79-
url = "https://github.com/bazelbuild/rules_jvm_external/releases/download/5.3/rules_jvm_external-5.3.tar.gz",
90+
sha256 = "e5f83b8f2678d2b26441e5eafefb1b061826608417b8d24e5e8e15e585eab1ba",
91+
strip_prefix = "rules_jvm_external-6.10",
92+
url = "https://github.com/bazelbuild/rules_jvm_external/releases/download/6.10/rules_jvm_external-6.10.tar.gz",
8093
)
8194

8295
load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")

build.gradle

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ grazel {
7070
rules {
7171
bazelCommon {
7272
gitRepository {
73-
commit = "8cfb7bcb84f6d9631b01bb14c25644030ad2ecf8"
73+
commit = "0962a9aaeee64ed17eb65b577060693c3b3dc244"
7474
remote = "https://github.com/grab/grab-bazel-common.git"
7575
}
7676
toolchains {
@@ -80,6 +80,17 @@ grazel {
8080
supportedArch = ["amd64", "arm64"]
8181
}
8282
}
83+
preBazelCommonArchives = [
84+
[
85+
name: "rules_java",
86+
sha256: "f8ae9ed3887df02f40de9f4f7ac3873e6dd7a471f9cddf63952538b94b59aeb3",
87+
url: "",
88+
urls: ["https://github.com/bazelbuild/rules_java/releases/download/7.6.1/rules_java-7.6.1.tar.gz"],
89+
stripPrefix: null,
90+
patches: [],
91+
patchArgs: [],
92+
] as com.grab.grazel.extension.PreBazelCommonArchive,
93+
]
8394
}
8495
googleServices {
8596
crashlytics {
@@ -92,9 +103,9 @@ grazel {
92103
}
93104
mavenInstall {
94105
httpArchiveRepository {
95-
sha256 = "d31e369b854322ca5098ea12c69d7175ded971435e55c18dd9dd5f29cc5249ac"
96-
stripPrefix = "rules_jvm_external-5.3"
97-
url = String.format("https://github.com/bazelbuild/rules_jvm_external/releases/download/%s/rules_jvm_external-%s.tar.gz", "5.3", "5.3")
106+
sha256 = "e5f83b8f2678d2b26441e5eafefb1b061826608417b8d24e5e8e15e585eab1ba"
107+
stripPrefix = "rules_jvm_external-6.10"
108+
url = String.format("https://github.com/bazelbuild/rules_jvm_external/releases/download/%s/rules_jvm_external-%s.tar.gz", "6.10", "6.10")
98109
}
99110
includeCredentials = false
100111
resolveTimeout = 1000

constants.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
*/
1616
ext {
1717
groupId = "com.grab.grazel"
18-
versionName = project.hasProperty("versionName") ? versionName : "0.4.2-alpha.13"
18+
versionName = project.hasProperty("versionName") ? versionName : "0.4.2-alpha.14"
1919

2020
website = "https://grab.github.io/Grazel/"
2121
}

grazel-gradle-plugin/src/main/kotlin/com/grab/grazel/bazel/rules/CommonRules.kt

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,11 @@ package com.grab.grazel.bazel.rules
1818

1919
import com.grab.grazel.bazel.starlark.StatementsBuilder
2020
import com.grab.grazel.bazel.starlark.add
21+
import com.grab.grazel.bazel.starlark.array
2122
import com.grab.grazel.bazel.starlark.function
2223
import com.grab.grazel.bazel.starlark.load
2324
import com.grab.grazel.bazel.starlark.quote
25+
import com.grab.grazel.extension.PreBazelCommonArchive
2426

2527
const val GRAB_BAZEL_COMMON = "grab_bazel_common"
2628
const val GRAB_BAZEL_COMMON_ARTIFACTS = "GRAB_BAZEL_COMMON_ARTIFACTS"
@@ -49,13 +51,18 @@ fun StatementsBuilder.registerToolchain(toolchain: String) {
4951
fun StatementsBuilder.bazelCommonRepository(
5052
repositoryRule: GitRepositoryRule,
5153
buildifierVersion: String,
54+
pinnedMavenInstall: Boolean = true,
55+
additionalCoursierOptions: List<String> = emptyList(),
5256
) {
5357
add(repositoryRule)
5458
val bazelCommonRepoName = repositoryRule.name
5559
bazelCommonDependencies(bazelCommonRepoName)
60+
bazelCommonDepsInit(bazelCommonRepoName)
5661
bazelCommonInitialize(
5762
bazelCommonRepoName,
5863
buildifierVersion,
64+
pinnedMavenInstall,
65+
additionalCoursierOptions,
5966
)
6067
pinBazelCommonArtifacts(bazelCommonRepoName)
6168
}
@@ -70,13 +77,38 @@ fun StatementsBuilder.bazelCommonDependencies(bazelCommonRepoName: String) {
7077
function("bazel_common_dependencies")
7178
}
7279

80+
fun StatementsBuilder.bazelCommonDepsInit(bazelCommonRepoName: String) {
81+
load("@${bazelCommonRepoName}//rules:deps_init.bzl", "bazel_common_deps_init")
82+
function("bazel_common_deps_init")
83+
}
84+
7385
fun StatementsBuilder.bazelCommonInitialize(
7486
bazelCommonRepoName: String,
7587
buildifierVersion: String,
88+
pinnedMavenInstall: Boolean = true,
89+
additionalCoursierOptions: List<String> = emptyList(),
7690
) {
7791
load("@${bazelCommonRepoName}//rules:setup.bzl", "bazel_common_setup")
7892
function("bazel_common_setup") {
7993
"patched_android_tools" `=` "True"
8094
"buildifier_version" `=` buildifierVersion.quote
95+
"pinned_maven_install" `=` if (pinnedMavenInstall) "True" else "False"
96+
if (additionalCoursierOptions.isNotEmpty()) {
97+
"additional_coursier_options" `=` array(additionalCoursierOptions.quote)
98+
}
99+
}
100+
}
101+
102+
fun StatementsBuilder.preBazelCommonArchives(archives: List<PreBazelCommonArchive>) {
103+
archives.forEach { archive ->
104+
add(HttpArchiveRule(
105+
name = archive.name,
106+
url = archive.url,
107+
urls = archive.urls,
108+
sha256 = archive.sha256,
109+
stripPrefix = archive.stripPrefix,
110+
patches = archive.patches,
111+
patchArgs = archive.patchArgs
112+
))
81113
}
82114
}

grazel-gradle-plugin/src/main/kotlin/com/grab/grazel/bazel/rules/MavenRules.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ fun StatementsBuilder.mavenInstall(
9191
overrideTargets: Map<String, String> = emptyMap(),
9292
versionConflictPolicy: String? = null,
9393
artifactPinning: Boolean = false,
94+
additionalCoursierOptions: List<String> = emptyList(),
9495
) {
9596
load("@$rulesJvmExternalName//:defs.bzl", "maven_install")
9697
load("@$rulesJvmExternalName//:specs.bzl", "maven")
@@ -146,6 +147,10 @@ fun StatementsBuilder.mavenInstall(
146147
if (artifactPinning) {
147148
"fail_if_repin_required" `=` "False"
148149
}
150+
151+
if (additionalCoursierOptions.isNotEmpty()) {
152+
"additional_coursier_options" `=` array(additionalCoursierOptions.quote)
153+
}
149154
}
150155

151156
if (artifactPinning) {

grazel-gradle-plugin/src/main/kotlin/com/grab/grazel/bazel/rules/RepositoryRules.kt

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package com.grab.grazel.bazel.rules
1818

1919
import com.grab.grazel.bazel.starlark.StatementsBuilder
20+
import com.grab.grazel.bazel.starlark.array
2021
import com.grab.grazel.bazel.starlark.load
2122
import com.grab.grazel.bazel.starlark.quote
2223

@@ -68,18 +69,32 @@ fun StatementsBuilder.httpArchive(
6869
url: String,
6970
sha256: String? = null,
7071
type: String? = null,
71-
stripPrefix: String? = null
72+
stripPrefix: String? = null,
73+
urls: List<String> = emptyList(),
74+
patches: List<String> = emptyList(),
75+
patchArgs: List<String> = emptyList()
7276
) {
7377
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
7478
rule("http_archive") {
7579
"name" `=` name.quote
7680
stripPrefix?.let { "strip_prefix" `=` stripPrefix }
7781
sha256?.let { "sha256" `=` sha256 }
78-
"url" `=` url
82+
if (urls.isNotEmpty()) {
83+
"urls" `=` array(urls.quote)
84+
} else if (url.isNotEmpty()) {
85+
"url" `=` url
86+
}
7987
type?.let { "type" `=` type }
88+
if (patches.isNotEmpty()) {
89+
"patches" `=` array(patches.quote)
90+
}
91+
if (patchArgs.isNotEmpty()) {
92+
"patch_args" `=` array(patchArgs.quote)
93+
}
8094
}
8195
}
8296

97+
8398
/**
8499
* Data structure denoting `http_archive`
85100
*
@@ -90,16 +105,23 @@ data class HttpArchiveRule(
90105
var url: String,
91106
var sha256: String? = null,
92107
var type: String? = null,
93-
var stripPrefix: String? = null
108+
var stripPrefix: String? = null,
109+
var urls: List<String> = emptyList(),
110+
var patches: List<String> = emptyList(),
111+
var patchArgs: List<String> = emptyList()
94112
) : BazelRepositoryRule {
95113
override fun StatementsBuilder.statements() {
96114
httpArchive(
97115
name = name.quote,
98116
url = url.quote,
117+
urls = urls,
99118
sha256 = sha256?.quote,
100119
type = type?.quote,
101-
stripPrefix = stripPrefix?.quote
120+
stripPrefix = stripPrefix?.quote,
121+
patches = patches,
122+
patchArgs = patchArgs
102123
)
103124
}
104125
}
105126

127+

grazel-gradle-plugin/src/main/kotlin/com/grab/grazel/extension/BazelCommonExtension.kt

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,44 @@ package com.grab.grazel.extension
1919
import com.grab.grazel.bazel.rules.GRAB_BAZEL_COMMON
2020
import com.grab.grazel.bazel.rules.GitRepositoryRule
2121
import groovy.lang.Closure
22+
import org.gradle.api.model.ObjectFactory
23+
import org.gradle.api.provider.ListProperty
24+
import org.gradle.api.provider.Property
25+
import org.gradle.kotlin.dsl.listProperty
26+
import org.gradle.kotlin.dsl.property
27+
28+
/**
29+
* Configuration for http archives needed before bazel_common initialization
30+
* (e.g., remote_java_tools, rules_java_builtin, rules_java)
31+
*/
32+
open class PreBazelCommonArchive(
33+
open var name: String = "",
34+
open var sha256: String = "",
35+
open var url: String = "",
36+
open var urls: List<String> = emptyList(),
37+
open var stripPrefix: String? = null,
38+
open var patches: List<String> = emptyList(),
39+
open var patchArgs: List<String> = emptyList(),
40+
)
2241

2342
class BazelCommonExtension(
43+
private val objects: ObjectFactory? = null,
2444
var repository: GitRepositoryRule = GitRepositoryRule(name = GRAB_BAZEL_COMMON),
25-
var toolchains: CommonToolchainExtension = CommonToolchainExtension()
45+
var toolchains: CommonToolchainExtension = CommonToolchainExtension(),
46+
private val _preBazelCommonArchives: MutableList<PreBazelCommonArchive> = mutableListOf(),
2647
) {
48+
var pinnedMavenInstall: Property<Boolean>? = objects?.property<Boolean>()?.convention(true)
49+
var additionalCoursierOptions: ListProperty<String>? = objects?.listProperty<String>()?.convention(
50+
emptyList()
51+
)
52+
53+
var preBazelCommonArchives: List<PreBazelCommonArchive>
54+
get() = _preBazelCommonArchives
55+
set(value) {
56+
_preBazelCommonArchives.clear()
57+
_preBazelCommonArchives.addAll(value)
58+
}
59+
2760
fun gitRepository(closure: Closure<*>) {
2861
closure.delegate = repository
2962
closure.call()

grazel-gradle-plugin/src/main/kotlin/com/grab/grazel/extension/MavenInstallExtension.kt

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,15 @@ import org.gradle.kotlin.dsl.property
2929

3030
internal const val RULES_JVM_EXTERNAL_NAME = "rules_jvm_external"
3131
internal const val RULES_JVM_EXTERNAL_SHA256 =
32-
"d31e369b854322ca5098ea12c69d7175ded971435e55c18dd9dd5f29cc5249ac"
33-
internal const val RULES_JVM_EXTERNAl_TAG = "5.3"
32+
"e5f83b8f2678d2b26441e5eafefb1b061826608417b8d24e5e8e15e585eab1ba"
33+
internal const val RULES_JVM_EXTERNAl_TAG = "6.10"
3434

3535
internal val MAVEN_INSTALL_REPOSITORY = HttpArchiveRule(
3636
name = RULES_JVM_EXTERNAL_NAME,
3737
sha256 = RULES_JVM_EXTERNAL_SHA256,
3838
stripPrefix = "rules_jvm_external-%s".format(RULES_JVM_EXTERNAl_TAG),
39-
url = "https://github.com/bazelbuild/rules_jvm_external/archive/%s.zip".format(
39+
url = "https://github.com/bazelbuild/rules_jvm_external/releases/download/%s/rules_jvm_external-%s.tar.gz".format(
40+
RULES_JVM_EXTERNAl_TAG,
4041
RULES_JVM_EXTERNAl_TAG
4142
)
4243
)
@@ -57,6 +58,8 @@ internal val MAVEN_INSTALL_REPOSITORY = HttpArchiveRule(
5758
* `maven_install.override_targets` param.
5859
* @param jetifyIncludeList Maven artifacts in `groupId:artifact` format that should be added
5960
* `maven_install.jetify_include_list`
61+
* @param additionalCoursierOptions Additional options to pass to Coursier, maps to
62+
* `maven_install.additional_coursier_options`
6063
*/
6164
data class MavenInstallExtension(
6265
private val objects: ObjectFactory,
@@ -70,6 +73,9 @@ data class MavenInstallExtension(
7073
var jetifyExcludeList: ListProperty<String> = objects.listProperty(),
7174
var versionConflictPolicy: String? = null,
7275
var includeCredentials: Boolean = true,
76+
var additionalCoursierOptions: ListProperty<String> = objects.listProperty<String>().convention(
77+
emptyList()
78+
),
7379
) {
7480
// TODO GitRepositoryRule
7581
/**

grazel-gradle-plugin/src/main/kotlin/com/grab/grazel/extension/RulesExtension.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ data class DependenciesExtension(
5050
*/
5151
data class RulesExtension(
5252
private val objects: ObjectFactory,
53-
val bazelCommon: BazelCommonExtension = BazelCommonExtension(),
53+
val bazelCommon: BazelCommonExtension = BazelCommonExtension(objects),
5454
val googleServices: GoogleServicesExtension = GoogleServicesExtension(),
5555
val mavenInstall: MavenInstallExtension = MavenInstallExtension(objects),
5656
val kotlin: KotlinExtension = KotlinExtension(),

grazel-gradle-plugin/src/main/kotlin/com/grab/grazel/migrate/dependencies/BazelLogParsingOutputStream.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,11 @@ class BazelLogParsingOutputStream(
5757
*/
5858
private val errorMessages = listOf(
5959
"contains an invalid signature",
60+
"contains an invalid input signature",
61+
"contains an outdated input signature",
62+
"does not contain a signature of the required artifacts",
63+
"does not contain a signature entry of the dependency tree",
64+
"does not contain an up to date hash",
6065
"maven_install.json contains an invalid input signature and must be regenerated",
6166
"Lock file should be updated",
6267
"It is not a valid maven_install.json file",

0 commit comments

Comments
 (0)