Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 17 additions & 4 deletions WORKSPACE
Original file line number Diff line number Diff line change
Expand Up @@ -35,23 +35,36 @@ kotlin_repositories(

register_toolchains("//:kotlin_toolchain")

http_archive(
name = "rules_java",
sha256 = "f8ae9ed3887df02f40de9f4f7ac3873e6dd7a471f9cddf63952538b94b59aeb3",
urls = [
"https://github.com/bazelbuild/rules_java/releases/download/7.6.1/rules_java-7.6.1.tar.gz",
],
)

load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")

git_repository(
name = "grab_bazel_common",
commit = "8cfb7bcb84f6d9631b01bb14c25644030ad2ecf8",
commit = "0962a9aaeee64ed17eb65b577060693c3b3dc244",
remote = "https://github.com/grab/grab-bazel-common.git",
)

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

bazel_common_dependencies()

load("@grab_bazel_common//rules:deps_init.bzl", "bazel_common_deps_init")

bazel_common_deps_init()

load("@grab_bazel_common//rules:setup.bzl", "bazel_common_setup")

bazel_common_setup(
buildifier_version = "6.3.3",
patched_android_tools = True,
pinned_maven_install = True,
)

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

http_archive(
name = "rules_jvm_external",
sha256 = "d31e369b854322ca5098ea12c69d7175ded971435e55c18dd9dd5f29cc5249ac",
strip_prefix = "rules_jvm_external-5.3",
url = "https://github.com/bazelbuild/rules_jvm_external/releases/download/5.3/rules_jvm_external-5.3.tar.gz",
sha256 = "e5f83b8f2678d2b26441e5eafefb1b061826608417b8d24e5e8e15e585eab1ba",
strip_prefix = "rules_jvm_external-6.10",
url = "https://github.com/bazelbuild/rules_jvm_external/releases/download/6.10/rules_jvm_external-6.10.tar.gz",
)

load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
Expand Down
19 changes: 15 additions & 4 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ grazel {
rules {
bazelCommon {
gitRepository {
commit = "8cfb7bcb84f6d9631b01bb14c25644030ad2ecf8"
commit = "0962a9aaeee64ed17eb65b577060693c3b3dc244"
remote = "https://github.com/grab/grab-bazel-common.git"
}
toolchains {
Expand All @@ -80,6 +80,17 @@ grazel {
supportedArch = ["amd64", "arm64"]
}
}
preBazelCommonArchives = [
[
name: "rules_java",
sha256: "f8ae9ed3887df02f40de9f4f7ac3873e6dd7a471f9cddf63952538b94b59aeb3",
url: "",
urls: ["https://github.com/bazelbuild/rules_java/releases/download/7.6.1/rules_java-7.6.1.tar.gz"],
stripPrefix: null,
patches: [],
patchArgs: [],
] as com.grab.grazel.extension.PreBazelCommonArchive,
]
}
googleServices {
crashlytics {
Expand All @@ -92,9 +103,9 @@ grazel {
}
mavenInstall {
httpArchiveRepository {
sha256 = "d31e369b854322ca5098ea12c69d7175ded971435e55c18dd9dd5f29cc5249ac"
stripPrefix = "rules_jvm_external-5.3"
url = String.format("https://github.com/bazelbuild/rules_jvm_external/releases/download/%s/rules_jvm_external-%s.tar.gz", "5.3", "5.3")
sha256 = "e5f83b8f2678d2b26441e5eafefb1b061826608417b8d24e5e8e15e585eab1ba"
stripPrefix = "rules_jvm_external-6.10"
url = String.format("https://github.com/bazelbuild/rules_jvm_external/releases/download/%s/rules_jvm_external-%s.tar.gz", "6.10", "6.10")
}
includeCredentials = false
resolveTimeout = 1000
Expand Down
2 changes: 1 addition & 1 deletion constants.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
*/
ext {
groupId = "com.grab.grazel"
versionName = project.hasProperty("versionName") ? versionName : "0.4.2-alpha.13"
versionName = project.hasProperty("versionName") ? versionName : "0.4.2-alpha.14"

website = "https://grab.github.io/Grazel/"
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,11 @@ package com.grab.grazel.bazel.rules

import com.grab.grazel.bazel.starlark.StatementsBuilder
import com.grab.grazel.bazel.starlark.add
import com.grab.grazel.bazel.starlark.array
import com.grab.grazel.bazel.starlark.function
import com.grab.grazel.bazel.starlark.load
import com.grab.grazel.bazel.starlark.quote
import com.grab.grazel.extension.PreBazelCommonArchive

const val GRAB_BAZEL_COMMON = "grab_bazel_common"
const val GRAB_BAZEL_COMMON_ARTIFACTS = "GRAB_BAZEL_COMMON_ARTIFACTS"
Expand Down Expand Up @@ -49,13 +51,18 @@ fun StatementsBuilder.registerToolchain(toolchain: String) {
fun StatementsBuilder.bazelCommonRepository(
repositoryRule: GitRepositoryRule,
buildifierVersion: String,
pinnedMavenInstall: Boolean = true,
additionalCoursierOptions: List<String> = emptyList(),
) {
add(repositoryRule)
val bazelCommonRepoName = repositoryRule.name
bazelCommonDependencies(bazelCommonRepoName)
bazelCommonDepsInit(bazelCommonRepoName)
bazelCommonInitialize(
bazelCommonRepoName,
buildifierVersion,
pinnedMavenInstall,
additionalCoursierOptions,
)
pinBazelCommonArtifacts(bazelCommonRepoName)
}
Expand All @@ -70,13 +77,38 @@ fun StatementsBuilder.bazelCommonDependencies(bazelCommonRepoName: String) {
function("bazel_common_dependencies")
}

fun StatementsBuilder.bazelCommonDepsInit(bazelCommonRepoName: String) {
load("@${bazelCommonRepoName}//rules:deps_init.bzl", "bazel_common_deps_init")
function("bazel_common_deps_init")
}

fun StatementsBuilder.bazelCommonInitialize(
bazelCommonRepoName: String,
buildifierVersion: String,
pinnedMavenInstall: Boolean = true,
additionalCoursierOptions: List<String> = emptyList(),
) {
load("@${bazelCommonRepoName}//rules:setup.bzl", "bazel_common_setup")
function("bazel_common_setup") {
"patched_android_tools" `=` "True"
"buildifier_version" `=` buildifierVersion.quote
"pinned_maven_install" `=` if (pinnedMavenInstall) "True" else "False"
if (additionalCoursierOptions.isNotEmpty()) {
"additional_coursier_options" `=` array(additionalCoursierOptions.quote)
}
}
}

fun StatementsBuilder.preBazelCommonArchives(archives: List<PreBazelCommonArchive>) {
archives.forEach { archive ->
add(HttpArchiveRule(
name = archive.name,
url = archive.url,
urls = archive.urls,
sha256 = archive.sha256,
stripPrefix = archive.stripPrefix,
patches = archive.patches,
patchArgs = archive.patchArgs
))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ fun StatementsBuilder.mavenInstall(
overrideTargets: Map<String, String> = emptyMap(),
versionConflictPolicy: String? = null,
artifactPinning: Boolean = false,
additionalCoursierOptions: List<String> = emptyList(),
) {
load("@$rulesJvmExternalName//:defs.bzl", "maven_install")
load("@$rulesJvmExternalName//:specs.bzl", "maven")
Expand Down Expand Up @@ -146,6 +147,10 @@ fun StatementsBuilder.mavenInstall(
if (artifactPinning) {
"fail_if_repin_required" `=` "False"
}

if (additionalCoursierOptions.isNotEmpty()) {
"additional_coursier_options" `=` array(additionalCoursierOptions.quote)
}
}

if (artifactPinning) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package com.grab.grazel.bazel.rules

import com.grab.grazel.bazel.starlark.StatementsBuilder
import com.grab.grazel.bazel.starlark.array
import com.grab.grazel.bazel.starlark.load
import com.grab.grazel.bazel.starlark.quote

Expand Down Expand Up @@ -68,18 +69,32 @@ fun StatementsBuilder.httpArchive(
url: String,
sha256: String? = null,
type: String? = null,
stripPrefix: String? = null
stripPrefix: String? = null,
urls: List<String> = emptyList(),
patches: List<String> = emptyList(),
patchArgs: List<String> = emptyList()
) {
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
rule("http_archive") {
"name" `=` name.quote
stripPrefix?.let { "strip_prefix" `=` stripPrefix }
sha256?.let { "sha256" `=` sha256 }
"url" `=` url
if (urls.isNotEmpty()) {
"urls" `=` array(urls.quote)
} else if (url.isNotEmpty()) {
"url" `=` url
}
type?.let { "type" `=` type }
if (patches.isNotEmpty()) {
"patches" `=` array(patches.quote)
}
if (patchArgs.isNotEmpty()) {
"patch_args" `=` array(patchArgs.quote)
}
}
}


/**
* Data structure denoting `http_archive`
*
Expand All @@ -90,16 +105,23 @@ data class HttpArchiveRule(
var url: String,
var sha256: String? = null,
var type: String? = null,
var stripPrefix: String? = null
var stripPrefix: String? = null,
var urls: List<String> = emptyList(),
var patches: List<String> = emptyList(),
var patchArgs: List<String> = emptyList()
) : BazelRepositoryRule {
override fun StatementsBuilder.statements() {
httpArchive(
name = name.quote,
url = url.quote,
urls = urls,
sha256 = sha256?.quote,
type = type?.quote,
stripPrefix = stripPrefix?.quote
stripPrefix = stripPrefix?.quote,
patches = patches,
patchArgs = patchArgs
)
}
}


Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,44 @@ package com.grab.grazel.extension
import com.grab.grazel.bazel.rules.GRAB_BAZEL_COMMON
import com.grab.grazel.bazel.rules.GitRepositoryRule
import groovy.lang.Closure
import org.gradle.api.model.ObjectFactory
import org.gradle.api.provider.ListProperty
import org.gradle.api.provider.Property
import org.gradle.kotlin.dsl.listProperty
import org.gradle.kotlin.dsl.property

/**
* Configuration for http archives needed before bazel_common initialization
* (e.g., remote_java_tools, rules_java_builtin, rules_java)
*/
open class PreBazelCommonArchive(
open var name: String = "",
open var sha256: String = "",
open var url: String = "",
open var urls: List<String> = emptyList(),
open var stripPrefix: String? = null,
open var patches: List<String> = emptyList(),
open var patchArgs: List<String> = emptyList(),
)

class BazelCommonExtension(
private val objects: ObjectFactory? = null,
var repository: GitRepositoryRule = GitRepositoryRule(name = GRAB_BAZEL_COMMON),
var toolchains: CommonToolchainExtension = CommonToolchainExtension()
var toolchains: CommonToolchainExtension = CommonToolchainExtension(),
private val _preBazelCommonArchives: MutableList<PreBazelCommonArchive> = mutableListOf(),
) {
var pinnedMavenInstall: Property<Boolean>? = objects?.property<Boolean>()?.convention(true)
var additionalCoursierOptions: ListProperty<String>? = objects?.listProperty<String>()?.convention(
emptyList()
)

var preBazelCommonArchives: List<PreBazelCommonArchive>
get() = _preBazelCommonArchives
set(value) {
_preBazelCommonArchives.clear()
_preBazelCommonArchives.addAll(value)
}

fun gitRepository(closure: Closure<*>) {
closure.delegate = repository
closure.call()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,15 @@ import org.gradle.kotlin.dsl.property

internal const val RULES_JVM_EXTERNAL_NAME = "rules_jvm_external"
internal const val RULES_JVM_EXTERNAL_SHA256 =
"d31e369b854322ca5098ea12c69d7175ded971435e55c18dd9dd5f29cc5249ac"
internal const val RULES_JVM_EXTERNAl_TAG = "5.3"
"e5f83b8f2678d2b26441e5eafefb1b061826608417b8d24e5e8e15e585eab1ba"
internal const val RULES_JVM_EXTERNAl_TAG = "6.10"

internal val MAVEN_INSTALL_REPOSITORY = HttpArchiveRule(
name = RULES_JVM_EXTERNAL_NAME,
sha256 = RULES_JVM_EXTERNAL_SHA256,
stripPrefix = "rules_jvm_external-%s".format(RULES_JVM_EXTERNAl_TAG),
url = "https://github.com/bazelbuild/rules_jvm_external/archive/%s.zip".format(
url = "https://github.com/bazelbuild/rules_jvm_external/releases/download/%s/rules_jvm_external-%s.tar.gz".format(
RULES_JVM_EXTERNAl_TAG,
RULES_JVM_EXTERNAl_TAG
)
)
Expand All @@ -57,6 +58,8 @@ internal val MAVEN_INSTALL_REPOSITORY = HttpArchiveRule(
* `maven_install.override_targets` param.
* @param jetifyIncludeList Maven artifacts in `groupId:artifact` format that should be added
* `maven_install.jetify_include_list`
* @param additionalCoursierOptions Additional options to pass to Coursier, maps to
* `maven_install.additional_coursier_options`
*/
data class MavenInstallExtension(
private val objects: ObjectFactory,
Expand All @@ -70,6 +73,9 @@ data class MavenInstallExtension(
var jetifyExcludeList: ListProperty<String> = objects.listProperty(),
var versionConflictPolicy: String? = null,
var includeCredentials: Boolean = true,
var additionalCoursierOptions: ListProperty<String> = objects.listProperty<String>().convention(
emptyList()
),
) {
// TODO GitRepositoryRule
/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ data class DependenciesExtension(
*/
data class RulesExtension(
private val objects: ObjectFactory,
val bazelCommon: BazelCommonExtension = BazelCommonExtension(),
val bazelCommon: BazelCommonExtension = BazelCommonExtension(objects),
val googleServices: GoogleServicesExtension = GoogleServicesExtension(),
val mavenInstall: MavenInstallExtension = MavenInstallExtension(objects),
val kotlin: KotlinExtension = KotlinExtension(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,8 @@ constructor(
artifactPinning = mavenInstallExtension.artifactPinning.enabled.get(),
versionConflictPolicy = mavenInstallExtension.versionConflictPolicy,
mavenInstallJson = mavenInstallJson.name,
isMavenInstallJsonEnabled = mavenInstallExtension.artifactPinning.enabled.get() && mavenInstallJson.exists()
isMavenInstallJsonEnabled = mavenInstallExtension.artifactPinning.enabled.get() && mavenInstallJson.exists(),
additionalCoursierOptions = mavenInstallExtension.additionalCoursierOptions.get()
)
}

Expand Down Expand Up @@ -151,7 +152,8 @@ constructor(
artifactPinning = mavenInstallExtension.artifactPinning.enabled.get(),
versionConflictPolicy = mavenInstallExtension.versionConflictPolicy,
mavenInstallJson = kspMavenInstallJson.name,
isMavenInstallJsonEnabled = mavenInstallExtension.artifactPinning.enabled.get() && kspMavenInstallJson.exists()
isMavenInstallJsonEnabled = mavenInstallExtension.artifactPinning.enabled.get() && kspMavenInstallJson.exists(),
additionalCoursierOptions = mavenInstallExtension.additionalCoursierOptions.get()
)
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ internal data class MavenInstallData(
* then in generated code maven_install_json will be commented out
*/
val isMavenInstallJsonEnabled: Boolean,
val versionConflictPolicy: String?
val versionConflictPolicy: String?,
val additionalCoursierOptions: List<String> = listOf("--parallel", "12")
)

internal data class JetifierConfig(
Expand Down
Loading
Loading