Skip to content

Commit

Permalink
Delete experimental java_library sharded compilation support
Browse files Browse the repository at this point in the history
PiperOrigin-RevId: 583398378
Change-Id: Ia01c945574106d95097275c053f6f4d89f1eb042
  • Loading branch information
hvadehra authored and copybara-github committed Nov 17, 2023
1 parent e54078f commit e16de1b
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 294 deletions.
3 changes: 1 addition & 2 deletions src/main/starlark/builtins_bzl/bazel/exports.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

load("@_builtins//:common/cc/cc_proto_library.bzl", "cc_proto_aspect", "cc_proto_library")
load("@_builtins//:common/java/java_import.bzl", "java_import")
load("@_builtins//:common/java/java_library.bzl", "JAVA_LIBRARY_ATTRS", "bazel_java_library_rule", "java_library", "make_sharded_java_library")
load("@_builtins//:common/java/java_library.bzl", "JAVA_LIBRARY_ATTRS", "bazel_java_library_rule", "java_library")
load("@_builtins//:common/java/java_plugin.bzl", "java_plugin")
load("@_builtins//:common/java/proto/java_proto_library.bzl", "java_proto_library")
load("@_builtins//:common/proto/proto_library.bzl", "proto_library")
Expand All @@ -33,7 +33,6 @@ exported_toplevels = {
"experimental_java_library_export_do_not_use": struct(
bazel_java_library_rule = bazel_java_library_rule,
JAVA_LIBRARY_ATTRS = JAVA_LIBRARY_ATTRS,
sharded_java_library = make_sharded_java_library,
),
"cc_proto_aspect": cc_proto_aspect,
"py_internal": py_internal,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ load(
)
load(":common/java/java_semantics.bzl", "semantics")
load(":common/java/java_toolchain.bzl", "JavaToolchainInfo")
load(":common/java/sharded_javac.bzl", "experimental_sharded_javac", "use_sharded_javac")
load(":common/paths.bzl", "paths")

_java_common_internal = _builtins.internal.java_common_internal_do_not_use
Expand Down Expand Up @@ -223,71 +222,45 @@ def compile(
compile_jar = output
compile_deps_proto = None

if use_sharded_javac(ctx):
if compile_jar == output or not compile_jar:
fail("sharding requested without hjar/ijar compilation")
generated_source_jar = None
generated_class_jar = None
deps_proto = None
native_headers_jar = None
manifest_proto = None
experimental_sharded_javac(
ctx,
java_toolchain,
output,
compile_jar,
plugin_info,
compilation_classpath,
direct_jars,
bootclasspath,
compile_time_java_deps,
all_javac_opts,
strict_deps,
source_files,
source_jars,
resources,
resource_jars,
)
else:
native_headers_jar = helper.derive_output_file(ctx, output, name_suffix = "-native-header")
manifest_proto = helper.derive_output_file(ctx, output, extension_suffix = "_manifest_proto")
deps_proto = None
if ctx.fragments.java.generate_java_deps() and has_sources:
deps_proto = helper.derive_output_file(ctx, output, extension = "jdeps")
generated_class_jar = None
generated_source_jar = None
if uses_annotation_processing:
generated_class_jar = helper.derive_output_file(ctx, output, name_suffix = "-gen")
generated_source_jar = helper.derive_output_file(ctx, output, name_suffix = "-gensrc")
_java_common_internal.create_compilation_action(
ctx,
java_toolchain,
output,
manifest_proto,
plugin_info,
compilation_classpath,
direct_jars,
bootclasspath,
compile_time_java_deps,
all_javac_opts,
strict_deps,
ctx.label,
deps_proto,
generated_class_jar,
generated_source_jar,
native_headers_jar,
depset(source_files),
source_jars,
resources,
depset(resource_jars),
classpath_resources,
sourcepath,
injecting_rule_kind,
enable_jspecify,
enable_direct_classpath,
annotation_processor_additional_inputs,
annotation_processor_additional_outputs,
)
native_headers_jar = helper.derive_output_file(ctx, output, name_suffix = "-native-header")
manifest_proto = helper.derive_output_file(ctx, output, extension_suffix = "_manifest_proto")
deps_proto = None
if ctx.fragments.java.generate_java_deps() and has_sources:
deps_proto = helper.derive_output_file(ctx, output, extension = "jdeps")
generated_class_jar = None
generated_source_jar = None
if uses_annotation_processing:
generated_class_jar = helper.derive_output_file(ctx, output, name_suffix = "-gen")
generated_source_jar = helper.derive_output_file(ctx, output, name_suffix = "-gensrc")
_java_common_internal.create_compilation_action(
ctx,
java_toolchain,
output,
manifest_proto,
plugin_info,
compilation_classpath,
direct_jars,
bootclasspath,
compile_time_java_deps,
all_javac_opts,
strict_deps,
ctx.label,
deps_proto,
generated_class_jar,
generated_source_jar,
native_headers_jar,
depset(source_files),
source_jars,
resources,
depset(resource_jars),
classpath_resources,
sourcepath,
injecting_rule_kind,
enable_jspecify,
enable_direct_classpath,
annotation_processor_additional_inputs,
annotation_processor_additional_outputs,
)

create_output_source_jar = len(source_files) > 0 or source_jars != [output_source_jar]
if not output_source_jar:
Expand Down
36 changes: 12 additions & 24 deletions src/main/starlark/builtins_bzl/common/java/java_library.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -167,27 +167,15 @@ JAVA_LIBRARY_ATTRS = merge_attrs(
},
)

def _make_java_library_rule(extra_attrs = {}):
return rule(
_proxy,
attrs = merge_attrs(
JAVA_LIBRARY_ATTRS,
extra_attrs,
),
provides = [JavaInfo],
outputs = {
"classjar": "lib%{name}.jar",
"sourcejar": "lib%{name}-src.jar",
},
fragments = ["java", "cpp"],
toolchains = [semantics.JAVA_TOOLCHAIN],
subrules = [android_lint_subrule],
)

java_library = _make_java_library_rule()

# for experimental_java_library_export_do_not_use
def make_sharded_java_library(default_shard_size):
return _make_java_library_rule({
"experimental_javac_shard_size": attr.int(default = default_shard_size),
})
java_library = rule(
_proxy,
attrs = JAVA_LIBRARY_ATTRS,
provides = [JavaInfo],
outputs = {
"classjar": "lib%{name}.jar",
"sourcejar": "lib%{name}-src.jar",
},
fragments = ["java", "cpp"],
toolchains = [semantics.JAVA_TOOLCHAIN],
subrules = [android_lint_subrule],
)
129 changes: 0 additions & 129 deletions src/main/starlark/builtins_bzl/common/java/sharded_javac.bzl

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -15,22 +15,14 @@
package com.google.devtools.build.lib.bazel.rules.java;

import static com.google.common.collect.ImmutableList.toImmutableList;
import static com.google.common.collect.ImmutableSet.toImmutableSet;
import static com.google.common.collect.MoreCollectors.onlyElement;
import static com.google.common.truth.Truth.assertThat;
import static com.google.devtools.build.lib.testutil.TestConstants.TOOLS_REPOSITORY;

import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.io.MoreFiles;
import com.google.devtools.build.lib.actions.Action;
import com.google.devtools.build.lib.actions.ActionAnalysisMetadata;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.actions.TemplateExpansionAction;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
import com.google.devtools.build.lib.rules.java.JavaCompileAction;
import com.google.devtools.build.lib.util.OS;
import java.util.Arrays;
import java.util.Objects;
Expand Down Expand Up @@ -101,69 +93,4 @@ public void javaTestSetsSecurityManagerPropertyOnVersion17() throws Exception {
assertThat(jvmFlags).contains("-Djava.security.manager=allow");
}
}

@Test
public void experimentalShardedJavaLibrary_succeeds() throws Exception {
setBuildLanguageOptions("--experimental_java_library_export");
scratch.file(
"foo/rule.bzl",
//
"java_library = experimental_java_library_export_do_not_use.sharded_java_library(",
" default_shard_size = 10",
")");
scratch.file(
"foo/BUILD",
"load(':rule.bzl', 'java_library')",
"",
"java_library(",
" name = 'lib1',",
" srcs = ['1.java', '2.java', '3.java'],",
" experimental_javac_shard_size = 1,",
")",
"java_library(",
" name = 'lib2',",
" srcs = ['1.java', '2.java', '3.java'],",
" experimental_javac_shard_size = 2,",
")");

ImmutableList<Action> compileActionsWithShardSize1 =
getActions("//foo:lib1", JavaCompileAction.class);
ImmutableList<Action> compileActionsWithShardSize2 =
getActions("//foo:lib2", JavaCompileAction.class);

assertThat(compileActionsWithShardSize1).hasSize(3);
assertThat(compileActionsWithShardSize2).hasSize(2);
}

// regression test for b/297356812#comment31
@Test
public void experimentalShardedJavaLibrary_allOutputsHaveUniqueNames() throws Exception {
setBuildLanguageOptions("--experimental_java_library_export");
scratch.file(
"foo/rule.bzl",
//
"java_library = experimental_java_library_export_do_not_use.sharded_java_library(",
" default_shard_size = 1",
")");
scratch.file(
"foo/BUILD",
"load(':rule.bzl', 'java_library')",
"",
"java_library(",
" name = 'lib',",
" srcs = ['1.java', '2.java', '3.java'],",
")");

ImmutableList<Artifact> outputs =
getActions("//foo:lib", JavaCompileAction.class).stream()
.map(ActionAnalysisMetadata::getPrimaryOutput)
.collect(toImmutableList());
ImmutableSet<String> uniqueFilenamesWithoutExtension =
outputs.stream()
.map(file -> MoreFiles.getNameWithoutExtension(file.getPath().getPathFile().toPath()))
.collect(toImmutableSet());

assertThat(outputs).hasSize(3);
assertThat(uniqueFilenamesWithoutExtension).hasSize(3);
}
}

0 comments on commit e16de1b

Please sign in to comment.