From 083fe29f9b3b74a369cfe594247f89abe751ce97 Mon Sep 17 00:00:00 2001 From: Michael Thvedt Date: Thu, 17 Sep 2015 16:01:15 +0000 Subject: Propogate J2ObjC files from runtime_deps in Java rules. -- MOS_MIGRATED_REVID=103294328 --- .../build/lib/rules/objc/J2ObjcAspect.java | 7 +----- .../build/lib/rules/objc/J2ObjcLibrary.java | 2 +- .../build/lib/rules/objc/J2ObjcSrcsProvider.java | 25 ++++++++++++++++------ 3 files changed, 21 insertions(+), 13 deletions(-) (limited to 'src/main/java/com/google/devtools') diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java index 1570d7f82e..0db2fc69b9 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java @@ -145,12 +145,7 @@ public class J2ObjcAspect implements ConfiguredAspectFactory { depsHeaderMappings, depsClassMappings, depsDependencyMappings); } - for (J2ObjcSrcsProvider provider : - ruleContext.getPrerequisites("exports", Mode.TARGET, J2ObjcSrcsProvider.class)) { - srcsBuilder.addTransitive(provider); - } - - srcsBuilder.addTransitiveFromDeps(ruleContext); + srcsBuilder.addTransitiveJ2ObjcSrcs(ruleContext); return builder .addProvider(J2ObjcSrcsProvider.class, srcsBuilder.build()) diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibrary.java index 2e2b23eca0..b4649b5b56 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibrary.java @@ -53,7 +53,7 @@ public class J2ObjcLibrary implements RuleConfiguredTargetFactory { } J2ObjcSrcsProvider j2ObjcSrcsProvider = new J2ObjcSrcsProvider.Builder() - .addTransitiveFromDeps(ruleContext) + .addTransitiveJ2ObjcSrcs(ruleContext) .addEntryClasses(ruleContext.attributes().get("entry_classes", Type.STRING_LIST)) .build(); diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcSrcsProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcSrcsProvider.java index 9c745276e5..886721fbbc 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcSrcsProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcSrcsProvider.java @@ -62,15 +62,28 @@ public final class J2ObjcSrcsProvider implements TransitiveInfoProvider { /** * Transitively adds all the J2ObjcSrcsProviders and all their properties - * that can be reached through the "deps" attribute of the given RuleContext. + * that can be reached through the "deps", "exports" and "runtime_deps" attributes. * - * @param ruleContext the rule context in which to look for deps + * @param ruleContext the rule context * @return this builder */ - public Builder addTransitiveFromDeps(RuleContext ruleContext) { - if (ruleContext.attributes().has("deps", Type.LABEL_LIST)) { + public Builder addTransitiveJ2ObjcSrcs(RuleContext ruleContext) { + return addTransitiveJ2ObjcSrcs(ruleContext, "deps") + .addTransitiveJ2ObjcSrcs(ruleContext, "exports") + .addTransitiveJ2ObjcSrcs(ruleContext, "runtime_deps"); + } + + /** + * Transitively adds the J2ObjCSrcsProviders of a given attribute to this Builder. + * + * @param ruleContext the rule context + * @param attribute the attribute to which to add sources + * @return this builder + */ + public Builder addTransitiveJ2ObjcSrcs(RuleContext ruleContext, String attribute) { + if (ruleContext.attributes().has(attribute, Type.LABEL_LIST)) { for (J2ObjcSrcsProvider provider : - ruleContext.getPrerequisites("deps", Mode.TARGET, J2ObjcSrcsProvider.class)) { + ruleContext.getPrerequisites(attribute, Mode.TARGET, J2ObjcSrcsProvider.class)) { addTransitive(provider); } } @@ -118,7 +131,7 @@ public final class J2ObjcSrcsProvider implements TransitiveInfoProvider { * @param ruleContext the rule context in which to look for deps */ public static J2ObjcSrcsProvider buildFrom(RuleContext ruleContext) { - return new Builder().addTransitiveFromDeps(ruleContext).build(); + return new Builder().addTransitiveJ2ObjcSrcs(ruleContext).build(); } /** -- cgit v1.2.3