diff options
author | Googler <noreply@google.com> | 2016-10-31 05:43:34 +0000 |
---|---|---|
committer | Laszlo Csomor <laszlocsomor@google.com> | 2016-10-31 08:27:28 +0000 |
commit | 9b61b0f91f72b71c13ca529a4629c392e14b693e (patch) | |
tree | f967177a17b8b283ac142b24268b6dac45b2eac6 /src | |
parent | db7b04c3a026736314963f8241df4a9ed3126627 (diff) |
Description redacted.
--
MOS_MIGRATED_REVID=137669164
Diffstat (limited to 'src')
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; } |