Progress on Skylarkified java_lite_proto_library.
* Exposed transitive_runtime_jars from the former black-box JavaProvider.
* Added support for aliases.
* Returned the runfiles from the Skylark rule of java_lite_proto_library.
--
PiperOrigin-RevId: 147834471
MOS_MIGRATED_REVID=147834471
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaProvider.java
index e53cffb..434cf2a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaProvider.java
@@ -23,6 +23,7 @@
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.packages.SkylarkClassObject;
import com.google.devtools.build.lib.packages.SkylarkClassObjectConstructor;
+import com.google.devtools.build.lib.syntax.SkylarkList;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
@@ -120,7 +121,12 @@
}
private JavaProvider(TransitiveInfoProviderMap providers) {
- super(JAVA_PROVIDER, ImmutableMap.<String, Object>of());
+ super(JAVA_PROVIDER, ImmutableMap.<String, Object>of(
+ "transitive_runtime_jars", SkylarkList.createImmutable(
+ providers.getProvider(JavaCompilationArgsProvider.class)
+ .getRecursiveJavaCompilationArgs()
+ .getRuntimeJars())
+ ));
this.providers = providers;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoSkylarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoSkylarkCommon.java
index 6f07c46..8cb64b0 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoSkylarkCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoSkylarkCommon.java
@@ -84,6 +84,18 @@
}
@SkylarkCallable(
+ name = "has_proto_sources",
+ doc = "Returns whether the given proto_library target contains proto sources. If there are no"
+ + " sources it means that the proto_library is an alias library, which exports its"
+ + " dependencies."
+ )
+ public static boolean hasProtoSources(ConfiguredTarget target) {
+ SupportData supportData =
+ checkNotNull(target.getProvider(ProtoSupportDataProvider.class).getSupportData());
+ return supportData.hasProtoSources();
+ }
+
+ @SkylarkCallable(
name = "toolchain_deps",
// This function is experimental for now.
documented = false,
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 0641775..c44aea3 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
@@ -253,10 +253,8 @@
prettyJarNames(
getProvider(JavaCompilationArgsProvider.class, litepb2)
.getJavaCompilationArgs().getRuntimeJars());
- // TODO(elenairina): Remove libalpha-lite.jar from directJars assertion after implementing
- // a check for proto sources in Skylarkified java_lite_proto_library.
- assertThat(directJars).containsExactly(
- "cross/libbravo-lite.jar", "cross/libalpha-lite.jar", "protobuf/libjavalite_runtime.jar");
+ assertThat(directJars)
+ .containsExactly("cross/libbravo-lite.jar", "protobuf/libjavalite_runtime.jar");
}
@Test
@@ -486,9 +484,6 @@
* behaves as if we depend directly on the aliased proto_library.
*/
@Test
- @Ignore
- // TODO(bazel-team): Enable once alias protos are supported in the Skylark version of
- // java_lite_proto_library.
public void jplCorrectlyDefinesDirectJars_strictDepsEnabled_aliasProto() throws Exception {
scratch.file(
"x/BUILD",