diff options
author | 2015-10-16 18:58:27 +0000 | |
---|---|---|
committer | 2015-10-19 08:20:00 +0000 | |
commit | e4461a4251131a78d26b5e822e4ba388950c9d48 (patch) | |
tree | 9840be78729759c4cdaf74a46c7c1c1b50264876 /src/main | |
parent | b918e1cec08b2e4f8378e51d8096fe19c6a15013 (diff) |
Add text output format to Android IDE aspect.
For debugging. Simply serializes the proto to a text file.
--
MOS_MIGRATED_REVID=105621279
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java | 47 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoFilesProvider.java | 14 |
2 files changed, 53 insertions, 8 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java index c3b69bcca7..4ac74cb790 100644 --- a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java +++ b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java @@ -31,6 +31,8 @@ import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; import com.google.devtools.build.lib.analysis.actions.BinaryFileWriteAction; +import com.google.devtools.build.lib.analysis.actions.FileWriteAction; +import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; @@ -73,10 +75,12 @@ public class AndroidStudioInfoAspect implements ConfiguredAspectFactory { // Output groups. public static final String IDE_INFO = "ide-info"; + public static final String IDE_INFO_TEXT = "ide-info-text"; public static final String IDE_RESOLVE = "ide-resolve"; // File suffixes. public static final String ASWB_BUILD_SUFFIX = ".aswb-build"; + public static final String ASWB_BUILD_TEXT_SUFFIX = ".aswb-build.txt"; public static final Function<Label, String> LABEL_TO_STRING = new Function<Label, String>() { @Nullable @Override @@ -121,6 +125,7 @@ public class AndroidStudioInfoAspect implements ConfiguredAspectFactory { builder .addOutputGroup(IDE_INFO, provider.getIdeInfoFiles()) + .addOutputGroup(IDE_INFO_TEXT, provider.getIdeInfoTextFiles()) .addOutputGroup(IDE_RESOLVE, provider.getIdeResolveFiles()) .addProvider( AndroidStudioInfoFilesProvider.class, @@ -148,6 +153,7 @@ public class AndroidStudioInfoAspect implements ConfiguredAspectFactory { dependenciesBuilder.addTransitive(depProvider.getExportedDeps()); providerBuilder.ideInfoFilesBuilder().addTransitive(depProvider.getIdeInfoFiles()); + providerBuilder.ideInfoTextFilesBuilder().addTransitive(depProvider.getIdeInfoTextFiles()); providerBuilder.ideResolveFilesBuilder().addTransitive(depProvider.getIdeResolveFiles()); providerBuilder.transitiveDependenciesBuilder().addTransitive( depProvider.getTransitiveDependencies()); @@ -196,13 +202,12 @@ public class AndroidStudioInfoAspect implements ConfiguredAspectFactory { Kind ruleKind, NestedSet<Label> directDependencies, AndroidStudioInfoFilesProvider.Builder providerBuilder) { - PathFragment ideBuildFilePath = getOutputFilePath(base, ruleContext); - Root genfilesDirectory = ruleContext.getConfiguration().getGenfilesDirectory(); - Artifact ideInfoFile = - ruleContext - .getAnalysisEnvironment() - .getDerivedArtifact(ideBuildFilePath, genfilesDirectory); + + Artifact ideInfoFile = ideInfoArtifact(base, ruleContext, ASWB_BUILD_SUFFIX); + Artifact ideInfoTextFile = ideInfoArtifact(base, ruleContext, ASWB_BUILD_TEXT_SUFFIX); + providerBuilder.ideInfoFilesBuilder().add(ideInfoFile); + providerBuilder.ideInfoTextFilesBuilder().add(ideInfoTextFile); NestedSetBuilder<Artifact> ideResolveArtifacts = providerBuilder.ideResolveFilesBuilder(); RuleIdeInfo.Builder outputBuilder = RuleIdeInfo.newBuilder(); @@ -251,10 +256,25 @@ public class AndroidStudioInfoAspect implements ConfiguredAspectFactory { final RuleIdeInfo ruleIdeInfo = outputBuilder.build(); ruleContext.registerAction( makeProtoWriteAction(ruleContext.getActionOwner(), ruleIdeInfo, ideInfoFile)); + ruleContext.registerAction( + makeProtoTextWriteAction(ruleContext.getActionOwner(), ruleIdeInfo, ideInfoTextFile)); return provider; } + private static Artifact ideInfoArtifact(ConfiguredTarget base, RuleContext ruleContext, + String suffix) { + BuildConfiguration configuration = ruleContext.getConfiguration(); + assert configuration != null; + Root genfilesDirectory = configuration.getGenfilesDirectory(); + + PathFragment ideBuildFilePath = + getOutputFilePath(base, ruleContext, suffix); + + return ruleContext.getAnalysisEnvironment().getDerivedArtifact( + ideBuildFilePath, genfilesDirectory); + } + private static AndroidRuleIdeInfo makeAndroidRuleIdeInfo( RuleContext ruleContext, ConfiguredTarget base, @@ -262,6 +282,7 @@ public class AndroidStudioInfoAspect implements ConfiguredAspectFactory { AndroidStudioInfoFilesProvider.Builder providerBuilder) { AndroidRuleIdeInfo.Builder builder = AndroidRuleIdeInfo.newBuilder(); AndroidIdeInfoProvider provider = base.getProvider(AndroidIdeInfoProvider.class); + assert provider != null; if (provider.getSignedApk() != null) { builder.setApk(makeArtifactLocation(provider.getSignedApk())); } @@ -327,6 +348,15 @@ public class AndroidStudioInfoAspect implements ConfiguredAspectFactory { /*makeExecutable =*/ false); } + private static FileWriteAction makeProtoTextWriteAction( + ActionOwner actionOwner, final MessageLite message, Artifact artifact) { + return new FileWriteAction( + actionOwner, + artifact, + message.toString(), + /*makeExecutable =*/ false); + } + private static ArtifactLocation makeArtifactLocation(Artifact artifact) { return ArtifactLocation.newBuilder() .setRootPath(artifact.getRoot().getPath().toString()) @@ -484,11 +514,12 @@ public class AndroidStudioInfoAspect implements ConfiguredAspectFactory { return builder.build(); } - private PathFragment getOutputFilePath(ConfiguredTarget base, RuleContext ruleContext) { + private static PathFragment getOutputFilePath(ConfiguredTarget base, RuleContext ruleContext, + String suffix) { PathFragment packagePathFragment = ruleContext.getLabel().getPackageIdentifier().getPathFragment(); String name = base.getLabel().getName(); - return new PathFragment(packagePathFragment, new PathFragment(name + ASWB_BUILD_SUFFIX)); + return new PathFragment(packagePathFragment, new PathFragment(name + suffix)); } private RuleIdeInfo.Kind getRuleKind(Rule rule, ConfiguredTarget base) { diff --git a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoFilesProvider.java b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoFilesProvider.java index 6e0c2e33be..f7e5ce6cc0 100644 --- a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoFilesProvider.java +++ b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoFilesProvider.java @@ -29,6 +29,7 @@ import com.google.devtools.build.lib.rules.android.AndroidIdeInfoProvider.Source @Immutable public final class AndroidStudioInfoFilesProvider implements TransitiveInfoProvider { private final NestedSet<Artifact> ideInfoFiles; + private final NestedSet<Artifact> ideInfoTextFiles; private final NestedSet<Artifact> ideResolveFiles; private final NestedSet<Label> transitiveDependencies; private final NestedSet<Label> exportedDeps; @@ -39,6 +40,7 @@ public final class AndroidStudioInfoFilesProvider implements TransitiveInfoProvi */ public static class Builder { private final NestedSetBuilder<Artifact> ideInfoFilesBuilder; + private final NestedSetBuilder<Artifact> ideInfoTextFilesBuilder; private final NestedSetBuilder<Artifact> ideResolveFilesBuilder; private final NestedSetBuilder<Label> transitiveDependenciesBuilder; private NestedSetBuilder<Label> exportedDepsBuilder; @@ -47,6 +49,7 @@ public final class AndroidStudioInfoFilesProvider implements TransitiveInfoProvi public Builder() { ideInfoFilesBuilder = NestedSetBuilder.stableOrder(); + ideInfoTextFilesBuilder = NestedSetBuilder.stableOrder(); ideResolveFilesBuilder = NestedSetBuilder.stableOrder(); transitiveDependenciesBuilder = NestedSetBuilder.stableOrder(); exportedDepsBuilder = NestedSetBuilder.stableOrder(); @@ -58,6 +61,10 @@ public final class AndroidStudioInfoFilesProvider implements TransitiveInfoProvi return ideInfoFilesBuilder; } + public NestedSetBuilder<Artifact> ideInfoTextFilesBuilder() { + return ideInfoTextFilesBuilder; + } + public NestedSetBuilder<Artifact> ideResolveFilesBuilder() { return ideResolveFilesBuilder; } @@ -90,6 +97,7 @@ public final class AndroidStudioInfoFilesProvider implements TransitiveInfoProvi public AndroidStudioInfoFilesProvider build() { return new AndroidStudioInfoFilesProvider( ideInfoFilesBuilder.build(), + ideInfoTextFilesBuilder.build(), ideResolveFilesBuilder.build(), transitiveDependenciesBuilder.build(), exportedDepsBuilder.build(), @@ -100,11 +108,13 @@ public final class AndroidStudioInfoFilesProvider implements TransitiveInfoProvi private AndroidStudioInfoFilesProvider( NestedSet<Artifact> ideInfoFiles, + NestedSet<Artifact> ideInfoTextFiles, NestedSet<Artifact> ideResolveFiles, NestedSet<Label> transitiveDependencies, NestedSet<Label> exportedDeps, NestedSet<SourceDirectory> transitiveResources) { this.ideInfoFiles = ideInfoFiles; + this.ideInfoTextFiles = ideInfoTextFiles; this.ideResolveFiles = ideResolveFiles; this.transitiveDependencies = transitiveDependencies; this.exportedDeps = exportedDeps; @@ -115,6 +125,10 @@ public final class AndroidStudioInfoFilesProvider implements TransitiveInfoProvi return ideInfoFiles; } + public NestedSet<Artifact> getIdeInfoTextFiles() { + return ideInfoTextFiles; + } + public NestedSet<Artifact> getIdeResolveFiles() { return ideResolveFiles; } |