aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2016-10-31 05:43:34 +0000
committerGravatar Laszlo Csomor <laszlocsomor@google.com>2016-10-31 08:27:28 +0000
commit9b61b0f91f72b71c13ca529a4629c392e14b693e (patch)
treef967177a17b8b283ac142b24268b6dac45b2eac6
parentdb7b04c3a026736314963f8241df4a9ed3126627 (diff)
Description redacted.
-- MOS_MIGRATED_REVID=137669164
-rw-r--r--src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/DependencyModule.java14
-rw-r--r--src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/StrictJavaDepsPlugin.java4
-rw-r--r--src/main/protobuf/deps.proto3
3 files changed, 16 insertions, 5 deletions
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 e5e82264e2..8523afa495 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.HashSet;
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 @@ public final class DependencyModule {
Set<String> requiredClasspath;
private final FixMessage fixMessage;
private final Set<String> exemptGenerators;
+ private final Set<String> packages;
DependencyModule(
StrictJavaDeps strictJavaDeps,
@@ -106,6 +108,7 @@ public final class DependencyModule {
this.usedClasspath = new HashSet<>();
this.fixMessage = fixMessage;
this.exemptGenerators = exemptGenerators;
+ this.packages = new TreeSet<>();
}
/**
@@ -118,9 +121,8 @@ public final class DependencyModule {
/**
* 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 @@ public final class DependencyModule {
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 @@ public final class DependencyModule {
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 a21923223d..5e0b354284 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 @@ public final class StrictJavaDepsPlugin extends BlazeJavaCompilerPlugin {
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 final class StrictJavaDepsPlugin extends BlazeJavaCompilerPlugin {
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 @@ public final class StrictJavaDepsPlugin extends BlazeJavaCompilerPlugin {
}
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 8c688a7c23..7e996fa631 100644
--- a/src/main/protobuf/deps.proto
+++ b/src/main/protobuf/deps.proto
@@ -60,4 +60,7 @@ message Dependencies {
// 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;
}