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
3 changes: 3 additions & 0 deletions rules/attrs.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -77,5 +77,8 @@ ATTRS = dict(
default = [],
doc = "Custom lint rules to run.",
),
_javabase = attr.label(
default = "@bazel_tools//tools/jdk:current_java_runtime",
),
_use_auto_exec_groups = attr.bool(default = True),
)
22 changes: 14 additions & 8 deletions rules/impl.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,7 @@ load(
"@rules_android//providers:providers.bzl",
"AndroidLibraryResourceClassJarProvider",
)
load(
"@rules_java//java:defs.bzl",
"JavaInfo",
)
load("@rules_java//java:defs.bzl", "JavaInfo", "java_common")
load(
":collect_aar_outputs_aspect.bzl",
_AndroidLintAARInfo = "AndroidLintAARInfo",
Expand Down Expand Up @@ -45,7 +42,9 @@ def _run_android_lint(
autofix,
regenerate,
android_lint_enable_check_dependencies,
android_lint_skip_bytecode_verifier):
android_lint_skip_bytecode_verifier,
android_lint_toolchain,
java_runtime_info):
"""Constructs the Android Lint actions

Args:
Expand All @@ -71,6 +70,8 @@ def _run_android_lint(
regenerate: Whether to regenerate the baseline files
android_lint_enable_check_dependencies: Enables dependency checking during analysis
android_lint_skip_bytecode_verifier: Disables bytecode verification
android_lint_toolchain: The android lint toolchain
java_runtime_info: The java runtime toolchain info
"""
inputs = []
outputs = [output]
Expand Down Expand Up @@ -135,9 +136,12 @@ def _run_android_lint(
args.add("--output", output)
outputs.append(output)

toolchain = _utils.get_android_lint_toolchain(ctx)
if toolchain.android_home != None:
args.add("--android-home", toolchain.android_home.label.workspace_root)
if android_lint_toolchain.android_home != None:
args.add("--android-home", android_lint_toolchain.android_home.label.workspace_root)

if java_runtime_info:
args.add("--jdk-home", java_runtime_info.java_home)
inputs.extend(java_runtime_info.files.to_list())

ctx.actions.run(
mnemonic = "AndroidLint",
Expand Down Expand Up @@ -248,6 +252,8 @@ def process_android_lint_issues(ctx, regenerate):
regenerate = regenerate,
android_lint_enable_check_dependencies = _utils.get_android_lint_toolchain(ctx).android_lint_enable_check_dependencies,
android_lint_skip_bytecode_verifier = _utils.get_android_lint_toolchain(ctx).android_lint_skip_bytecode_verifier,
android_lint_toolchain = _utils.get_android_lint_toolchain(ctx),
java_runtime_info = ctx.attr._javabase[java_common.JavaRuntimeInfo],
)

return struct(
Expand Down
7 changes: 7 additions & 0 deletions src/cli/AndroidLintActionArgs.kt
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,13 @@ internal class AndroidLintActionArgs(
help = "The relative location of Android home",
).default { null }

val jdkHome: Path? by parser
.storing(
names = arrayOf("--jdk-home"),
help = "The relative location of JDK home",
transform = argsParserPathTransformer,
).default { null }

val srcs: List<Path> by parser.adding(
names = arrayOf("--src"),
help = "",
Expand Down
6 changes: 6 additions & 0 deletions src/cli/AndroidLintRunner.kt
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,12 @@ internal class AndroidLintRunner {
args.add(androidHomePath)
}

if (actionArgs.jdkHome != null) {
val jdkHome = actionArgs.jdkHome!!
args.add("--jdk-home")
args.add(jdkHome.absolutePathString())
}

invoker.setCheckDependencies(actionArgs.enableCheckDependencies)
return invoker.invoke(args.toTypedArray())
}
Expand Down