aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoSemantics.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/ideinfo/BazelAndroidStudioInfoSemantics.java9
-rw-r--r--src/main/protobuf/android_studio_ide_info.proto17
-rw-r--r--src/test/java/com/google/devtools/build/lib/ideinfo/intellij_info.bzl26
5 files changed, 69 insertions, 10 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 5562b2e24f..27a97bce36 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
@@ -383,6 +383,9 @@ public class AndroidStudioInfoAspect extends NativeAspectClass implements Config
outputBuilder.setTestInfo(builder);
}
+ androidStudioInfoSemantics.augmentRuleInfo(
+ outputBuilder, base, ruleContext, ideResolveArtifacts);
+
AndroidStudioInfoFilesProvider provider = providerBuilder.build();
outputBuilder.addAllDependencies(transform(dependenciesResult.deps, LABEL_TO_STRING));
@@ -542,7 +545,7 @@ public class AndroidStudioInfoAspect extends NativeAspectClass implements Config
/*makeExecutable =*/ false);
}
- protected static ArtifactLocation makeArtifactLocation(Artifact artifact) {
+ public static ArtifactLocation makeArtifactLocation(Artifact artifact) {
return makeArtifactLocation(artifact.getRoot(), artifact.getRootRelativePath());
}
@@ -570,7 +573,7 @@ public class AndroidStudioInfoAspect extends NativeAspectClass implements Config
.build();
}
- private static JavaRuleIdeInfo makeJavaRuleIdeInfo(
+ private JavaRuleIdeInfo makeJavaRuleIdeInfo(
ConfiguredTarget base,
RuleContext ruleContext,
JavaRuleOutputJarsProvider outputJarsProvider,
@@ -640,8 +643,8 @@ public class AndroidStudioInfoAspect extends NativeAspectClass implements Config
builder.addTransitiveSystemIncludeDirectory(pathFragment.getSafePathString());
}
- androidStudioInfoSemantics
- .updateCppRuleInfo(builder, base, ruleContext, cppCompilationContext, ideResolveArtifacts);
+ androidStudioInfoSemantics.augmentCppRuleInfo(
+ builder, base, ruleContext, cppCompilationContext, ideResolveArtifacts);
return builder.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoSemantics.java b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoSemantics.java
index 01234f2abb..9c06f3334e 100644
--- a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoSemantics.java
@@ -13,27 +13,35 @@
// limitations under the License.
package com.google.devtools.build.lib.ideinfo;
-import com.google.common.collect.ImmutableList.Builder;
+import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.ideinfo.AndroidStudioInfoAspect.PrerequisiteAttr;
import com.google.devtools.build.lib.ideinfo.androidstudio.AndroidStudioIdeInfo.CRuleIdeInfo;
+import com.google.devtools.build.lib.ideinfo.androidstudio.AndroidStudioIdeInfo.RuleIdeInfo;
import com.google.devtools.build.lib.rules.cpp.CppCompilationContext;
/**
* Methods to handle differences between blaze and bazel in the {@link AndroidStudioInfoAspect}.
*/
public interface AndroidStudioInfoSemantics {
- void updateCppRuleInfo(
+
+ void augmentPrerequisiteAttrs(ImmutableList.Builder<PrerequisiteAttr> builder);
+
+ void augmentRuleInfo(
+ RuleIdeInfo.Builder builder,
+ ConfiguredTarget base,
+ RuleContext ruleContext,
+ NestedSetBuilder<Artifact> ideResolveArtifacts);
+
+ void augmentCppRuleInfo(
CRuleIdeInfo.Builder builder,
ConfiguredTarget base,
RuleContext ruleContext,
CppCompilationContext cppCompilationContext,
NestedSetBuilder<Artifact> ideResolveArtifacts);
- void augmentPrerequisiteAttrs(Builder<PrerequisiteAttr> builder);
-
boolean checkForAdditionalCppRules(String ruleClass);
}
diff --git a/src/main/java/com/google/devtools/build/lib/ideinfo/BazelAndroidStudioInfoSemantics.java b/src/main/java/com/google/devtools/build/lib/ideinfo/BazelAndroidStudioInfoSemantics.java
index 1aa3dc9590..96933a7dd9 100644
--- a/src/main/java/com/google/devtools/build/lib/ideinfo/BazelAndroidStudioInfoSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/ideinfo/BazelAndroidStudioInfoSemantics.java
@@ -20,6 +20,7 @@ import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.ideinfo.AndroidStudioInfoAspect.PrerequisiteAttr;
import com.google.devtools.build.lib.ideinfo.androidstudio.AndroidStudioIdeInfo.CRuleIdeInfo.Builder;
+import com.google.devtools.build.lib.ideinfo.androidstudio.AndroidStudioIdeInfo.RuleIdeInfo;
import com.google.devtools.build.lib.rules.cpp.CppCompilationContext;
/**
@@ -28,7 +29,7 @@ import com.google.devtools.build.lib.rules.cpp.CppCompilationContext;
public class BazelAndroidStudioInfoSemantics implements AndroidStudioInfoSemantics {
@Override
- public void updateCppRuleInfo(
+ public void augmentCppRuleInfo(
Builder builder,
ConfiguredTarget base,
RuleContext ruleContext,
@@ -41,6 +42,12 @@ public class BazelAndroidStudioInfoSemantics implements AndroidStudioInfoSemanti
}
@Override
+ public void augmentRuleInfo(RuleIdeInfo.Builder builder, ConfiguredTarget base,
+ RuleContext ruleContext,
+ NestedSetBuilder<Artifact> ideResolveArtifacts) {
+ }
+
+ @Override
public boolean checkForAdditionalCppRules(String ruleClass) {
return false;
}
diff --git a/src/main/protobuf/android_studio_ide_info.proto b/src/main/protobuf/android_studio_ide_info.proto
index 6d873c79f6..04b073e67c 100644
--- a/src/main/protobuf/android_studio_ide_info.proto
+++ b/src/main/protobuf/android_studio_ide_info.proto
@@ -83,6 +83,21 @@ message CToolchainIdeInfo {
repeated string unfiltered_compiler_option = 9;
}
+message ProtoLibraryLegacyJavaIdeInfo {
+ enum ApiFlavor {
+ NONE = 0;
+ IMMUTABLE = 1;
+ MUTABLE = 2;
+ BOTH = 3;
+ }
+
+ int32 api_version = 1;
+ ApiFlavor api_flavor = 2;
+ repeated LibraryArtifact jars1 = 3;
+ repeated LibraryArtifact jars_mutable = 4;
+ repeated LibraryArtifact jars_immutable = 5;
+}
+
message TestInfo {
string size = 1;
}
@@ -130,4 +145,6 @@ message RuleIdeInfo {
string kind_string = 14;
TestInfo test_info = 15;
+
+ ProtoLibraryLegacyJavaIdeInfo proto_library_legacy_java_ide_info = 16;
}
diff --git a/src/test/java/com/google/devtools/build/lib/ideinfo/intellij_info.bzl b/src/test/java/com/google/devtools/build/lib/ideinfo/intellij_info.bzl
index 9648cba3e9..6e7ef44144 100644
--- a/src/test/java/com/google/devtools/build/lib/ideinfo/intellij_info.bzl
+++ b/src/test/java/com/google/devtools/build/lib/ideinfo/intellij_info.bzl
@@ -37,6 +37,14 @@ _kind_to_kind_id = {
"java_wrap_cc": 17,
}
+# A map to convert JavaApiFlavor to ProtoLibraryLegacyJavaIdeInfo.ApiFlavor
+_api_flavor_to_id = {
+ "FLAVOR_NONE": 0,
+ "FLAVOR_IMMUTABLE": 1,
+ "FLAVOR_MUTABLE": 2,
+ "FLAVOR_BOTH": 3,
+}
+
_unrecognized_rule = -1;
def get_kind_legacy(target, ctx):
@@ -242,7 +250,7 @@ def java_rule_ide_info(target, ctx):
Returns a pair of (JavaRuleIdeInfo proto, a set of ide-resolve-files).
(or (None, empty set) if the rule is not Java rule).
"""
- if not hasattr(target, "java"):
+ if not hasattr(target, "java") or ctx.rule.kind == "proto_library":
return (None, set())
sources = getSourcesFromRule(ctx)
@@ -303,6 +311,19 @@ def is_test_rule(ctx):
kind_string = ctx.rule.kind
return kind_string.endswith("_test")
+def proto_library_legacy_java_ide_info(target, ctx):
+ """ Build ProtoLibraryLegacyJavaIdeInfo."""
+ if not hasattr(target, 'proto_legacy_java'):
+ return None
+ proto_info = target.proto_legacy_java.legacy_info
+ return struct_omit_none(
+ api_version = proto_info.api_version,
+ api_flavor = _api_flavor_to_id[proto_info.api_flavor],
+ jars1 = [library_artifact(output) for output in proto_info.jars1],
+ jars_mutable = [library_artifact(output) for output in proto_info.jars_mutable],
+ jars_immutable = [library_artifact(output) for output in proto_info.jars_immutable],
+ )
+
def collect_labels(rule_attrs, attrs):
""" Collect labels from attribute values.
@@ -376,6 +397,8 @@ def _aspect_impl(target, ctx):
(android_rule_ide_info, android_ide_resolve_files) = android_rule_ide_info(target, ctx)
ide_resolve_files = ide_resolve_files | android_ide_resolve_files
+ proto_library_legacy_java_ide_info = proto_library_legacy_java_ide_info(target, ctx)
+
# Collect test info
test_info = test_info(target, ctx)
@@ -402,6 +425,7 @@ def _aspect_impl(target, ctx):
android_rule_ide_info = android_rule_ide_info,
tags = ctx.rule.attr.tags,
test_info = test_info,
+ proto_library_legacy_java_ide_info = proto_library_legacy_java_ide_info,
)
# Output the ide information file.