aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2015-10-02 03:40:36 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2015-10-02 09:32:30 +0000
commitd12c05f2a9535216f15224518ad00e3c4b55be66 (patch)
tree528a739d1a512151bf408cc2c4706564e43142c2 /src/main/java/com/google/devtools
parentac0f10a9dcd3d482dd060b58c6a41f3767aa0b56 (diff)
Add Android aspect resolve output group.
* Add ide-resolve output group * Add jars, ijars, source jars * Add idl jars * Add gen jars * Add java_import inputs (in case they are generated) * Add manifest inputs (in case they are generated) * Rename ide-build -> ide-info (build is too ambiguous) * Remove generated manifest -- MOS_MIGRATED_REVID=104464380
Diffstat (limited to 'src/main/java/com/google/devtools')
-rw-r--r--src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java74
-rw-r--r--src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoFilesProvider.java34
2 files changed, 76 insertions, 32 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 cf16f33aad..45f6653b5f 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
@@ -71,8 +71,9 @@ public class AndroidStudioInfoAspect implements ConfiguredAspectFactory {
public static final String NAME = "AndroidStudioInfoAspect";
// Output groups.
+
+ public static final String IDE_INFO = "ide-info";
public static final String IDE_RESOLVE = "ide-resolve";
- public static final String IDE_BUILD = "ide-build";
// File suffixes.
public static final String ASWB_BUILD_SUFFIX = ".aswb-build";
@@ -118,9 +119,9 @@ public class AndroidStudioInfoAspect implements ConfiguredAspectFactory {
provider = providerBuilder.build();
}
- NestedSet<Artifact> ideInfoFiles = provider.getIdeBuildFiles();
builder
- .addOutputGroup(IDE_BUILD, ideInfoFiles)
+ .addOutputGroup(IDE_INFO, provider.getIdeInfoFiles())
+ .addOutputGroup(IDE_RESOLVE, provider.getIdeResolveFiles())
.addProvider(
AndroidStudioInfoFilesProvider.class,
provider);
@@ -146,7 +147,8 @@ public class AndroidStudioInfoAspect implements ConfiguredAspectFactory {
AnalysisUtils.getProviders(prerequisites, AndroidStudioInfoFilesProvider.class)) {
dependenciesBuilder.addTransitive(depProvider.getExportedDeps());
- providerBuilder.ideBuildFilesBuilder().addTransitive(depProvider.getIdeBuildFiles());
+ providerBuilder.ideInfoFilesBuilder().addTransitive(depProvider.getIdeInfoFiles());
+ providerBuilder.ideResolveFilesBuilder().addTransitive(depProvider.getIdeResolveFiles());
providerBuilder.transitiveDependenciesBuilder().addTransitive(
depProvider.getTransitiveDependencies());
providerBuilder.transitiveResourcesBuilder().addTransitive(
@@ -203,11 +205,12 @@ public class AndroidStudioInfoAspect implements ConfiguredAspectFactory {
AndroidStudioInfoFilesProvider.Builder providerBuilder) {
PathFragment ideBuildFilePath = getOutputFilePath(base, ruleContext);
Root genfilesDirectory = ruleContext.getConfiguration().getGenfilesDirectory();
- Artifact ideBuildFile =
+ Artifact ideInfoFile =
ruleContext
.getAnalysisEnvironment()
.getDerivedArtifact(ideBuildFilePath, genfilesDirectory);
- providerBuilder.ideBuildFilesBuilder().add(ideBuildFile);
+ providerBuilder.ideInfoFilesBuilder().add(ideInfoFile);
+ NestedSetBuilder<Artifact> ideResolveArtifacts = providerBuilder.ideResolveFilesBuilder();
RuleIdeInfo.Builder outputBuilder = RuleIdeInfo.newBuilder();
@@ -223,7 +226,6 @@ public class AndroidStudioInfoAspect implements ConfiguredAspectFactory {
outputBuilder.setKind(ruleKind);
-
if (ruleKind == Kind.JAVA_LIBRARY
|| ruleKind == Kind.JAVA_IMPORT
|| ruleKind == Kind.JAVA_TEST
@@ -232,13 +234,13 @@ public class AndroidStudioInfoAspect implements ConfiguredAspectFactory {
|| ruleKind == Kind.ANDROID_BINARY
|| ruleKind == Kind.ANDROID_TEST
|| ruleKind == Kind.ANDROID_ROBOELECTRIC_TEST) {
- outputBuilder.setJavaRuleIdeInfo(makeJavaRuleIdeInfo(base));
+ outputBuilder.setJavaRuleIdeInfo(makeJavaRuleIdeInfo(base, ideResolveArtifacts));
}
if (ruleKind == Kind.ANDROID_LIBRARY
|| ruleKind == Kind.ANDROID_BINARY
|| ruleKind == Kind.ANDROID_TEST) {
outputBuilder.setAndroidRuleIdeInfo(
- makeAndroidRuleIdeInfo(ruleContext, base, providerBuilder));
+ makeAndroidRuleIdeInfo(ruleContext, base, ideResolveArtifacts, providerBuilder));
}
if (ruleKind == Kind.ANDROID_SDK) {
outputBuilder.setAndroidSdkRuleInfo(
@@ -255,7 +257,7 @@ public class AndroidStudioInfoAspect implements ConfiguredAspectFactory {
final RuleIdeInfo ruleIdeInfo = outputBuilder.build();
ruleContext.registerAction(
- makeProtoWriteAction(ruleContext.getActionOwner(), ruleIdeInfo, ideBuildFile));
+ makeProtoWriteAction(ruleContext.getActionOwner(), ruleIdeInfo, ideInfoFile));
return provider;
}
@@ -263,6 +265,7 @@ public class AndroidStudioInfoAspect implements ConfiguredAspectFactory {
private static AndroidRuleIdeInfo makeAndroidRuleIdeInfo(
RuleContext ruleContext,
ConfiguredTarget base,
+ NestedSetBuilder<Artifact> ideResolveArtifacts,
AndroidStudioInfoFilesProvider.Builder providerBuilder) {
AndroidRuleIdeInfo.Builder builder = AndroidRuleIdeInfo.newBuilder();
AndroidIdeInfoProvider provider = base.getProvider(AndroidIdeInfoProvider.class);
@@ -270,12 +273,13 @@ public class AndroidStudioInfoAspect implements ConfiguredAspectFactory {
builder.setApk(makeArtifactLocation(provider.getSignedApk()));
}
- if (provider.getManifest() != null) {
- builder.setManifest(makeArtifactLocation(provider.getManifest()));
- }
+ Artifact manifest = provider.getManifest();
+ if (manifest != null) {
+ builder.setManifest(makeArtifactLocation(manifest));
- if (provider.getGeneratedManifest() != null) {
- builder.setGeneratedManifest(makeArtifactLocation(provider.getGeneratedManifest()));
+ if (!manifest.isSourceArtifact()) {
+ ideResolveArtifacts.add(manifest);
+ }
}
for (Artifact artifact : provider.getApksUnderTest()) {
@@ -301,10 +305,12 @@ public class AndroidStudioInfoAspect implements ConfiguredAspectFactory {
Artifact idlClassJar = provider.getIdlClassJar();
if (idlClassJar != null) {
jarBuilder.setJar(makeArtifactLocation(idlClassJar));
+ ideResolveArtifacts.add(idlClassJar);
}
Artifact idlSourceJar = provider.getIdlSourceJar();
if (idlSourceJar != null) {
jarBuilder.setSourceJar(makeArtifactLocation(idlSourceJar));
+ ideResolveArtifacts.add(idlSourceJar);
}
if (idlClassJar != null) {
builder.setIdlJar(jarBuilder.build());
@@ -342,25 +348,27 @@ public class AndroidStudioInfoAspect implements ConfiguredAspectFactory {
.build();
}
- private static JavaRuleIdeInfo makeJavaRuleIdeInfo(ConfiguredTarget base) {
+ private static JavaRuleIdeInfo makeJavaRuleIdeInfo(
+ ConfiguredTarget base,
+ NestedSetBuilder<Artifact> ideResolveArtifacts) {
JavaRuleIdeInfo.Builder builder = JavaRuleIdeInfo.newBuilder();
JavaRuleOutputJarsProvider outputJarsProvider =
base.getProvider(JavaRuleOutputJarsProvider.class);
if (outputJarsProvider != null) {
// java_library
- collectJarsFromOutputJarsProvider(builder, outputJarsProvider);
+ collectJarsFromOutputJarsProvider(builder, ideResolveArtifacts, outputJarsProvider);
} else {
JavaSourceInfoProvider provider = base.getProvider(JavaSourceInfoProvider.class);
if (provider != null) {
// java_import
- collectJarsFromSourceInfoProvider(builder, provider);
+ collectJarsFromSourceInfoProvider(builder, ideResolveArtifacts, provider);
}
}
JavaGenJarsProvider genJarsProvider =
base.getProvider(JavaGenJarsProvider.class);
if (genJarsProvider != null) {
- collectGenJars(builder, genJarsProvider);
+ collectGenJars(builder, ideResolveArtifacts, genJarsProvider);
}
Collection<Artifact> sourceFiles = getSources(base);
@@ -373,7 +381,9 @@ public class AndroidStudioInfoAspect implements ConfiguredAspectFactory {
}
private static void collectJarsFromSourceInfoProvider(
- JavaRuleIdeInfo.Builder builder, JavaSourceInfoProvider provider) {
+ JavaRuleIdeInfo.Builder builder,
+ NestedSetBuilder<Artifact> ideResolveArtifacts,
+ JavaSourceInfoProvider provider) {
Collection<Artifact> sourceJarsForJarFiles = provider.getSourceJarsForJarFiles();
// For java_import rule, we always have only one source jar specified.
// The intent is that that source jar provides sources for all imported jars,
@@ -391,27 +401,43 @@ public class AndroidStudioInfoAspect implements ConfiguredAspectFactory {
for (Artifact artifact : provider.getJarFiles()) {
LibraryArtifact.Builder libraryBuilder = LibraryArtifact.newBuilder();
libraryBuilder.setJar(makeArtifactLocation(artifact));
+
+ if (!artifact.isSourceArtifact()) {
+ ideResolveArtifacts.add(artifact);
+ }
+
if (sourceJar != null) {
libraryBuilder.setSourceJar(makeArtifactLocation(sourceJar));
}
builder.addJars(libraryBuilder.build());
}
+
+ if (sourceJar != null) {
+ if (!sourceJar.isSourceArtifact()) {
+ ideResolveArtifacts.add(sourceJar);
+ }
+ }
}
private static void collectJarsFromOutputJarsProvider(
- JavaRuleIdeInfo.Builder builder, JavaRuleOutputJarsProvider outputJarsProvider) {
+ JavaRuleIdeInfo.Builder builder,
+ NestedSetBuilder<Artifact> ideResolveArtifacts,
+ JavaRuleOutputJarsProvider outputJarsProvider) {
LibraryArtifact.Builder jarsBuilder = LibraryArtifact.newBuilder();
Artifact classJar = outputJarsProvider.getClassJar();
if (classJar != null) {
jarsBuilder.setJar(makeArtifactLocation(classJar));
+ ideResolveArtifacts.add(classJar);
}
Artifact iJar = outputJarsProvider.getIJar();
if (iJar != null) {
jarsBuilder.setInterfaceJar(makeArtifactLocation(iJar));
+ ideResolveArtifacts.add(iJar);
}
Artifact srcJar = outputJarsProvider.getSrcJar();
if (srcJar != null) {
jarsBuilder.setSourceJar(makeArtifactLocation(srcJar));
+ ideResolveArtifacts.add(srcJar);
}
// We don't want to add anything that doesn't have a class jar
@@ -420,7 +446,9 @@ public class AndroidStudioInfoAspect implements ConfiguredAspectFactory {
}
}
- private static void collectGenJars(JavaRuleIdeInfo.Builder builder,
+ private static void collectGenJars(
+ JavaRuleIdeInfo.Builder builder,
+ NestedSetBuilder<Artifact> ideResolveArtifacts,
JavaGenJarsProvider genJarsProvider) {
LibraryArtifact.Builder genjarsBuilder = LibraryArtifact.newBuilder();
@@ -428,10 +456,12 @@ public class AndroidStudioInfoAspect implements ConfiguredAspectFactory {
Artifact genClassJar = genJarsProvider.getGenClassJar();
if (genClassJar != null) {
genjarsBuilder.setJar(makeArtifactLocation(genClassJar));
+ ideResolveArtifacts.add(genClassJar);
}
Artifact gensrcJar = genJarsProvider.getGenSourceJar();
if (gensrcJar != null) {
genjarsBuilder.setSourceJar(makeArtifactLocation(gensrcJar));
+ ideResolveArtifacts.add(gensrcJar);
}
if (genjarsBuilder.hasJar()) {
builder.addGeneratedJars(genjarsBuilder.build());
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 408d377922..6e0c2e33be 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
@@ -28,7 +28,8 @@ import com.google.devtools.build.lib.rules.android.AndroidIdeInfoProvider.Source
*/
@Immutable
public final class AndroidStudioInfoFilesProvider implements TransitiveInfoProvider {
- private final NestedSet<Artifact> ideBuildFiles;
+ private final NestedSet<Artifact> ideInfoFiles;
+ private final NestedSet<Artifact> ideResolveFiles;
private final NestedSet<Label> transitiveDependencies;
private final NestedSet<Label> exportedDeps;
private final NestedSet<AndroidIdeInfoProvider.SourceDirectory> transitiveResources;
@@ -37,22 +38,28 @@ public final class AndroidStudioInfoFilesProvider implements TransitiveInfoProvi
* Builder class for {@link AndroidStudioInfoFilesProvider}
*/
public static class Builder {
- private final NestedSetBuilder<Artifact> ideBuildFilesBuilder;
+ private final NestedSetBuilder<Artifact> ideInfoFilesBuilder;
+ private final NestedSetBuilder<Artifact> ideResolveFilesBuilder;
private final NestedSetBuilder<Label> transitiveDependenciesBuilder;
private NestedSetBuilder<Label> exportedDepsBuilder;
private NestedSetBuilder<AndroidIdeInfoProvider.SourceDirectory> transitiveResourcesBuilder;
private NestedSet<AndroidIdeInfoProvider.SourceDirectory> transitiveResources;
public Builder() {
- ideBuildFilesBuilder = NestedSetBuilder.stableOrder();
+ ideInfoFilesBuilder = NestedSetBuilder.stableOrder();
+ ideResolveFilesBuilder = NestedSetBuilder.stableOrder();
transitiveDependenciesBuilder = NestedSetBuilder.stableOrder();
exportedDepsBuilder = NestedSetBuilder.stableOrder();
transitiveResourcesBuilder = NestedSetBuilder.stableOrder();
transitiveResources = null;
}
- public NestedSetBuilder<Artifact> ideBuildFilesBuilder() {
- return ideBuildFilesBuilder;
+ public NestedSetBuilder<Artifact> ideInfoFilesBuilder() {
+ return ideInfoFilesBuilder;
+ }
+
+ public NestedSetBuilder<Artifact> ideResolveFilesBuilder() {
+ return ideResolveFilesBuilder;
}
public NestedSetBuilder<Label> transitiveDependenciesBuilder() {
@@ -82,7 +89,8 @@ public final class AndroidStudioInfoFilesProvider implements TransitiveInfoProvi
public AndroidStudioInfoFilesProvider build() {
return new AndroidStudioInfoFilesProvider(
- ideBuildFilesBuilder.build(),
+ ideInfoFilesBuilder.build(),
+ ideResolveFilesBuilder.build(),
transitiveDependenciesBuilder.build(),
exportedDepsBuilder.build(),
getTransitiveResources()
@@ -91,18 +99,24 @@ public final class AndroidStudioInfoFilesProvider implements TransitiveInfoProvi
}
private AndroidStudioInfoFilesProvider(
- NestedSet<Artifact> ideBuildFiles,
+ NestedSet<Artifact> ideInfoFiles,
+ NestedSet<Artifact> ideResolveFiles,
NestedSet<Label> transitiveDependencies,
NestedSet<Label> exportedDeps,
NestedSet<SourceDirectory> transitiveResources) {
- this.ideBuildFiles = ideBuildFiles;
+ this.ideInfoFiles = ideInfoFiles;
+ this.ideResolveFiles = ideResolveFiles;
this.transitiveDependencies = transitiveDependencies;
this.exportedDeps = exportedDeps;
this.transitiveResources = transitiveResources;
}
- public NestedSet<Artifact> getIdeBuildFiles() {
- return ideBuildFiles;
+ public NestedSet<Artifact> getIdeInfoFiles() {
+ return ideInfoFiles;
+ }
+
+ public NestedSet<Artifact> getIdeResolveFiles() {
+ return ideResolveFiles;
}
public NestedSet<Label> getTransitiveDependencies() {