Skip to content

Commit b081b0e

Browse files
authored
Pass the JDK to Lint (#78)
1 parent 8fa7788 commit b081b0e

File tree

4 files changed

+30
-8
lines changed

4 files changed

+30
-8
lines changed

rules/attrs.bzl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,5 +77,8 @@ ATTRS = dict(
7777
default = [],
7878
doc = "Custom lint rules to run.",
7979
),
80+
_javabase = attr.label(
81+
default = "@bazel_tools//tools/jdk:current_java_runtime",
82+
),
8083
_use_auto_exec_groups = attr.bool(default = True),
8184
)

rules/impl.bzl

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,7 @@ load(
55
"@rules_android//providers:providers.bzl",
66
"AndroidLibraryResourceClassJarProvider",
77
)
8-
load(
9-
"@rules_java//java:defs.bzl",
10-
"JavaInfo",
11-
)
8+
load("@rules_java//java:defs.bzl", "JavaInfo", "java_common")
129
load(
1310
":collect_aar_outputs_aspect.bzl",
1411
_AndroidLintAARInfo = "AndroidLintAARInfo",
@@ -45,7 +42,9 @@ def _run_android_lint(
4542
autofix,
4643
regenerate,
4744
android_lint_enable_check_dependencies,
48-
android_lint_skip_bytecode_verifier):
45+
android_lint_skip_bytecode_verifier,
46+
android_lint_toolchain,
47+
java_runtime_info):
4948
"""Constructs the Android Lint actions
5049
5150
Args:
@@ -71,6 +70,8 @@ def _run_android_lint(
7170
regenerate: Whether to regenerate the baseline files
7271
android_lint_enable_check_dependencies: Enables dependency checking during analysis
7372
android_lint_skip_bytecode_verifier: Disables bytecode verification
73+
android_lint_toolchain: The android lint toolchain
74+
java_runtime_info: The java runtime toolchain info
7475
"""
7576
inputs = []
7677
outputs = [output]
@@ -135,9 +136,12 @@ def _run_android_lint(
135136
args.add("--output", output)
136137
outputs.append(output)
137138

138-
toolchain = _utils.get_android_lint_toolchain(ctx)
139-
if toolchain.android_home != None:
140-
args.add("--android-home", toolchain.android_home.label.workspace_root)
139+
if android_lint_toolchain.android_home != None:
140+
args.add("--android-home", android_lint_toolchain.android_home.label.workspace_root)
141+
142+
if java_runtime_info:
143+
args.add("--jdk-home", java_runtime_info.java_home)
144+
inputs.extend(java_runtime_info.files.to_list())
141145

142146
ctx.actions.run(
143147
mnemonic = "AndroidLint",
@@ -248,6 +252,8 @@ def process_android_lint_issues(ctx, regenerate):
248252
regenerate = regenerate,
249253
android_lint_enable_check_dependencies = _utils.get_android_lint_toolchain(ctx).android_lint_enable_check_dependencies,
250254
android_lint_skip_bytecode_verifier = _utils.get_android_lint_toolchain(ctx).android_lint_skip_bytecode_verifier,
255+
android_lint_toolchain = _utils.get_android_lint_toolchain(ctx),
256+
java_runtime_info = ctx.attr._javabase[java_common.JavaRuntimeInfo],
251257
)
252258

253259
return struct(

src/cli/AndroidLintActionArgs.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,13 @@ internal class AndroidLintActionArgs(
3535
help = "The relative location of Android home",
3636
).default { null }
3737

38+
val jdkHome: Path? by parser
39+
.storing(
40+
names = arrayOf("--jdk-home"),
41+
help = "The relative location of JDK home",
42+
transform = argsParserPathTransformer,
43+
).default { null }
44+
3845
val srcs: List<Path> by parser.adding(
3946
names = arrayOf("--src"),
4047
help = "",

src/cli/AndroidLintRunner.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,12 @@ internal class AndroidLintRunner {
129129
args.add(androidHomePath)
130130
}
131131

132+
if (actionArgs.jdkHome != null) {
133+
val jdkHome = actionArgs.jdkHome!!
134+
args.add("--jdk-home")
135+
args.add(jdkHome.absolutePathString())
136+
}
137+
132138
invoker.setCheckDependencies(actionArgs.enableCheckDependencies)
133139
return invoker.invoke(args.toTypedArray())
134140
}

0 commit comments

Comments
 (0)