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=https://github.com/bazelbuild/rules_java/pull/272 from thirtyseven:patch-2 438b659093cb8bc4a1d0b1560a6a22dee463405f
PiperOrigin-RevId: 726438570
Change-Id: I74e0815e1e71547c653a7b53bff801c62392f075
diff --git a/java/common/rules/java_runtime.bzl b/java/common/rules/java_runtime.bzl
index 52b1301..85acb22 100644
--- a/java/common/rules/java_runtime.bzl
+++ b/java/common/rules/java_runtime.bzl
@@ -152,6 +152,8 @@
         platform_common.TemplateVariableInfo({
             "JAVA": java_binary_exec_path,
             "JAVABASE": java_home,
+            "JAVA_ROOTPATH": java_binary_runfiles_path,
+            "JAVABASE_ROOTPATH": java_home_runfiles_path,
         }),
         ToolchainInfo(java_runtime = java_runtime_info),
     ]
diff --git a/test/repo/BUILD.bazel b/test/repo/BUILD.bazel
index 7f6887a..6522f97 100644
--- a/test/repo/BUILD.bazel
+++ b/test/repo/BUILD.bazel
@@ -1,5 +1,6 @@
 load("@rules_java//java:defs.bzl", "java_binary", "java_library", "java_test")  # copybara-use-repo-external-label
 load("@rules_java//toolchains:default_java_toolchain.bzl", "default_java_toolchain")  # copybara-use-repo-external-label
+load("@rules_shell//shell:sh_test.bzl", "sh_test")
 
 java_library(
     name = "lib",
@@ -24,6 +25,28 @@
     ],
 )
 
+genrule(
+    name = "MakeVarGenruleTest",
+    outs = ["MakeVarGenruleTestSuccess"],
+    cmd = "test -f $(JAVA) && test -d $(JAVABASE) && touch $@",
+    toolchains = ["@rules_java//toolchains:current_java_runtime"],
+    tools = ["@rules_java//toolchains:current_java_runtime"],
+)
+
+sh_test(
+    name = "MakeVarTest",
+    srcs = ["src/MakeVarTest.sh"],
+    data = [
+        "MakeVarGenruleTestSuccess",
+        "@rules_java//toolchains:current_java_runtime",
+    ],
+    env = {
+        "JAVA_ROOTPATH": "$(JAVA_ROOTPATH)",
+        "JAVABASE_ROOTPATH": "$(JAVABASE_ROOTPATH)",
+    },
+    toolchains = ["@rules_java//toolchains:current_java_runtime"],
+)
+
 default_java_toolchain(
     name = "my_funky_toolchain",
     bootclasspath = ["@bazel_tools//tools/jdk:platformclasspath"],
diff --git a/test/repo/MODULE.bazel b/test/repo/MODULE.bazel
index 1be13d4..85f9928 100644
--- a/test/repo/MODULE.bazel
+++ b/test/repo/MODULE.bazel
@@ -44,3 +44,5 @@
 )
 
 register_toolchains("//:all")
+
+bazel_dep(name = "rules_shell", version = "0.4.0", dev_dependency = True)
diff --git a/test/repo/WORKSPACE b/test/repo/WORKSPACE
index 872e89a..08589c2 100644
--- a/test/repo/WORKSPACE
+++ b/test/repo/WORKSPACE
@@ -25,3 +25,18 @@
     name = "my_jar",
     urls = ["file:///tmp/my_jar.jar"],
 )
+
+load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+
+http_archive(
+    name = "rules_shell",
+    sha256 = "3e114424a5c7e4fd43e0133cc6ecdfe54e45ae8affa14fadd839f29901424043",
+    strip_prefix = "rules_shell-0.4.0",
+    url = "https://github.com/bazelbuild/rules_shell/releases/download/v0.4.0/rules_shell-v0.4.0.tar.gz",
+)
+
+load("@rules_shell//shell:repositories.bzl", "rules_shell_dependencies", "rules_shell_toolchains")
+
+rules_shell_dependencies()
+
+rules_shell_toolchains()
diff --git a/test/repo/src/MakeVarTest.sh b/test/repo/src/MakeVarTest.sh
new file mode 100755
index 0000000..7307dfd
--- /dev/null
+++ b/test/repo/src/MakeVarTest.sh
@@ -0,0 +1,10 @@
+#!/usr/bin/env bash
+
+if [ ! -x "$JAVABASE_ROOTPATH/bin/java" ]; then
+  echo '$JAVABASE_RUNFILES does not point to a working JRE' && exit 1
+fi
+
+echo $JAVA_ROOTPATH
+if [ ! -x "$JAVA_ROOTPATH" ]; then
+  echo '$JAVA_ROOTPATH does not exist' && exit 1
+fi
\ No newline at end of file
diff --git a/toolchains/java_toolchain_alias.bzl b/toolchains/java_toolchain_alias.bzl
index 3488925..54973c0 100644
--- a/toolchains/java_toolchain_alias.bzl
+++ b/toolchains/java_toolchain_alias.bzl
@@ -26,6 +26,8 @@
         platform_common.TemplateVariableInfo({
             "JAVA": str(toolchain.java_executable_exec_path),
             "JAVABASE": str(toolchain.java_home),
+            "JAVA_ROOTPATH": str(toolchain.java_executable_runfiles_path),
+            "JAVABASE_ROOTPATH": str(toolchain.java_home_runfiles_path),
         }),
         # See b/65239471 for related discussion of handling toolchain runfiles/data.
         DefaultInfo(