Description redacted.
--
MOS_MIGRATED_REVID=137669164
diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/DependencyModule.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/DependencyModule.java
index e5e8226..8523afa 100644
--- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/DependencyModule.java
+++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/DependencyModule.java
@@ -35,6 +35,7 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.TreeSet;
/**
* Wrapper class for managing dependencies on top of
@@ -81,6 +82,7 @@
Set<String> requiredClasspath;
private final FixMessage fixMessage;
private final Set<String> exemptGenerators;
+ private final Set<String> packages;
DependencyModule(
StrictJavaDeps strictJavaDeps,
@@ -106,6 +108,7 @@
this.usedClasspath = new HashSet<>();
this.fixMessage = fixMessage;
this.exemptGenerators = exemptGenerators;
+ this.packages = new TreeSet<>();
}
/**
@@ -118,9 +121,8 @@
/**
* Writes dependency information to the deps file in proto format, if specified.
*
- * This is a replacement for {@link #emitUsedClasspath} above, which only outputs the used
- * classpath. We collect more precise dependency information to allow Blaze to analyze both
- * strict and unused dependencies based on the new deps.proto.
+ * <p>We collect precise dependency information to allow Blaze to analyze both strict and unused
+ * dependencies, as well as packages contained by the output jar.
*/
public void emitDependencyInformation(String classpath, boolean successful) throws IOException {
if (outputDepsProtoFile == null) {
@@ -142,6 +144,7 @@
deps.setRuleLabel(targetLabel);
}
deps.setSuccess(successful);
+ deps.addAllContainedPackage(packages);
// Filter using the original classpath, to preserve ordering.
for (String entry : classpath.split(":")) {
if (explicitDependenciesMap.containsKey(entry)) {
@@ -197,6 +200,11 @@
return implicitDependenciesMap;
}
+ /** Adds a package to the set of packages built by this target. */
+ public boolean addPackage(String packge) {
+ return packages.add(packge);
+ }
+
/**
* Returns the type (rule kind) of the originating target.
*/
diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/StrictJavaDepsPlugin.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/StrictJavaDepsPlugin.java
index a219232..5e0b354 100644
--- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/StrictJavaDepsPlugin.java
+++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/StrictJavaDepsPlugin.java
@@ -73,7 +73,6 @@
private final Set<JCTree.JCCompilationUnit> toplevels;
/** Marks seen ASTs */
private final Set<JCTree> trees;
-
/** Computed missing dependencies */
private final Set<JarOwner> missingTargets;
@@ -107,7 +106,7 @@
public void init(Context context, Log log, JavaCompiler compiler) {
super.init(context, log, compiler);
errWriter = log.getWriter(WriterKind.ERROR);
- this.fileManager = context.get(JavaFileManager.class);
+ fileManager = context.get(JavaFileManager.class);
implicitDependencyExtractor = new ImplicitDependencyExtractor(
dependencyModule.getUsedClasspath(), dependencyModule.getImplicitDependenciesMap(),
fileManager);
@@ -151,6 +150,7 @@
}
if (toplevels.add(env.toplevel)) {
checkingTreeScanner.scan(env.toplevel.getImports());
+ dependencyModule.addPackage(env.toplevel.packge.toString());
}
log.useSource(prev);
}
diff --git a/src/main/protobuf/deps.proto b/src/main/protobuf/deps.proto
index 8c688a7..7e996fa 100644
--- a/src/main/protobuf/deps.proto
+++ b/src/main/protobuf/deps.proto
@@ -60,4 +60,7 @@
// Whether the action was successful; even when compilation fails, partial
// dependency information can be useful.
optional bool success = 3;
+
+ // Packages contained in the output jar, sorted alphabetically.
+ repeated string contained_package = 4;
}