Skip to content

Commit 20c49b4

Browse files
hvadehracopybara-github
authored andcommitted
LSC(tp): Add load() statements for the builtin top-level java symbols
BEGIN_PUBLIC Add `load()` statements for the Bazel builtin top-level java symbols Loads are being added in preparation for moving the symbols out of Bazel and into `rules_java`. END_PUBLIC PiperOrigin-RevId: 624087139 Change-Id: I3d98ec19cf1c2cd7e587e4a3e6117c49d7ffd2e8
1 parent 11f0620 commit 20c49b4

9 files changed

Lines changed: 103 additions & 69 deletions

File tree

src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/tests.bzl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
# limitations under the License.
1414
"""Helpers to create golden tests, to minimize code duplication."""
1515

16+
load("@rules_java//java/common:java_info.bzl", "JavaInfo")
17+
1618
def _compile_time_jars(ctx):
1719
jars = depset([], transitive = [dep[JavaInfo].transitive_compile_time_jars for dep in ctx.attr.deps])
1820
return [DefaultInfo(

src/test/java/com/google/devtools/build/lib/analysis/mock/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ java_library(
2020
]),
2121
data = [
2222
"//tools/jdk:srcs",
23+
"@rules_java//java:rules",
2324
"@rules_java//toolchains:srcs",
2425
],
2526
resources = [

src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java

Lines changed: 1 addition & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -621,70 +621,6 @@ def _impl(ctx):
621621
config.create("embedded_tools/objcproto/empty.cc");
622622
config.create("embedded_tools/objcproto/well_known_type.proto");
623623

624-
config.create("rules_java_workspace/WORKSPACE", "workspace(name = 'rules_java')");
625-
config.create("rules_java_workspace/MODULE.bazel", "module(name = 'rules_java')");
626-
config.create("rules_java_workspace/java/BUILD");
627-
config.create("rules_java_workspace/toolchains/BUILD");
628-
java.nio.file.Path path =
629-
Paths.get(runfiles.rlocation("rules_java/toolchains/java_toolchain_alias.bzl"));
630-
if (Files.exists(path)) {
631-
config.create(
632-
"rules_java_workspace/toolchains/java_toolchain_alias.bzl",
633-
MoreFiles.asCharSource(path, UTF_8).read());
634-
}
635-
config.create(
636-
"rules_java_workspace/toolchains/local_java_repository.bzl",
637-
"""
638-
def local_java_repository(**attrs):
639-
pass
640-
""");
641-
config.create("rules_java_workspace/toolchains/jdk_build_file.bzl", "JDK_BUILD_TEMPLATE = ''");
642-
config.create(
643-
"rules_java_workspace/java/defs.bzl",
644-
"""
645-
def java_binary(**attrs):
646-
native.java_binary(**attrs)
647-
648-
def java_library(**attrs):
649-
native.java_library(**attrs)
650-
651-
def java_import(**attrs):
652-
native.java_import(**attrs)
653-
""");
654-
config.create(
655-
"rules_java_workspace/java/repositories.bzl",
656-
"""
657-
def rules_java_dependencies():
658-
pass
659-
660-
def rules_java_toolchains():
661-
native.register_toolchains("//java/toolchains/runtime:all")
662-
native.register_toolchains("//java/toolchains/javac:all")
663-
""");
664-
665-
config.create(
666-
"rules_java_workspace/java/toolchains/runtime/BUILD",
667-
"""
668-
toolchain_type(name = "toolchain_type")
669-
670-
toolchain(
671-
name = "local_jdk",
672-
toolchain = "@bazel_tools//tools/jdk:jdk",
673-
toolchain_type = "@rules_java//java/toolchains/runtime:toolchain_type",
674-
)
675-
""");
676-
config.create(
677-
"rules_java_workspace/java/toolchains/javac/BUILD",
678-
"""
679-
toolchain_type(name = "toolchain_type")
680-
681-
toolchain(
682-
name = "javac_toolchain",
683-
toolchain = "@bazel_tools//tools/jdk:toolchain",
684-
toolchain_type = "@rules_java//java/toolchains/javac:toolchain_type",
685-
)
686-
""");
687-
688624
config.create("third_party/bazel_rules/rules_proto/WORKSPACE");
689625
config.create("third_party/bazel_rules/rules_proto/MODULE.bazel", "module(name='rules_proto')");
690626

@@ -702,6 +638,7 @@ def rules_java_toolchains():
702638

703639
MockPlatformSupport.setup(config);
704640
ccSupport().setup(config);
641+
javaSupport().setupRulesJava(config, runfiles::rlocation);
705642
pySupport().setup(config);
706643
ShellConfiguration.injectShellExecutableFinder(
707644
BazelRuleClassProvider::getDefaultPathFromOptions, BazelRuleClassProvider.SHELL_EXECUTABLE);

src/test/java/com/google/devtools/build/lib/analysis/util/AbstractMockJavaSupport.java

Lines changed: 85 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,100 @@
1313
// limitations under the License.
1414
package com.google.devtools.build.lib.analysis.util;
1515

16+
import static java.nio.charset.StandardCharsets.UTF_8;
17+
18+
import com.google.common.collect.ImmutableList;
19+
import com.google.common.io.MoreFiles;
1620
import com.google.devtools.build.lib.packages.util.MockToolsConfig;
1721
import java.io.IOException;
22+
import java.nio.file.Files;
23+
import java.nio.file.Path;
24+
import java.util.function.Function;
1825

1926
public abstract class AbstractMockJavaSupport {
2027

2128
public static final AbstractMockJavaSupport BAZEL =
2229
new AbstractMockJavaSupport() {
2330
@Override
24-
public void setupRulesJava(MockToolsConfig mockToolsConfig) {
25-
// nothing special required
31+
public void setupRulesJava(
32+
MockToolsConfig config, Function<String, String> runfilesResolver) throws IOException {
33+
config.create("rules_java_workspace/WORKSPACE", "workspace(name = 'rules_java')");
34+
config.create("rules_java_workspace/MODULE.bazel", "module(name = 'rules_java')");
35+
config.create("rules_java_workspace/java/BUILD");
36+
config.create("rules_java_workspace/java/common/BUILD");
37+
config.create("rules_java_workspace/java/private/BUILD");
38+
config.create("rules_java_workspace/java/toolchains/BUILD");
39+
config.create("rules_java_workspace/toolchains/BUILD");
40+
ImmutableList<String> toolsToCopy =
41+
ImmutableList.of(
42+
"java/defs.bzl",
43+
"java/java_binary.bzl",
44+
"java/java_import.bzl",
45+
"java/java_library.bzl",
46+
"java/java_plugin.bzl",
47+
"java/java_test.bzl",
48+
"java/common/java_common.bzl",
49+
"java/common/java_info.bzl",
50+
"java/common/java_plugin_info.bzl",
51+
"java/private/native.bzl",
52+
"java/toolchains/java_package_configuration.bzl",
53+
"java/toolchains/java_runtime.bzl",
54+
"java/toolchains/java_toolchain.bzl",
55+
"toolchains/java_toolchain_alias.bzl");
56+
for (String relativePath : toolsToCopy) {
57+
Path path = Path.of(runfilesResolver.apply("rules_java/" + relativePath));
58+
if (Files.exists(path)) {
59+
config.create(
60+
"rules_java_workspace/" + relativePath,
61+
MoreFiles.asCharSource(path, UTF_8).read());
62+
}
63+
}
64+
// mocks
65+
config.create(
66+
"rules_java_workspace/toolchains/local_java_repository.bzl",
67+
"""
68+
def local_java_repository(**attrs):
69+
pass
70+
""");
71+
config.create(
72+
"rules_java_workspace/toolchains/jdk_build_file.bzl", "JDK_BUILD_TEMPLATE = ''");
73+
config.create(
74+
"rules_java_workspace/java/repositories.bzl",
75+
"""
76+
def rules_java_dependencies():
77+
pass
78+
79+
def rules_java_toolchains():
80+
native.register_toolchains("//java/toolchains/runtime:all")
81+
native.register_toolchains("//java/toolchains/javac:all")
82+
""");
83+
84+
config.create(
85+
"rules_java_workspace/java/toolchains/runtime/BUILD",
86+
"""
87+
toolchain_type(name = "toolchain_type")
88+
89+
toolchain(
90+
name = "local_jdk",
91+
toolchain = "@bazel_tools//tools/jdk:jdk",
92+
toolchain_type = "@rules_java//java/toolchains/runtime:toolchain_type",
93+
)
94+
""");
95+
config.create(
96+
"rules_java_workspace/java/toolchains/javac/BUILD",
97+
"""
98+
toolchain_type(name = "toolchain_type")
99+
100+
toolchain(
101+
name = "javac_toolchain",
102+
toolchain = "@bazel_tools//tools/jdk:toolchain",
103+
toolchain_type = "@rules_java//java/toolchains/javac:toolchain_type",
104+
)
105+
""");
26106
}
27107
};
28108

29-
public abstract void setupRulesJava(MockToolsConfig mockToolsConfig) throws IOException;
109+
public abstract void setupRulesJava(
110+
MockToolsConfig mockToolsConfig, Function<String, String> runfilesResolver)
111+
throws IOException;
30112
}

src/test/java/com/google/devtools/build/lib/starlark/BindTest.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import java.io.File;
2929
import java.io.IOException;
3030
import java.nio.charset.Charset;
31+
import java.util.function.Function;
3132
import org.junit.Before;
3233
import org.junit.Test;
3334
import org.junit.runner.RunWith;
@@ -39,6 +40,7 @@ public class BindTest extends BuildViewTestCase {
3940

4041
@Before
4142
public final void createFiles() throws Exception {
43+
analysisMock.javaSupport().setupRulesJava(mockToolsConfig, Function.identity());
4244
setupStarlarkRules(scratch);
4345
scratch.file(
4446
"test/BUILD",
@@ -94,8 +96,10 @@ public void testFilesToBuild() throws Exception {
9496
Artifact giraffeArtifact =
9597
ActionsTestUtil.getFirstArtifactEndingWith(getFilesToBuild(giraffeTarget), "giraffe.jar");
9698
ConfiguredTarget safariTarget = getConfiguredTarget("//test:safari");
97-
Action safariAction = getGeneratingAction(
98-
ActionsTestUtil.getFirstArtifactEndingWith(getFilesToBuild(safariTarget), "safari.jar"));
99+
Action safariAction =
100+
getGeneratingAction(
101+
ActionsTestUtil.getFirstArtifactEndingWith(
102+
getFilesToBuild(safariTarget), "safari.jar"));
99103
assertThat(safariAction.getInputs().toList()).contains(giraffeArtifact);
100104
}
101105

tools/android/defs.bzl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
"""Provides rules to run ijar and single_jar from java_toolchain."""
1616

17+
load("@rules_java//java/common:java_common.bzl", "java_common")
18+
1719
def _run_ijar(ctx):
1820
ijar_jar = java_common.run_ijar(
1921
ctx.actions,

tools/build_defs/inspect/struct_to_dict.bzl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ Useful to dump arbitrary provider data. Objects below the
1818
specified depth are copied literally.
1919
"""
2020

21+
load("@rules_java//java/common:java_info.bzl", "JavaInfo")
22+
2123
def struct_to_dict(x, depth = 5):
2224
root = {}
2325
queue = [(root, x)]

tools/build_rules/java_rules_skylark.bzl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ This is a quick and dirty rule to make Bazel compile itself. It's not production
1919
ready.
2020
"""
2121

22+
load("@rules_java//java/common:java_common.bzl", "java_common")
23+
2224
_JarsInfo = provider(fields = ["compile_time_jars", "runtime_jars"])
2325

2426
def _join_paths(separator, files):

tools/build_rules/utilities.bzl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515

1616
"""This rule exposes the source jar of a java_*_library rule as a label."""
1717

18+
load("@rules_java//java/common:java_info.bzl", "JavaInfo")
19+
1820
def _java_library_srcs_impl(ctx):
1921
if len(ctx.attr.deps) != 1:
2022
fail("Only one deps value supported", "deps")

0 commit comments

Comments
 (0)