Replace the native Java host runtime alias rule with a starlark implementation
in preparation for adding toolchain resolution support for the starlark
rules, and eventually removing them once the migration to toolchain
resolution is complete.
PiperOrigin-RevId: 233962397
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/JavaRules.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/JavaRules.java
index f2e1ae4..7c19179 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/JavaRules.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/JavaRules.java
@@ -30,7 +30,6 @@
import com.google.devtools.build.lib.rules.extra.ExtraActionRule;
import com.google.devtools.build.lib.rules.java.JavaCcLinkParamsProvider;
import com.google.devtools.build.lib.rules.java.JavaConfigurationLoader;
-import com.google.devtools.build.lib.rules.java.JavaHostRuntimeAliasRule;
import com.google.devtools.build.lib.rules.java.JavaImportBaseRule;
import com.google.devtools.build.lib.rules.java.JavaInfo;
import com.google.devtools.build.lib.rules.java.JavaOptions;
@@ -83,7 +82,6 @@
builder.addRuleDefinition(new JavaPackageConfigurationRule());
builder.addRuleDefinition(new JavaRuntimeRule());
builder.addRuleDefinition(new JavaRuntimeAliasRule());
- builder.addRuleDefinition(new JavaHostRuntimeAliasRule());
builder.addRuleDefinition(new JavaToolchainAliasRule());
builder.addRuleDefinition(new ExtraActionRule());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/BUILD b/src/main/java/com/google/devtools/build/lib/rules/java/BUILD
index 669b1c5..af87385 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/BUILD
@@ -13,7 +13,6 @@
"JavaBinary.java",
"JavaCcLinkParamsProvider.java",
"JavaConfigurationLoader.java",
- "JavaHostRuntimeAliasRule.java",
"JavaImport.java",
"JavaImportBaseRule.java",
"JavaInfo.java",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaHostRuntimeAliasRule.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaHostRuntimeAliasRule.java
deleted file mode 100644
index 9feffe1..0000000
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaHostRuntimeAliasRule.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2017 The Bazel Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.devtools.build.lib.rules.java;
-
-import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
-import com.google.devtools.build.lib.analysis.config.HostTransition;
-import com.google.devtools.build.lib.analysis.platform.ToolchainInfo;
-import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.packages.Attribute;
-import com.google.devtools.build.lib.packages.Attribute.LabelLateBoundDefault;
-import com.google.devtools.build.lib.rules.LateBoundAlias.CommonAliasRule;
-import java.io.Serializable;
-
-/** Implementation of the {@code java_runtime_alias} rule. */
-public class JavaHostRuntimeAliasRule extends CommonAliasRule<JavaConfiguration> {
- public JavaHostRuntimeAliasRule() {
- super(
- "java_host_runtime_alias",
- JavaHostRuntimeAliasRule::hostJdkAttribute,
- JavaConfiguration.class);
- }
-
- @Override
- protected Attribute.Builder<Label> makeAttribute(RuleDefinitionEnvironment environment) {
- Attribute.Builder<Label> builder = super.makeAttribute(environment);
- return builder.cfg(HostTransition.INSTANCE).mandatoryProviders(ToolchainInfo.PROVIDER.id());
- }
-
- static LabelLateBoundDefault<JavaConfiguration> hostJdkAttribute(RuleDefinitionEnvironment env) {
- return LabelLateBoundDefault.fromHostConfiguration(
- JavaConfiguration.class,
- env.getToolsLabel(JavaImplicitAttributes.HOST_JDK_LABEL),
- (Attribute.LateBoundDefault.Resolver<JavaConfiguration, Label> & Serializable)
- (rule, attributes, configuration) -> configuration.getRuntimeLabel());
- }
-}
diff --git a/src/test/java/com/google/devtools/build/lib/BUILD b/src/test/java/com/google/devtools/build/lib/BUILD
index 58c28c9..6f17d30 100644
--- a/src/test/java/com/google/devtools/build/lib/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/BUILD
@@ -629,6 +629,9 @@
],
exclude = ["analysis/util/DefaultBuildOptionsForTesting.java"],
),
+ data = [
+ "//tools/jdk:srcs",
+ ],
resources = [
"analysis/mock/MOCK_CROSSTOOL",
],
@@ -692,6 +695,7 @@
"//third_party:jsr305",
"//third_party:mockito",
"//third_party/protobuf:protobuf_java",
+ "@bazel_tools//tools/java/runfiles",
],
)
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
index e58cd0e..99510e1 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
@@ -13,9 +13,12 @@
// limitations under the License.
package com.google.devtools.build.lib.analysis.mock;
+import static java.nio.charset.StandardCharsets.UTF_8;
+
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
+import com.google.common.io.MoreFiles;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.PlatformConfigurationLoader;
import com.google.devtools.build.lib.analysis.ShellConfiguration;
@@ -46,8 +49,12 @@
import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
import com.google.devtools.build.lib.vfs.Path;
+import com.google.devtools.build.runfiles.Runfiles;
import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
/** Subclass of {@link AnalysisMock} using Bazel-specific semantics. */
@@ -92,8 +99,19 @@
config.create("/protobuf/WORKSPACE");
config.overwrite("WORKSPACE", workspaceContents.toArray(new String[workspaceContents.size()]));
config.create("/bazel_tools_workspace/WORKSPACE", "workspace(name = 'bazel_tools')");
+ Runfiles runfiles = Runfiles.create();
+ for (String filename :
+ Arrays.asList("tools/jdk/toolchain_utils.bzl", "tools/jdk/java_toolchain_alias.bzl")) {
+ java.nio.file.Path path = Paths.get(runfiles.rlocation("io_bazel/" + filename));
+ if (!Files.exists(path)) {
+ continue; // the io_bazel workspace root only exists for Bazel
+ }
+ config.create(
+ "/bazel_tools_workspace/" + filename, MoreFiles.asCharSource(path, UTF_8).read());
+ }
config.create(
"/bazel_tools_workspace/tools/jdk/BUILD",
+ "load(':java_toolchain_alias.bzl', 'java_host_runtime_alias')",
"package(default_visibility=['//visibility:public'])",
"java_toolchain(",
" name = 'toolchain',",
@@ -368,3 +386,4 @@
repositoryHandlers.put(LocalConfigPlatformRule.NAME, new LocalConfigPlatformFunction());
}
}
+
diff --git a/src/test/java/com/google/devtools/build/lib/rules/java/proto/SkylarkJavaLiteProtoLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/java/proto/SkylarkJavaLiteProtoLibraryTest.java
index ccdc053..d57016f 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/java/proto/SkylarkJavaLiteProtoLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/java/proto/SkylarkJavaLiteProtoLibraryTest.java
@@ -89,12 +89,6 @@
scratch.file(RULE_DIRECTORY + "/" + file.getName(), Files.readAllBytes(file.toPath()));
}
scratch.file(RULE_DIRECTORY + "/BUILD", "exports_files(['java_lite_proto_library.bzl'])");
- scratch.file(
- "tools/jdk/build_defs.bzl",
- Files.readAllBytes(Runfiles.location("tools/jdk/build_defs.bzl").toPath()));
- scratch.file(
- "tools/jdk/toolchain_utils.bzl",
- Files.readAllBytes(Runfiles.location("tools/jdk/toolchain_utils.bzl").toPath()));
invalidatePackages();
}