aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar cushon <cushon@google.com>2018-05-14 01:51:45 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-05-14 01:53:21 -0700
commit849df36c5ad31ebe8791c4228321c38c6d0ae56c (patch)
treecc39afc4e667214b4aac69217fb697166c96ddd4
parent5c3f5c9be7fa40d4fb3c35756891fab8483ca406 (diff)
Use the local JDK as the default target javabase
and continue to use the embedded JDK as the default host_javabase. PiperOrigin-RevId: 196471714
-rwxr-xr-xscripts/bootstrap/compile.sh1
-rw-r--r--src/BUILD5
-rw-r--r--src/main/cpp/blaze.cc1
-rw-r--r--src/main/cpp/blaze_util_darwin.cc12
-rw-r--r--src/main/cpp/blaze_util_freebsd.cc2
-rw-r--r--src/main/cpp/blaze_util_linux.cc11
-rw-r--r--src/main/cpp/blaze_util_platform.h7
-rw-r--r--src/main/cpp/blaze_util_windows.cc5
-rw-r--r--src/main/cpp/startup_options.cc38
-rw-r--r--src/main/cpp/startup_options.h7
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectories.java17
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE6
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/BlazeServerStartupOptions.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils/FakeDirectories.java5
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/BlazeDirectoriesTest.java18
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionActionTest.java1
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java1
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java1
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java1
-rw-r--r--src/test/java/com/google/devtools/build/lib/exec/BlazeExecutorTest.java1
-rw-r--r--src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTestHelper.java3
-rw-r--r--src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java1
-rw-r--r--src/test/java/com/google/devtools/build/lib/pkgcache/BuildFileModificationTest.java1
-rw-r--r--src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java1
-rw-r--r--src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java1
-rw-r--r--src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java1
-rw-r--r--src/test/java/com/google/devtools/build/lib/repository/ExternalPackageUtilTest.java1
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorTest.java5
-rw-r--r--src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherRcoptionsTest.java3
-rw-r--r--src/test/java/com/google/devtools/build/lib/runtime/BlazeOptionHandlerTest.java6
-rw-r--r--src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java1
-rw-r--r--src/test/java/com/google/devtools/build/lib/runtime/CommandInterruptionTest.java6
-rw-r--r--src/test/java/com/google/devtools/build/lib/runtime/commands/CleanCommandRecommendsAsyncTest.java6
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTestCase.java5
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunctionTest.java1
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/FileFunctionTest.java1
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/FilesetEntryFunctionTest.java1
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java5
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/GlobFunctionTest.java5
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupFunctionTest.java1
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java1
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsFunctionSmartNegationTest.java1
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java1
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java1
-rw-r--r--src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java1
-rwxr-xr-xsrc/test/shell/bazel/bazel_rules_test.sh2
-rw-r--r--tools/jdk/BUILD2
51 files changed, 179 insertions, 67 deletions
diff --git a/scripts/bootstrap/compile.sh b/scripts/bootstrap/compile.sh
index 9f53d1b84f..04e41a6012 100755
--- a/scripts/bootstrap/compile.sh
+++ b/scripts/bootstrap/compile.sh
@@ -349,6 +349,7 @@ function run_bazel_jar() {
--output_base=${OUTPUT_DIR}/out \
--output_user_root=${OUTPUT_DIR}/user_root \
--install_md5= \
+ --default_system_javabase="${JAVA_HOME}" \
--workspace_directory="$(get_cwd)" \
--nofatal_event_bus_exceptions \
${BAZEL_DIR_STARTUP_OPTIONS} \
diff --git a/src/BUILD b/src/BUILD
index 8f5da4f0d4..c625284333 100644
--- a/src/BUILD
+++ b/src/BUILD
@@ -358,10 +358,7 @@ genrule(
],
outs = ["derived_java_srcs.zip"],
cmd = "$(location :combine_derived_java_srcs.sh) $(JAVABASE) $@ $(SRCS)",
- # Technically, this should be prefixed with @bazel_tools, but in order to
- # avoid having to wait a Bazel release which has this target under
- # @bazel_tools, we use it from the main repository. It's the same anyway.
- toolchains = ["@bazel_tools//tools/jdk:current_java_runtime"],
+ toolchains = ["@bazel_tools//tools/jdk:current_host_java_runtime"],
tools = ["combine_derived_java_srcs.sh"],
visibility = ["//:__pkg__"],
)
diff --git a/src/main/cpp/blaze.cc b/src/main/cpp/blaze.cc
index 6c9aea3895..331c4c212b 100644
--- a/src/main/cpp/blaze.cc
+++ b/src/main/cpp/blaze.cc
@@ -505,6 +505,7 @@ static vector<string> GetArgumentArray(
blaze::ConvertPath(globals->options->output_base));
result.push_back("--workspace_directory=" +
blaze::ConvertPath(globals->workspace));
+ result.push_back("--default_system_javabase=" + GetSystemJavabase());
if (!globals->options->server_jvm_out.empty()) {
result.push_back("--server_jvm_out=" + globals->options->server_jvm_out);
diff --git a/src/main/cpp/blaze_util_darwin.cc b/src/main/cpp/blaze_util_darwin.cc
index 4bc3990eab..c925e2e3fb 100644
--- a/src/main/cpp/blaze_util_darwin.cc
+++ b/src/main/cpp/blaze_util_darwin.cc
@@ -159,7 +159,7 @@ bool IsSharedLibrary(const string &filename) {
return blaze_util::ends_with(filename, ".dylib");
}
-string GetDefaultHostJavabase() {
+string GetSystemJavabase() {
string java_home = GetEnv("JAVA_HOME");
if (!java_home.empty()) {
return java_home;
@@ -167,23 +167,19 @@ string GetDefaultHostJavabase() {
FILE *output = popen("/usr/libexec/java_home -v 1.7+", "r");
if (output == NULL) {
- BAZEL_DIE(blaze_exit_code::LOCAL_ENVIRONMENTAL_ERROR)
- << "Could not run /usr/libexec/java_home: " << GetLastErrorString();
+ return "";
}
char buf[512];
char *result = fgets(buf, sizeof(buf), output);
pclose(output);
if (result == NULL) {
- BAZEL_DIE(blaze_exit_code::LOCAL_ENVIRONMENTAL_ERROR)
- << "No output from /usr/libexec/java_home";
+ return "";
}
string javabase = buf;
if (javabase.empty()) {
- BAZEL_DIE(blaze_exit_code::LOCAL_ENVIRONMENTAL_ERROR)
- << "Empty output from /usr/libexec/java_home - install a JDK, or "
- "install a JRE and point your JAVA_HOME to it";
+ return "";
}
// The output ends with a \n, trim it off.
diff --git a/src/main/cpp/blaze_util_freebsd.cc b/src/main/cpp/blaze_util_freebsd.cc
index 4b27b4287d..0d196827d8 100644
--- a/src/main/cpp/blaze_util_freebsd.cc
+++ b/src/main/cpp/blaze_util_freebsd.cc
@@ -143,7 +143,7 @@ bool IsSharedLibrary(const string &filename) {
return blaze_util::ends_with(filename, ".so");
}
-string GetDefaultHostJavabase() {
+string GetSystemJavabase() {
// if JAVA_HOME is defined, then use it as default.
string javahome = GetEnv("JAVA_HOME");
return !javahome.empty() ? javahome : "/usr/local/openjdk8";
diff --git a/src/main/cpp/blaze_util_linux.cc b/src/main/cpp/blaze_util_linux.cc
index ba0320d1c2..4f01ba833b 100644
--- a/src/main/cpp/blaze_util_linux.cc
+++ b/src/main/cpp/blaze_util_linux.cc
@@ -146,8 +146,7 @@ bool IsSharedLibrary(const string &filename) {
static string Which(const string &executable) {
string path(GetEnv("PATH"));
if (path.empty()) {
- BAZEL_DIE(blaze_exit_code::LOCAL_ENVIRONMENTAL_ERROR)
- << "Could not get PATH to find " << executable;
+ return "";
}
vector<string> pieces = blaze_util::Split(path, ':');
@@ -167,7 +166,7 @@ static string Which(const string &executable) {
return "";
}
-string GetDefaultHostJavabase() {
+string GetSystemJavabase() {
// if JAVA_HOME is defined, then use it as default.
string javahome = GetEnv("JAVA_HOME");
if (!javahome.empty()) {
@@ -177,15 +176,13 @@ string GetDefaultHostJavabase() {
// which javac
string javac_dir = Which("javac");
if (javac_dir.empty()) {
- BAZEL_DIE(blaze_exit_code::LOCAL_ENVIRONMENTAL_ERROR)
- << "Could not find javac";
+ return "";
}
// Resolve all symlinks.
char resolved_path[PATH_MAX];
if (realpath(javac_dir.c_str(), resolved_path) == NULL) {
- BAZEL_DIE(blaze_exit_code::LOCAL_ENVIRONMENTAL_ERROR)
- << "Could not resolve javac directory: " << GetLastErrorString();
+ return "";
}
javac_dir = resolved_path;
diff --git a/src/main/cpp/blaze_util_platform.h b/src/main/cpp/blaze_util_platform.h
index 50ac21933f..6de5eb154a 100644
--- a/src/main/cpp/blaze_util_platform.h
+++ b/src/main/cpp/blaze_util_platform.h
@@ -84,9 +84,10 @@ std::string GetProcessCWD(int pid);
bool IsSharedLibrary(const std::string& filename);
-// Return the default path to the JDK used to run Blaze itself
-// (must be an absolute directory).
-std::string GetDefaultHostJavabase();
+// Returns the absolute path to the user's local JDK install, to be used as
+// the default target javabase and as a fall-back host_javabase. This is not
+// the embedded JDK.
+std::string GetSystemJavabase();
// Return the path to the JVM binary relative to a javabase, e.g. "bin/java".
std::string GetJavaBinaryUnderJavabase();
diff --git a/src/main/cpp/blaze_util_windows.cc b/src/main/cpp/blaze_util_windows.cc
index efd0d72c59..565e8876c2 100644
--- a/src/main/cpp/blaze_util_windows.cc
+++ b/src/main/cpp/blaze_util_windows.cc
@@ -250,11 +250,10 @@ bool IsSharedLibrary(const string &filename) {
return blaze_util::ends_with(filename, ".dll");
}
-string GetDefaultHostJavabase() {
+string GetSystemJavabase() {
string javahome(GetEnv("JAVA_HOME"));
if (javahome.empty()) {
- BAZEL_DIE(blaze_exit_code::LOCAL_ENVIRONMENTAL_ERROR)
- << "Error: JAVA_HOME not set.";
+ return "";
}
return javahome;
}
diff --git a/src/main/cpp/startup_options.cc b/src/main/cpp/startup_options.cc
index 1f9bc8b324..f2cc25dea0 100644
--- a/src/main/cpp/startup_options.cc
+++ b/src/main/cpp/startup_options.cc
@@ -392,30 +392,34 @@ blaze_exit_code::ExitCode StartupOptions::ProcessArgs(
return blaze_exit_code::SUCCESS;
}
-string StartupOptions::GetDefaultHostJavabase() const {
- return blaze::GetDefaultHostJavabase();
+string StartupOptions::GetSystemJavabase() const {
+ return blaze::GetSystemJavabase();
}
string StartupOptions::GetHostJavabase() {
// 1) Allow overriding the host_javabase via --host_javabase.
- if (host_javabase.empty()) {
- if (default_host_javabase.empty()) {
- string bundled_jre_path = blaze_util::JoinPath(
- install_base, "_embedded_binaries/embedded_tools/jdk");
- if (blaze_util::CanExecuteFile(blaze_util::JoinPath(
- bundled_jre_path, GetJavaBinaryUnderJavabase()))) {
- // 2) Use a bundled JVM if we have one.
- default_host_javabase = bundled_jre_path;
- } else {
- // 3) Otherwise fall back to using the default system JVM.
- default_host_javabase = GetDefaultHostJavabase();
+ if (!host_javabase.empty()) {
+ return host_javabase;
+ }
+ if (default_host_javabase.empty()) {
+ string bundled_jre_path = blaze_util::JoinPath(
+ install_base, "_embedded_binaries/embedded_tools/jdk");
+ if (blaze_util::CanExecuteFile(blaze_util::JoinPath(
+ bundled_jre_path, GetJavaBinaryUnderJavabase()))) {
+ // 2) Use a bundled JVM if we have one.
+ default_host_javabase = bundled_jre_path;
+ } else {
+ // 3) Otherwise fall back to using the default system JVM.
+ string system_javabase = GetSystemJavabase();
+ if (system_javabase.empty()) {
+ BAZEL_DIE(blaze_exit_code::LOCAL_ENVIRONMENTAL_ERROR)
+ << "Could not find system javabase. Ensure JAVA_HOME is set, or "
+ "javac is on your PATH.";
}
+ default_host_javabase = system_javabase;
}
-
- return default_host_javabase;
- } else {
- return host_javabase;
}
+ return default_host_javabase;
}
string StartupOptions::GetExplicitHostJavabase() const {
diff --git a/src/main/cpp/startup_options.h b/src/main/cpp/startup_options.h
index 91a4ab7fd8..242a383fa3 100644
--- a/src/main/cpp/startup_options.h
+++ b/src/main/cpp/startup_options.h
@@ -133,9 +133,10 @@ class StartupOptions {
const char *arg, const char *next_arg, const std::string &rcfile,
const char **value, bool *is_processed, std::string *error) = 0;
- // Return the default path to the JDK used to run Blaze itself
- // (must be an absolute directory).
- virtual std::string GetDefaultHostJavabase() const;
+ // Returns the absolute path to the user's local JDK install, to be used as
+ // the default target javabase and as a fall-back host_javabase. This is not
+ // the embedded JDK.
+ virtual std::string GetSystemJavabase() const;
// Returns the path to the JVM. This should be called after parsing
// the startup options.
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectories.java b/src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectories.java
index 02d7a2f8a1..c2e9721b2c 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectories.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectories.java
@@ -52,6 +52,11 @@ public final class BlazeDirectories {
private final ServerDirectories serverDirectories;
/** Workspace root and server CWD. */
private final Path workspace;
+ /**
+ * The root of the user's local JDK install, to be used as the default target javabase and as a
+ * fall-back host_javabase. This is not the embedded JDK.
+ */
+ private final Path defaultSystemJavabase;
/** The root of all build actions. */
private final Path execRoot;
@@ -62,9 +67,14 @@ public final class BlazeDirectories {
private final String productName;
@AutoCodec.Instantiator
- public BlazeDirectories(ServerDirectories serverDirectories, Path workspace, String productName) {
+ public BlazeDirectories(
+ ServerDirectories serverDirectories,
+ Path workspace,
+ Path defaultSystemJavabase,
+ String productName) {
this.serverDirectories = serverDirectories;
this.workspace = workspace;
+ this.defaultSystemJavabase = defaultSystemJavabase;
this.productName = productName;
Path outputBase = serverDirectories.getOutputBase();
Path execRootBase = outputBase.getChild("execroot");
@@ -99,6 +109,11 @@ public final class BlazeDirectories {
return workspace;
}
+ /** Returns the root of the user's local JDK install (not the embedded JDK). */
+ public Path getLocalJavabase() {
+ return defaultSystemJavabase;
+ }
+
/** Returns if the workspace directory is a valid workspace. */
public boolean inWorkspace() {
return this.workspace != null;
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE
index 7963114996..631fdfd841 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE
@@ -2,6 +2,12 @@
new_local_repository(
name = "local_jdk",
+ path = DEFAULT_SYSTEM_JAVABASE,
+ build_file = __embedded_dir__ + "/jdk.BUILD",
+)
+
+new_local_repository(
+ name = "embedded_jdk",
path = DEFAULT_SERVER_JAVABASE,
build_file = __embedded_dir__ + "/jdk.BUILD",
)
diff --git a/src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java b/src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java
index 73358746d9..5d55d31012 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java
@@ -71,12 +71,14 @@ public class WorkspaceFactory {
"__embedded_dir__", // serializable so optional
"__workspace_dir__", // serializable so optional
"DEFAULT_SERVER_JAVABASE", // serializable so optional
+ "DEFAULT_SYSTEM_JAVABASE", // serializable so optional
PackageFactory.PKG_CONTEXT);
private final Package.Builder builder;
private final Path installDir;
private final Path workspaceDir;
+ private final Path defaultSystemJavabaseDir;
private final Mutability mutability;
private final boolean allowOverride;
@@ -107,7 +109,7 @@ public class WorkspaceFactory {
RuleClassProvider ruleClassProvider,
ImmutableList<EnvironmentExtension> environmentExtensions,
Mutability mutability) {
- this(builder, ruleClassProvider, environmentExtensions, mutability, true, null, null);
+ this(builder, ruleClassProvider, environmentExtensions, mutability, true, null, null, null);
}
// TODO(bazel-team): document installDir
@@ -118,6 +120,7 @@ public class WorkspaceFactory {
* @param mutability the Mutability for the current evaluation context
* @param installDir the install directory
* @param workspaceDir the workspace directory
+ * @param defaultSystemJavabaseDir the local JDK directory
*/
public WorkspaceFactory(
Package.Builder builder,
@@ -126,11 +129,13 @@ public class WorkspaceFactory {
Mutability mutability,
boolean allowOverride,
@Nullable Path installDir,
- @Nullable Path workspaceDir) {
+ @Nullable Path workspaceDir,
+ @Nullable Path defaultSystemJavabaseDir) {
this.builder = builder;
this.mutability = mutability;
this.installDir = installDir;
this.workspaceDir = workspaceDir;
+ this.defaultSystemJavabaseDir = defaultSystemJavabaseDir;
this.allowOverride = allowOverride;
this.environmentExtensions = environmentExtensions;
this.ruleFactory = new RuleFactory(ruleClassProvider, AttributeContainer::new);
@@ -534,6 +539,11 @@ public class WorkspaceFactory {
javaHome = javaHome.getParentFile();
}
workspaceEnv.update("DEFAULT_SERVER_JAVABASE", javaHome.toString());
+ workspaceEnv.update(
+ "DEFAULT_SYSTEM_JAVABASE",
+ defaultSystemJavabaseDir != null
+ ? defaultSystemJavabaseDir.toString()
+ : javaHome.toString());
for (EnvironmentExtension extension : environmentExtensions) {
extension.updateWorkspace(workspaceEnv);
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java
index 064f020e2a..cdad1e53b4 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java
@@ -1016,6 +1016,7 @@ public final class BlazeRuntime {
String productName = startupOptions.productName.toLowerCase(Locale.US);
PathFragment workspaceDirectory = startupOptions.workspaceDirectory;
+ PathFragment defaultSystemJavabase = startupOptions.defaultSystemJavabase;
PathFragment outputUserRoot = startupOptions.outputUserRoot;
PathFragment installBase = startupOptions.installBase;
PathFragment outputBase = startupOptions.outputBase;
@@ -1060,6 +1061,10 @@ public final class BlazeRuntime {
if (!workspaceDirectory.equals(PathFragment.EMPTY_FRAGMENT)) {
workspaceDirectoryPath = fs.getPath(workspaceDirectory);
}
+ Path defaultSystemJavabasePath = null;
+ if (!defaultSystemJavabase.equals(PathFragment.EMPTY_FRAGMENT)) {
+ defaultSystemJavabasePath = fs.getPath(defaultSystemJavabase);
+ }
ServerDirectories serverDirectories =
new ServerDirectories(
@@ -1097,7 +1102,8 @@ public final class BlazeRuntime {
BlazeRuntime runtime = runtimeBuilder.build();
BlazeDirectories directories =
- new BlazeDirectories(serverDirectories, workspaceDirectoryPath, productName);
+ new BlazeDirectories(
+ serverDirectories, workspaceDirectoryPath, defaultSystemJavabasePath, productName);
BinTools binTools;
try {
binTools = BinTools.forProduction(directories);
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeServerStartupOptions.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeServerStartupOptions.java
index e5a8069a88..a5b81be80b 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeServerStartupOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeServerStartupOptions.java
@@ -177,6 +177,18 @@ public class BlazeServerStartupOptions extends OptionsBase {
public PathFragment workspaceDirectory;
@Option(
+ name = "default_system_javabase",
+ defaultValue = "", // NOTE: only for documentation, value is always passed by the client.
+ documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
+ effectTags = {OptionEffectTag.CHANGES_INPUTS, OptionEffectTag.LOSES_INCREMENTAL_STATE},
+ metadataTags = {OptionMetadataTag.HIDDEN},
+ converter = OptionsUtils.PathFragmentConverter.class,
+ help =
+ "The root of the user's local JDK install, to be used as the default target javabase"
+ + " and as a fall-back host_javabase. This is not the embedded JDK.")
+ public PathFragment defaultSystemJavabase;
+
+ @Option(
name = "max_idle_secs",
// NOTE: default value only used for documentation, value is always passed by the client when
// not in --batch mode.
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java
index 945ecfe559..a82a9a7f38 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java
@@ -99,7 +99,8 @@ public class WorkspaceFileFunction implements SkyFunction {
mutability,
key.getIndex() == 0,
directories.getEmbeddedBinariesRoot(),
- directories.getWorkspace());
+ directories.getWorkspace(),
+ directories.getLocalJavabase());
if (key.getIndex() > 0) {
WorkspaceFileValue prevValue = (WorkspaceFileValue) env.getValue(
WorkspaceFileValue.key(key.getPath(), key.getIndex() - 1));
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java b/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java
index d71830427d..7ca43d003b 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java
@@ -147,7 +147,10 @@ public abstract class AbstractPackageLoader implements PackageLoader {
Path devNull = workspaceDir.getFileSystem().getPath("/dev/null");
directories =
new BlazeDirectories(
- new ServerDirectories(installBase, outputBase, devNull), workspaceDir, "blaze");
+ new ServerDirectories(installBase, outputBase, devNull),
+ workspaceDir,
+ /* defaultSystemJavabase= */ null,
+ "blaze");
this.pkgLocator =
new PathPackageLocator(
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils/FakeDirectories.java b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils/FakeDirectories.java
index dfece60f3c..8d67d99d4c 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils/FakeDirectories.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils/FakeDirectories.java
@@ -30,7 +30,10 @@ public class FakeDirectories {
public static final BlazeDirectories BLAZE_DIRECTORIES =
new BlazeDirectories(
- SERVER_DIRECTORIES, OUTPUT_BASE.getRelative("execroot/io_bazel"), "bazel");
+ SERVER_DIRECTORIES,
+ OUTPUT_BASE.getRelative("execroot/io_bazel"),
+ /* defaultSystemJavabase= */ null,
+ "bazel");
private FakeDirectories() {}
}
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/BlazeDirectoriesTest.java b/src/test/java/com/google/devtools/build/lib/analysis/BlazeDirectoriesTest.java
index 36024e5695..bc89c9a62d 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/BlazeDirectoriesTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/BlazeDirectoriesTest.java
@@ -37,20 +37,29 @@ public class BlazeDirectoriesTest extends FoundationTestCase {
Path workspace = fs.getPath("/my/ws");
BlazeDirectories directories =
new BlazeDirectories(
- new ServerDirectories(installBase, outputBase, userRoot), workspace, "foo");
+ new ServerDirectories(installBase, outputBase, userRoot),
+ workspace,
+ /* defaultSystemJavabase= */ null,
+ "foo");
assertThat(outputBase.getRelative("execroot/ws")).isEqualTo(directories.getExecRoot());
workspace = null;
directories =
new BlazeDirectories(
- new ServerDirectories(installBase, outputBase, userRoot), workspace, "foo");
+ new ServerDirectories(installBase, outputBase, userRoot),
+ workspace,
+ /* defaultSystemJavabase= */ null,
+ "foo");
assertThat(outputBase.getRelative("execroot/" + BlazeDirectories.DEFAULT_EXEC_ROOT))
.isEqualTo(directories.getExecRoot());
workspace = fs.getPath("/");
directories =
new BlazeDirectories(
- new ServerDirectories(installBase, outputBase, userRoot), workspace, "foo");
+ new ServerDirectories(installBase, outputBase, userRoot),
+ workspace,
+ /* defaultSystemJavabase= */ null,
+ "foo");
assertThat(outputBase.getRelative("execroot/" + BlazeDirectories.DEFAULT_EXEC_ROOT))
.isEqualTo(directories.getExecRoot());
}
@@ -64,6 +73,7 @@ public class BlazeDirectoriesTest extends FoundationTestCase {
FsUtils.TEST_FILESYSTEM.getPath("/output_base"),
FsUtils.TEST_FILESYSTEM.getPath("/user_root")),
FsUtils.TEST_FILESYSTEM.getPath("/workspace"),
+ /* defaultSystemJavabase= */ null,
"Blaze"),
new BlazeDirectories(
new ServerDirectories(
@@ -72,6 +82,7 @@ public class BlazeDirectoriesTest extends FoundationTestCase {
FsUtils.TEST_FILESYSTEM.getPath("/user_root"),
"1234abcd1234abcd1234abcd1234abcd"),
FsUtils.TEST_FILESYSTEM.getPath("/workspace"),
+ /* defaultSystemJavabase= */ null,
"Blaze"),
new BlazeDirectories(
new ServerDirectories(
@@ -79,6 +90,7 @@ public class BlazeDirectoriesTest extends FoundationTestCase {
FsUtils.TEST_FILESYSTEM.getPath("/output_base"),
FsUtils.TEST_FILESYSTEM.getPath("/user_root")),
FsUtils.TEST_FILESYSTEM.getPath("/workspace"),
+ /* defaultSystemJavabase= */ null,
"Bazel"))
.addDependency(FileSystem.class, FsUtils.TEST_FILESYSTEM)
.runTests();
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionActionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionActionTest.java
index 81dc77b98b..40b7c049d8 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionActionTest.java
@@ -77,6 +77,7 @@ public class TemplateExpansionActionTest extends FoundationTestCase {
scratch.resolve("/base"),
scratch.resolve("/userRoot")),
scratch.resolve("/workspace"),
+ /* defaultSystemJavabase= */ null,
"mock-product-name");
binTools = BinTools.empty(directories);
}
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
index 346569c88e..1880c29c9b 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
@@ -157,6 +157,7 @@ public abstract class AnalysisTestCase extends FoundationTestCase {
new BlazeDirectories(
new ServerDirectories(outputBase, outputBase, outputBase),
rootDirectory,
+ /* defaultSystemJavabase= */ null,
analysisMock.getProductName());
workspaceStatusActionFactory =
new AnalysisTestUtil.DummyWorkspaceStatusActionFactory(directories);
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
index b917b327aa..6cb707fd1a 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
@@ -221,6 +221,7 @@ public abstract class BuildViewTestCase extends FoundationTestCase {
new BlazeDirectories(
new ServerDirectories(outputBase, outputBase, outputBase),
rootDirectory,
+ /* defaultSystemJavabase= */ null,
analysisMock.getProductName());
actionKeyContext = new ActionKeyContext();
mockToolsConfig = new MockToolsConfig(rootDirectory, false);
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java
index e1c054d089..1c314f4bbc 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java
@@ -107,6 +107,7 @@ public abstract class ConfigurationTestCase extends FoundationTestCase {
new BlazeDirectories(
new ServerDirectories(outputBase, outputBase, outputBase),
rootDirectory,
+ /* defaultSystemJavabase= */ null,
analysisMock.getProductName());
pkgFactory =
analysisMock
diff --git a/src/test/java/com/google/devtools/build/lib/exec/BlazeExecutorTest.java b/src/test/java/com/google/devtools/build/lib/exec/BlazeExecutorTest.java
index ec724b2c0c..1dcd3b0e11 100644
--- a/src/test/java/com/google/devtools/build/lib/exec/BlazeExecutorTest.java
+++ b/src/test/java/com/google/devtools/build/lib/exec/BlazeExecutorTest.java
@@ -55,6 +55,7 @@ public class BlazeExecutorTest {
fileSystem.getPath("/base"),
fileSystem.getPath("/root")),
fileSystem.getPath("/workspace"),
+ /* defaultSystemJavabase= */ null,
"mock-product-name");
binTools = BinTools.empty(directories);
}
diff --git a/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTestHelper.java b/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTestHelper.java
index 712695ee61..60d6df6566 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTestHelper.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTestHelper.java
@@ -65,7 +65,8 @@ class WorkspaceFactoryTestHelper {
Mutability.create("test"),
allowOverride,
root,
- root);
+ root,
+ /* defaultSystemJavabaseDir= */ null);
Exception exception = null;
try {
byte[] bytes =
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java b/src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java
index 5503935adf..58107d0b3a 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java
@@ -95,6 +95,7 @@ public abstract class PackageLoadingTestCase extends FoundationTestCase {
new BlazeDirectories(
new ServerDirectories(outputBase, outputBase, outputBase),
rootDirectory,
+ /* defaultSystemJavabase= */ null,
loadingMock.getProductName());
packageFactory =
loadingMock
diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/BuildFileModificationTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/BuildFileModificationTest.java
index b199ffa2c5..2890619c2e 100644
--- a/src/test/java/com/google/devtools/build/lib/pkgcache/BuildFileModificationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/pkgcache/BuildFileModificationTest.java
@@ -78,6 +78,7 @@ public class BuildFileModificationTest extends FoundationTestCase {
new BlazeDirectories(
new ServerDirectories(outputBase, outputBase, outputBase),
rootDirectory,
+ /* defaultSystemJavabase= */ null,
analysisMock.getProductName());
skyframeExecutor =
SequencedSkyframeExecutor.create(
diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java
index 81da77283f..32aacdaa9d 100644
--- a/src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java
+++ b/src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java
@@ -471,6 +471,7 @@ public class IncrementalLoadingTest {
new ServerDirectories(
fs.getPath("/install"), fs.getPath("/output"), fs.getPath("/userRoot")),
workspace,
+ /* defaultSystemJavabase= */ null,
loadingMock.getProductName());
ConfiguredRuleClassProvider ruleClassProvider = loadingMock.createRuleClassProvider();
skyframeExecutor =
diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java
index 4e030acd7b..b4fa688e84 100644
--- a/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java
@@ -720,6 +720,7 @@ public class LoadingPhaseRunnerTest {
new ServerDirectories(
fs.getPath("/install"), fs.getPath("/output"), fs.getPath("/userRoot")),
workspace,
+ /* defaultSystemJavabase= */ null,
analysisMock.getProductName());
FileSystemUtils.deleteTree(workspace.getRelative("base"));
diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java
index afdab94a68..e4729d3516 100644
--- a/src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java
+++ b/src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java
@@ -86,6 +86,7 @@ public class PackageCacheTest extends FoundationTestCase {
new BlazeDirectories(
new ServerDirectories(outputBase, outputBase, outputBase),
rootDirectory,
+ /* defaultSystemJavabase= */ null,
analysisMock.getProductName());
PackageFactory.BuilderForTesting packageFactoryBuilder =
analysisMock.getPackageFactoryBuilderForTesting(directories);
diff --git a/src/test/java/com/google/devtools/build/lib/repository/ExternalPackageUtilTest.java b/src/test/java/com/google/devtools/build/lib/repository/ExternalPackageUtilTest.java
index 7b3cbd5cc0..4655acc06a 100644
--- a/src/test/java/com/google/devtools/build/lib/repository/ExternalPackageUtilTest.java
+++ b/src/test/java/com/google/devtools/build/lib/repository/ExternalPackageUtilTest.java
@@ -94,6 +94,7 @@ public class ExternalPackageUtilTest extends BuildViewTestCase {
new BlazeDirectories(
new ServerDirectories(rootDirectory, outputBase, rootDirectory),
rootDirectory,
+ /* defaultSystemJavabase= */ null,
analysisMock.getProductName());
ExternalFilesHelper externalFilesHelper =
ExternalFilesHelper.createForTesting(
diff --git a/src/test/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorTest.java b/src/test/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorTest.java
index d49ddc288b..78f2d01952 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorTest.java
@@ -76,7 +76,10 @@ public class RepositoryDelegatorTest extends FoundationTestCase {
Path root = scratch.dir("/outputbase");
BlazeDirectories directories =
new BlazeDirectories(
- new ServerDirectories(root, root, root), root, TestConstants.PRODUCT_NAME);
+ new ServerDirectories(root, root, root),
+ root,
+ /* defaultSystemJavabase= */ null,
+ TestConstants.PRODUCT_NAME);
delegatorFunction =
new RepositoryDelegatorFunction(
ImmutableMap.of(), null, new AtomicBoolean(true), ImmutableMap::of, directories);
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherRcoptionsTest.java b/src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherRcoptionsTest.java
index 3582a2d87f..9e1b08ab03 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherRcoptionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherRcoptionsTest.java
@@ -168,7 +168,8 @@ public class BlazeCommandDispatcherRcoptionsTest {
.build();
BlazeDirectories directories =
- new BlazeDirectories(serverDirectories, scratch.dir("pkg"), productName);
+ new BlazeDirectories(
+ serverDirectories, scratch.dir("pkg"), /* defaultSystemJavabase= */ null, productName);
this.runtime.initWorkspace(directories, /*binTools=*/null);
}
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/BlazeOptionHandlerTest.java b/src/test/java/com/google/devtools/build/lib/runtime/BlazeOptionHandlerTest.java
index d9454bcbbd..33b8acb10c 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/BlazeOptionHandlerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/BlazeOptionHandlerTest.java
@@ -78,7 +78,11 @@ public class BlazeOptionHandlerTest {
this.runtime.overrideCommands(ImmutableList.of(new C0Command()));
BlazeDirectories directories =
- new BlazeDirectories(serverDirectories, scratch.dir("workspace"), productName);
+ new BlazeDirectories(
+ serverDirectories,
+ scratch.dir("workspace"),
+ /* defaultSystemJavabase= */ null,
+ productName);
runtime.initWorkspace(directories, /*binTools=*/ null);
}
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java b/src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java
index 3d52a3d216..0235a3aca6 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java
@@ -646,6 +646,7 @@ public class BuildEventStreamerTest extends FoundationTestCase {
new BlazeDirectories(
new ServerDirectories(outputBase, outputBase, outputBase),
rootDirectory,
+ /* defaultSystemJavabase= */ null,
"productName"),
/* fragmentsMap= */ ImmutableMap
.<Class<? extends BuildConfiguration.Fragment>, BuildConfiguration.Fragment>of(),
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/CommandInterruptionTest.java b/src/test/java/com/google/devtools/build/lib/runtime/CommandInterruptionTest.java
index 71948daa5f..80fc134bf1 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/CommandInterruptionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/CommandInterruptionTest.java
@@ -381,7 +381,11 @@ public final class CommandInterruptionTest {
snooze = new WaitForCompletionCommand(isTestShuttingDown);
dispatcher = new BlazeCommandDispatcher(runtime, snooze);
BlazeDirectories blazeDirectories =
- new BlazeDirectories(serverDirectories, scratch.dir("workspace"), productName);
+ new BlazeDirectories(
+ serverDirectories,
+ scratch.dir("workspace"),
+ /* defaultSystemJavabase= */ null,
+ productName);
runtime.initWorkspace(blazeDirectories, /* binTools= */ null);
}
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/commands/CleanCommandRecommendsAsyncTest.java b/src/test/java/com/google/devtools/build/lib/runtime/commands/CleanCommandRecommendsAsyncTest.java
index d2235c8d7f..6f6ff5d665 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/commands/CleanCommandRecommendsAsyncTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/commands/CleanCommandRecommendsAsyncTest.java
@@ -110,7 +110,11 @@ public class CleanCommandRecommendsAsyncTest {
})
.build();
BlazeDirectories directories =
- new BlazeDirectories(serverDirectories, scratch.dir("workspace"), productName);
+ new BlazeDirectories(
+ serverDirectories,
+ scratch.dir("workspace"),
+ /* defaultSystemJavabase= */ null,
+ productName);
runtime.initWorkspace(directories, /* binTools= */ null);
BlazeCommandDispatcher dispatcher = new BlazeCommandDispatcher(runtime, new CleanCommand(os));
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTestCase.java b/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTestCase.java
index 84b2cd978d..c0c2d73559 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTestCase.java
@@ -78,7 +78,10 @@ abstract class ArtifactFunctionTestCase {
BazelSkyframeExecutorConstants.BUILD_FILES_BY_PRIORITY));
BlazeDirectories directories =
new BlazeDirectories(
- new ServerDirectories(root, root, root), root, TestConstants.PRODUCT_NAME);
+ new ServerDirectories(root, root, root),
+ root,
+ /* defaultSystemJavabase= */ null,
+ TestConstants.PRODUCT_NAME);
ExternalFilesHelper externalFilesHelper = ExternalFilesHelper.createForTesting(
pkgLocator,
ExternalFileAction.DEPEND_ON_EXTERNAL_PKG_FOR_EXTERNAL_REPO_PATHS,
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunctionTest.java
index 7982b2d5d6..100b0868a5 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunctionTest.java
@@ -85,6 +85,7 @@ public class ContainingPackageLookupFunctionTest extends FoundationTestCase {
new BlazeDirectories(
new ServerDirectories(rootDirectory, outputBase, outputBase),
rootDirectory,
+ /* defaultSystemJavabase= */ null,
analysisMock.getProductName());
ExternalFilesHelper externalFilesHelper =
ExternalFilesHelper.createForTesting(
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/FileFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/FileFunctionTest.java
index 3ddda580a9..926d63b2ac 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/FileFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/FileFunctionTest.java
@@ -131,6 +131,7 @@ public class FileFunctionTest {
new BlazeDirectories(
new ServerDirectories(pkgRoot.asPath(), outputBase, outputBase),
pkgRoot.asPath(),
+ /* defaultSystemJavabase= */ null,
TestConstants.PRODUCT_NAME);
ExternalFilesHelper externalFilesHelper =
ExternalFilesHelper.createForTesting(pkgLocatorRef, externalFileAction, directories);
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/FilesetEntryFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/FilesetEntryFunctionTest.java
index bd1a1a0ba2..02088a9d7e 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/FilesetEntryFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/FilesetEntryFunctionTest.java
@@ -96,6 +96,7 @@ public final class FilesetEntryFunctionTest extends FoundationTestCase {
new BlazeDirectories(
new ServerDirectories(outputBase, outputBase, outputBase),
rootDirectory,
+ /* defaultSystemJavabase= */ null,
TestConstants.PRODUCT_NAME));
Map<SkyFunctionName, SkyFunction> skyFunctions = new HashMap<>();
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java
index 261692338a..f0112d4c9f 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java
@@ -111,7 +111,10 @@ public class FilesystemValueCheckerTest {
BazelSkyframeExecutorConstants.BUILD_FILES_BY_PRIORITY));
BlazeDirectories directories =
new BlazeDirectories(
- new ServerDirectories(pkgRoot, pkgRoot, pkgRoot), pkgRoot, TestConstants.PRODUCT_NAME);
+ new ServerDirectories(pkgRoot, pkgRoot, pkgRoot),
+ pkgRoot,
+ /* defaultSystemJavabase= */ null,
+ TestConstants.PRODUCT_NAME);
ExternalFilesHelper externalFilesHelper = ExternalFilesHelper.createForTesting(
pkgLocator, ExternalFileAction.DEPEND_ON_EXTERNAL_PKG_FOR_EXTERNAL_REPO_PATHS, directories);
skyFunctions.put(SkyFunctions.FILE_STATE, new FileStateFunction(
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/GlobFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/GlobFunctionTest.java
index f690e65c14..167672a346 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/GlobFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/GlobFunctionTest.java
@@ -133,7 +133,10 @@ public abstract class GlobFunctionTest {
new AtomicReference<>(ImmutableSet.<PackageIdentifier>of());
BlazeDirectories directories =
new BlazeDirectories(
- new ServerDirectories(root, root, root), root, TestConstants.PRODUCT_NAME);
+ new ServerDirectories(root, root, root),
+ root,
+ /* defaultSystemJavabase= */ null,
+ TestConstants.PRODUCT_NAME);
ExternalFilesHelper externalFilesHelper =
ExternalFilesHelper.createForTesting(
pkgLocator,
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupFunctionTest.java
index be292bdead..3e457ba8be 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupFunctionTest.java
@@ -77,6 +77,7 @@ public class LocalRepositoryLookupFunctionTest extends FoundationTestCase {
new BlazeDirectories(
new ServerDirectories(rootDirectory, outputBase, rootDirectory),
rootDirectory,
+ /* defaultSystemJavabase= */ null,
analysisMock.getProductName());
ExternalFilesHelper externalFilesHelper = ExternalFilesHelper.createForTesting(
pkgLocator, ExternalFileAction.DEPEND_ON_EXTERNAL_PKG_FOR_EXTERNAL_REPO_PATHS, directories);
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java
index 978da79435..195d987fca 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java
@@ -102,6 +102,7 @@ public abstract class PackageLookupFunctionTest extends FoundationTestCase {
new BlazeDirectories(
new ServerDirectories(rootDirectory, outputBase, rootDirectory),
rootDirectory,
+ /* defaultSystemJavabase= */ null,
analysisMock.getProductName());
ExternalFilesHelper externalFilesHelper = ExternalFilesHelper.createForTesting(
pkgLocator, ExternalFileAction.DEPEND_ON_EXTERNAL_PKG_FOR_EXTERNAL_REPO_PATHS, directories);
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsFunctionSmartNegationTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsFunctionSmartNegationTest.java
index b307d09db3..85decff337 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsFunctionSmartNegationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsFunctionSmartNegationTest.java
@@ -74,6 +74,7 @@ public class PrepareDepsOfPatternsFunctionSmartNegationTest extends FoundationTe
getScratch().dir("/output"),
getScratch().dir("/user_root")),
rootDirectory,
+ /* defaultSystemJavabase= */ null,
AnalysisMock.get().getProductName());
ConfiguredRuleClassProvider ruleClassProvider = AnalysisMock.get().createRuleClassProvider();
skyframeExecutor =
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java
index 8ea4fd03bc..7dc9f959ef 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java
@@ -105,6 +105,7 @@ public final class RecursiveFilesystemTraversalFunctionTest extends FoundationTe
new BlazeDirectories(
new ServerDirectories(rootDirectory, outputBase, rootDirectory),
rootDirectory,
+ null,
analysisMock.getProductName());
ExternalFilesHelper externalFilesHelper = ExternalFilesHelper.createForTesting(
pkgLocator, ExternalFileAction.DEPEND_ON_EXTERNAL_PKG_FOR_EXTERNAL_REPO_PATHS, directories);
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java
index e80ec3183b..56ada85c9e 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java
@@ -175,6 +175,7 @@ public abstract class TimestampBuilderTestCase extends FoundationTestCase {
new BlazeDirectories(
new ServerDirectories(rootDirectory, outputBase, outputBase),
rootDirectory,
+ /* defaultSystemJavabase= */ null,
TestConstants.PRODUCT_NAME);
ExternalFilesHelper externalFilesHelper = ExternalFilesHelper.createForTesting(
pkgLocator,
diff --git a/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java b/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java
index 5ef553fb38..d4ecd6ceb9 100644
--- a/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java
+++ b/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java
@@ -112,6 +112,7 @@ public class StandaloneSpawnStrategyTest {
new BlazeDirectories(
new ServerDirectories(outputBase, outputBase, outputBase),
workspaceDir,
+ /* defaultSystemJavabase= */ null,
"mock-product-name");
// This call implicitly symlinks the integration bin tools into the exec root.
IntegrationMock.get()
diff --git a/src/test/shell/bazel/bazel_rules_test.sh b/src/test/shell/bazel/bazel_rules_test.sh
index b7e204fb42..2f2cc73d95 100755
--- a/src/test/shell/bazel/bazel_rules_test.sh
+++ b/src/test/shell/bazel/bazel_rules_test.sh
@@ -323,7 +323,7 @@ function test_genrule_toolchain_dependency {
genrule(
name = "toolchain_check",
outs = ["version"],
- toolchains = ['@bazel_tools//tools/jdk:current_java_runtime'],
+ toolchains = ['@bazel_tools//tools/jdk:current_host_java_runtime'],
cmd = "ls -al \$(JAVABASE) > \$@",
)
EOF
diff --git a/tools/jdk/BUILD b/tools/jdk/BUILD
index 87e654f890..92cf7dd21d 100644
--- a/tools/jdk/BUILD
+++ b/tools/jdk/BUILD
@@ -185,7 +185,7 @@ alias(
alias(
name = "host_jdk",
- actual = "@local_jdk//:jdk",
+ actual = "@embedded_jdk//:jdk",
)
genrule(