aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools
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 /src/main/java/com/google/devtools
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
Diffstat (limited to 'src/main/java/com/google/devtools')
-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
8 files changed, 63 insertions, 7 deletions
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() {}
}