Skip to content

Commit

Permalink
LSC(tp): Add load() statements for the builtin top-level java symbols
Browse files Browse the repository at this point in the history
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
  • Loading branch information
hvadehra authored and Copybara-Service committed Apr 12, 2024
1 parent 11f0620 commit 20c49b4
Show file tree
Hide file tree
Showing 9 changed files with 103 additions and 69 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
# limitations under the License.
"""Helpers to create golden tests, to minimize code duplication."""

load("@rules_java//java/common:java_info.bzl", "JavaInfo")

def _compile_time_jars(ctx):
jars = depset([], transitive = [dep[JavaInfo].transitive_compile_time_jars for dep in ctx.attr.deps])
return [DefaultInfo(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ java_library(
]),
data = [
"//tools/jdk:srcs",
"@rules_java//java:rules",
"@rules_java//toolchains:srcs",
],
resources = [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -621,70 +621,6 @@ def _impl(ctx):
config.create("embedded_tools/objcproto/empty.cc");
config.create("embedded_tools/objcproto/well_known_type.proto");

config.create("rules_java_workspace/WORKSPACE", "workspace(name = 'rules_java')");
config.create("rules_java_workspace/MODULE.bazel", "module(name = 'rules_java')");
config.create("rules_java_workspace/java/BUILD");
config.create("rules_java_workspace/toolchains/BUILD");
java.nio.file.Path path =
Paths.get(runfiles.rlocation("rules_java/toolchains/java_toolchain_alias.bzl"));
if (Files.exists(path)) {
config.create(
"rules_java_workspace/toolchains/java_toolchain_alias.bzl",
MoreFiles.asCharSource(path, UTF_8).read());
}
config.create(
"rules_java_workspace/toolchains/local_java_repository.bzl",
"""
def local_java_repository(**attrs):
pass
""");
config.create("rules_java_workspace/toolchains/jdk_build_file.bzl", "JDK_BUILD_TEMPLATE = ''");
config.create(
"rules_java_workspace/java/defs.bzl",
"""
def java_binary(**attrs):
native.java_binary(**attrs)
def java_library(**attrs):
native.java_library(**attrs)
def java_import(**attrs):
native.java_import(**attrs)
""");
config.create(
"rules_java_workspace/java/repositories.bzl",
"""
def rules_java_dependencies():
pass
def rules_java_toolchains():
native.register_toolchains("//java/toolchains/runtime:all")
native.register_toolchains("//java/toolchains/javac:all")
""");

config.create(
"rules_java_workspace/java/toolchains/runtime/BUILD",
"""
toolchain_type(name = "toolchain_type")
toolchain(
name = "local_jdk",
toolchain = "@bazel_tools//tools/jdk:jdk",
toolchain_type = "@rules_java//java/toolchains/runtime:toolchain_type",
)
""");
config.create(
"rules_java_workspace/java/toolchains/javac/BUILD",
"""
toolchain_type(name = "toolchain_type")
toolchain(
name = "javac_toolchain",
toolchain = "@bazel_tools//tools/jdk:toolchain",
toolchain_type = "@rules_java//java/toolchains/javac:toolchain_type",
)
""");

config.create("third_party/bazel_rules/rules_proto/WORKSPACE");
config.create("third_party/bazel_rules/rules_proto/MODULE.bazel", "module(name='rules_proto')");

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

MockPlatformSupport.setup(config);
ccSupport().setup(config);
javaSupport().setupRulesJava(config, runfiles::rlocation);
pySupport().setup(config);
ShellConfiguration.injectShellExecutableFinder(
BazelRuleClassProvider::getDefaultPathFromOptions, BazelRuleClassProvider.SHELL_EXECUTABLE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,100 @@
// limitations under the License.
package com.google.devtools.build.lib.analysis.util;

import static java.nio.charset.StandardCharsets.UTF_8;

import com.google.common.collect.ImmutableList;
import com.google.common.io.MoreFiles;
import com.google.devtools.build.lib.packages.util.MockToolsConfig;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.function.Function;

public abstract class AbstractMockJavaSupport {

public static final AbstractMockJavaSupport BAZEL =
new AbstractMockJavaSupport() {
@Override
public void setupRulesJava(MockToolsConfig mockToolsConfig) {
// nothing special required
public void setupRulesJava(
MockToolsConfig config, Function<String, String> runfilesResolver) throws IOException {
config.create("rules_java_workspace/WORKSPACE", "workspace(name = 'rules_java')");
config.create("rules_java_workspace/MODULE.bazel", "module(name = 'rules_java')");
config.create("rules_java_workspace/java/BUILD");
config.create("rules_java_workspace/java/common/BUILD");
config.create("rules_java_workspace/java/private/BUILD");
config.create("rules_java_workspace/java/toolchains/BUILD");
config.create("rules_java_workspace/toolchains/BUILD");
ImmutableList<String> toolsToCopy =
ImmutableList.of(
"java/defs.bzl",
"java/java_binary.bzl",
"java/java_import.bzl",
"java/java_library.bzl",
"java/java_plugin.bzl",
"java/java_test.bzl",
"java/common/java_common.bzl",
"java/common/java_info.bzl",
"java/common/java_plugin_info.bzl",
"java/private/native.bzl",
"java/toolchains/java_package_configuration.bzl",
"java/toolchains/java_runtime.bzl",
"java/toolchains/java_toolchain.bzl",
"toolchains/java_toolchain_alias.bzl");
for (String relativePath : toolsToCopy) {
Path path = Path.of(runfilesResolver.apply("rules_java/" + relativePath));
if (Files.exists(path)) {
config.create(
"rules_java_workspace/" + relativePath,
MoreFiles.asCharSource(path, UTF_8).read());
}
}
// mocks
config.create(
"rules_java_workspace/toolchains/local_java_repository.bzl",
"""
def local_java_repository(**attrs):
pass
""");
config.create(
"rules_java_workspace/toolchains/jdk_build_file.bzl", "JDK_BUILD_TEMPLATE = ''");
config.create(
"rules_java_workspace/java/repositories.bzl",
"""
def rules_java_dependencies():
pass
def rules_java_toolchains():
native.register_toolchains("//java/toolchains/runtime:all")
native.register_toolchains("//java/toolchains/javac:all")
""");

config.create(
"rules_java_workspace/java/toolchains/runtime/BUILD",
"""
toolchain_type(name = "toolchain_type")
toolchain(
name = "local_jdk",
toolchain = "@bazel_tools//tools/jdk:jdk",
toolchain_type = "@rules_java//java/toolchains/runtime:toolchain_type",
)
""");
config.create(
"rules_java_workspace/java/toolchains/javac/BUILD",
"""
toolchain_type(name = "toolchain_type")
toolchain(
name = "javac_toolchain",
toolchain = "@bazel_tools//tools/jdk:toolchain",
toolchain_type = "@rules_java//java/toolchains/javac:toolchain_type",
)
""");
}
};

public abstract void setupRulesJava(MockToolsConfig mockToolsConfig) throws IOException;
public abstract void setupRulesJava(
MockToolsConfig mockToolsConfig, Function<String, String> runfilesResolver)
throws IOException;
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.function.Function;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
Expand All @@ -39,6 +40,7 @@ public class BindTest extends BuildViewTestCase {

@Before
public final void createFiles() throws Exception {
analysisMock.javaSupport().setupRulesJava(mockToolsConfig, Function.identity());
setupStarlarkRules(scratch);
scratch.file(
"test/BUILD",
Expand Down Expand Up @@ -94,8 +96,10 @@ public void testFilesToBuild() throws Exception {
Artifact giraffeArtifact =
ActionsTestUtil.getFirstArtifactEndingWith(getFilesToBuild(giraffeTarget), "giraffe.jar");
ConfiguredTarget safariTarget = getConfiguredTarget("//test:safari");
Action safariAction = getGeneratingAction(
ActionsTestUtil.getFirstArtifactEndingWith(getFilesToBuild(safariTarget), "safari.jar"));
Action safariAction =
getGeneratingAction(
ActionsTestUtil.getFirstArtifactEndingWith(
getFilesToBuild(safariTarget), "safari.jar"));
assertThat(safariAction.getInputs().toList()).contains(giraffeArtifact);
}

Expand Down
2 changes: 2 additions & 0 deletions tools/android/defs.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@

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

load("@rules_java//java/common:java_common.bzl", "java_common")

def _run_ijar(ctx):
ijar_jar = java_common.run_ijar(
ctx.actions,
Expand Down
2 changes: 2 additions & 0 deletions tools/build_defs/inspect/struct_to_dict.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ Useful to dump arbitrary provider data. Objects below the
specified depth are copied literally.
"""

load("@rules_java//java/common:java_info.bzl", "JavaInfo")

def struct_to_dict(x, depth = 5):
root = {}
queue = [(root, x)]
Expand Down
2 changes: 2 additions & 0 deletions tools/build_rules/java_rules_skylark.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ This is a quick and dirty rule to make Bazel compile itself. It's not production
ready.
"""

load("@rules_java//java/common:java_common.bzl", "java_common")

_JarsInfo = provider(fields = ["compile_time_jars", "runtime_jars"])

def _join_paths(separator, files):
Expand Down
2 changes: 2 additions & 0 deletions tools/build_rules/utilities.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@

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

load("@rules_java//java/common:java_info.bzl", "JavaInfo")

def _java_library_srcs_impl(ctx):
if len(ctx.attr.deps) != 1:
fail("Only one deps value supported", "deps")
Expand Down

0 comments on commit 20c49b4

Please sign in to comment.