Skip to content

Commit 31edc44

Browse files
thirtysevenrules_java Copybara
authored andcommitted
Add make variables for runfiles location of $(JAVABASE) to support --no_legacy_external_runfiles. (#272)
Add make variables for runfiles locations of `$(JAVA)` and `$(JAVABASE)`. These are needed to access these paths when passing them to test rules via `env` when using `--no_legacy_external_runfiles`. The original make variables still work in exec contexts such as genrules. Closes #272 COPYBARA_INTEGRATE_REVIEW=#272 from thirtyseven:patch-2 438b659 PiperOrigin-RevId: 726438570 Change-Id: I74e0815e1e71547c653a7b53bff801c62392f075
1 parent 02ab5e6 commit 31edc44

File tree

6 files changed

+54
-0
lines changed

6 files changed

+54
-0
lines changed

java/common/rules/java_runtime.bzl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,8 @@ def _java_runtime_rule_impl(ctx):
152152
platform_common.TemplateVariableInfo({
153153
"JAVA": java_binary_exec_path,
154154
"JAVABASE": java_home,
155+
"JAVA_ROOTPATH": java_binary_runfiles_path,
156+
"JAVABASE_ROOTPATH": java_home_runfiles_path,
155157
}),
156158
ToolchainInfo(java_runtime = java_runtime_info),
157159
]

test/repo/BUILD.bazel

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
load("@rules_java//java:defs.bzl", "java_binary", "java_library", "java_test") # copybara-use-repo-external-label
22
load("@rules_java//toolchains:default_java_toolchain.bzl", "default_java_toolchain") # copybara-use-repo-external-label
3+
load("@rules_shell//shell:sh_test.bzl", "sh_test")
34

45
java_library(
56
name = "lib",
@@ -24,6 +25,28 @@ java_test(
2425
],
2526
)
2627

28+
genrule(
29+
name = "MakeVarGenruleTest",
30+
outs = ["MakeVarGenruleTestSuccess"],
31+
cmd = "test -f $(JAVA) && test -d $(JAVABASE) && touch $@",
32+
toolchains = ["@rules_java//toolchains:current_java_runtime"],
33+
tools = ["@rules_java//toolchains:current_java_runtime"],
34+
)
35+
36+
sh_test(
37+
name = "MakeVarTest",
38+
srcs = ["src/MakeVarTest.sh"],
39+
data = [
40+
"MakeVarGenruleTestSuccess",
41+
"@rules_java//toolchains:current_java_runtime",
42+
],
43+
env = {
44+
"JAVA_ROOTPATH": "$(JAVA_ROOTPATH)",
45+
"JAVABASE_ROOTPATH": "$(JAVABASE_ROOTPATH)",
46+
},
47+
toolchains = ["@rules_java//toolchains:current_java_runtime"],
48+
)
49+
2750
default_java_toolchain(
2851
name = "my_funky_toolchain",
2952
bootclasspath = ["@bazel_tools//tools/jdk:platformclasspath"],

test/repo/MODULE.bazel

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,5 @@ use_repo(
4444
)
4545

4646
register_toolchains("//:all")
47+
48+
bazel_dep(name = "rules_shell", version = "0.4.0", dev_dependency = True)

test/repo/WORKSPACE

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,18 @@ http_jar(
2525
name = "my_jar",
2626
urls = ["file:///tmp/my_jar.jar"],
2727
)
28+
29+
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
30+
31+
http_archive(
32+
name = "rules_shell",
33+
sha256 = "3e114424a5c7e4fd43e0133cc6ecdfe54e45ae8affa14fadd839f29901424043",
34+
strip_prefix = "rules_shell-0.4.0",
35+
url = "https://github.com/bazelbuild/rules_shell/releases/download/v0.4.0/rules_shell-v0.4.0.tar.gz",
36+
)
37+
38+
load("@rules_shell//shell:repositories.bzl", "rules_shell_dependencies", "rules_shell_toolchains")
39+
40+
rules_shell_dependencies()
41+
42+
rules_shell_toolchains()

test/repo/src/MakeVarTest.sh

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#!/usr/bin/env bash
2+
3+
if [ ! -x "$JAVABASE_ROOTPATH/bin/java" ]; then
4+
echo '$JAVABASE_RUNFILES does not point to a working JRE' && exit 1
5+
fi
6+
7+
echo $JAVA_ROOTPATH
8+
if [ ! -x "$JAVA_ROOTPATH" ]; then
9+
echo '$JAVA_ROOTPATH does not exist' && exit 1
10+
fi

toolchains/java_toolchain_alias.bzl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ def _java_runtime_alias(ctx):
2626
platform_common.TemplateVariableInfo({
2727
"JAVA": str(toolchain.java_executable_exec_path),
2828
"JAVABASE": str(toolchain.java_home),
29+
"JAVA_ROOTPATH": str(toolchain.java_executable_runfiles_path),
30+
"JAVABASE_ROOTPATH": str(toolchain.java_home_runfiles_path),
2931
}),
3032
# See b/65239471 for related discussion of handling toolchain runfiles/data.
3133
DefaultInfo(

0 commit comments

Comments
 (0)