diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules')
11 files changed, 35 insertions, 9 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java index 4660a63a85..f4351001cc 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java @@ -129,6 +129,23 @@ public class AppleSkylarkCommon { } @SkylarkCallable( + // TODO(b/63899207): This currently does not match ObjcProvider.SKYLARK_NAME as it requires + // a migration of existing skylark rules. + name = "Objc", + doc = "The constructor/key for the <code>Objc</code> provider.<p>" + + "If a target propagates the <code>Objc</code> provider, use this as the" + + "key with which to retrieve it. Example:<br>" + + "<pre class='language-python'>\n" + + "dep = ctx.attr.deps[0]\n" + + "p = dep[apple_common.Objc]\n" + + "</pre>", + structField = true + ) + public ClassObjectConstructor getObjcProviderConstructor() { + return ObjcProvider.SKYLARK_CONSTRUCTOR; + } + + @SkylarkCallable( name = AppleDynamicFrameworkProvider.SKYLARK_NAME, doc = "Returns the provider constructor for AppleDynamicFramework. If a target propagates " diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java b/src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java index ce098ad7f0..304930f441 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java @@ -183,6 +183,7 @@ abstract class BinaryLinkingTargetFactory implements RuleConfiguredTargetFactory RuleConfiguredTargetBuilder targetBuilder = ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild.build()) .addProvider(ObjcProvider.class, objcProvider) + .addNativeDeclaredProvider(objcProvider) .addProvider( InstrumentedFilesProvider.class, compilationSupport.getInstrumentedFilesProvider(common)) 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 c4b5e9a361..e1537d07cd 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 @@ -110,6 +110,7 @@ public class J2ObjcLibrary implements RuleConfiguredTargetFactory { .addProvider(J2ObjcEntryClassProvider.class, j2ObjcEntryClassProvider) .addProvider(J2ObjcMappingFileProvider.class, j2ObjcMappingFileProvider) .addProvider(ObjcProvider.class, objcProvider) + .addNativeDeclaredProvider(objcProvider) .build(); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundle.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundle.java index 0dd4dc4a15..dd7eda81fa 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundle.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundle.java @@ -46,6 +46,7 @@ public class ObjcBundle implements RuleConfiguredTargetFactory { NestedSet<Artifact> filesToBuild = NestedSetBuilder.emptySet(STABLE_ORDER); return ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild) .addProvider(ObjcProvider.class, common.getObjcProvider()) + .addNativeDeclaredProvider(common.getObjcProvider()) .build(); } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundleLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundleLibrary.java index 4d538ce395..b44cd2dfac 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundleLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundleLibrary.java @@ -75,6 +75,7 @@ public class ObjcBundleLibrary implements RuleConfiguredTargetFactory { return ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild.build()) .addProvider(ObjcProvider.class, nestedBundleProvider) + .addNativeDeclaredProvider(nestedBundleProvider) .build(); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcFramework.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcFramework.java index 90df6a21a2..e11a01ef46 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcFramework.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcFramework.java @@ -69,6 +69,7 @@ public class ObjcFramework implements RuleConfiguredTargetFactory { NestedSet<Artifact> filesToBuild = NestedSetBuilder.emptySet(STABLE_ORDER); return ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild) .addProvider(ObjcProvider.class, objcProvider) + .addNativeDeclaredProvider(objcProvider) .addNativeDeclaredProvider(frameworkProvider) .build(); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcImport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcImport.java index 08d2b26cef..37c8cb6f87 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcImport.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcImport.java @@ -65,6 +65,7 @@ public class ObjcImport implements RuleConfiguredTargetFactory { return ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild.build()) .addProvider(ObjcProvider.class, common.getObjcProvider()) + .addNativeDeclaredProvider(common.getObjcProvider()) .build(); } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java index b1db0b322b..814e3717bc 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java @@ -90,6 +90,7 @@ public class ObjcLibrary implements RuleConfiguredTargetFactory { return ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild.build()) .addProvider(ObjcProvider.class, common.getObjcProvider()) + .addNativeDeclaredProvider(common.getObjcProvider()) .addProvider(J2ObjcEntryClassProvider.class, j2ObjcEntryClassProvider) .addProvider(J2ObjcMappingFileProvider.class, j2ObjcMappingFileProvider) .addProvider( diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java index cb056b9356..64bdc18eed 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java @@ -68,6 +68,7 @@ public class ObjcProtoLibrary implements RuleConfiguredTargetFactory { return ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild.build()) .addProvider(ObjcProvider.class, protoSupport.getObjcProvider().get()) + .addNativeDeclaredProvider(protoSupport.getObjcProvider().get()) .build(); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java index b040c629ff..dfe934a344 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java @@ -58,14 +58,12 @@ import java.util.Map; public final class ObjcProvider extends SkylarkClassObject implements TransitiveInfoProvider, TransitiveInfoProvider.WithLegacySkylarkName { - /** - * The skylark struct key name for a rule implementation to use when exporting an ObjcProvider. - */ - public static final String OBJC_SKYLARK_PROVIDER_NAME = "objc"; + /** Skylark name for the ObjcProvider. */ + public static final String SKYLARK_NAME = "objc"; @Override public String getSkylarkName() { - return OBJC_SKYLARK_PROVIDER_NAME; + return SKYLARK_NAME; } /** @@ -506,8 +504,9 @@ public final class ObjcProvider extends SkylarkClassObject // Items which should be passed to strictly direct dependers, but not transitive dependers. private final ImmutableMap<Key<?>, NestedSet<?>> strictDependencyItems; - private static final NativeClassObjectConstructor<ObjcProvider> OBJC_PROVIDER = - new NativeClassObjectConstructor<ObjcProvider>(ObjcProvider.class, "objc_provider") { + /** Skylark constructor and identifier for ObjcProvider. */ + public static final NativeClassObjectConstructor<ObjcProvider> SKYLARK_CONSTRUCTOR = + new NativeClassObjectConstructor<ObjcProvider>(ObjcProvider.class, SKYLARK_NAME) { @Override public String getErrorMessageFormatForInstances() { return "ObjcProvider field %s could not be instantiated"; @@ -519,7 +518,7 @@ public final class ObjcProvider extends SkylarkClassObject ImmutableMap<Key<?>, NestedSet<?>> nonPropagatedItems, ImmutableMap<Key<?>, NestedSet<?>> strictDependencyItems, ImmutableMap<String, Object> skylarkFields) { - super(OBJC_PROVIDER, skylarkFields); + super(SKYLARK_CONSTRUCTOR, skylarkFields); this.items = Preconditions.checkNotNull(items); this.nonPropagatedItems = Preconditions.checkNotNull(nonPropagatedItems); this.strictDependencyItems = Preconditions.checkNotNull(strictDependencyItems); diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingTargetFactory.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingTargetFactory.java index a6a18a3962..68acca2432 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingTargetFactory.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingTargetFactory.java @@ -86,7 +86,9 @@ public abstract class ReleaseBundlingTargetFactory implements RuleConfiguredTarg ObjcProvider exposedObjcProvider = exposedObjcProvider(ruleContext, releaseBundlingSupport); if (exposedObjcProvider != null) { - targetBuilder.addProvider(ObjcProvider.class, exposedObjcProvider); + targetBuilder + .addProvider(ObjcProvider.class, exposedObjcProvider) + .addNativeDeclaredProvider(exposedObjcProvider); } configureTarget(targetBuilder, ruleContext, releaseBundlingSupport); |