diff options
author | dslomov <dslomov@google.com> | 2017-07-12 14:59:07 +0200 |
---|---|---|
committer | László Csomor <laszlocsomor@google.com> | 2017-07-12 16:03:11 +0200 |
commit | 4e9fa1947c838882befd94f95233275e68be82f1 (patch) | |
tree | 93cf377d0e0f8dcd18e77bf74dd215c9cd445adf /src/main/java/com/google/devtools/build/lib/rules/objc | |
parent | 425f2496d65d1e190f633236575009e49e1252b3 (diff) |
Make native declared providers not implement TransitiveInfoCollection.
(Almost) all native declared providers are accessed as such and not as
native non-declared providers (inheritors of TransitiveInfoCollaction).
There are still three providers that use
TransitiveInfoCollection.WithLegacySkylarkName mechanism, I'll address
them in the follow-up CL.
RELNOTES: None.
PiperOrigin-RevId: 161655315
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc')
13 files changed, 17 insertions, 33 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java index 6bbfc3bbac..d296905dfc 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java @@ -239,9 +239,9 @@ public class AppleBinary implements RuleConfiguredTargetFactory { extraLinkArgs.add("-Xlinker", "-rpath", "-Xlinker", "@loader_path/Frameworks"); if (didProvideBundleLoader) { AppleExecutableBinaryProvider executableProvider = - (AppleExecutableBinaryProvider) ruleContext.getPrerequisite( + ruleContext.getPrerequisite( BUNDLE_LOADER_ATTR_NAME, Mode.TARGET, - AppleExecutableBinaryProvider.SKYLARK_CONSTRUCTOR.getKey()); + AppleExecutableBinaryProvider.SKYLARK_CONSTRUCTOR); extraLinkArgs.add( "-bundle_loader", executableProvider.getAppleExecutableBinary().getExecPathString()); } @@ -290,9 +290,9 @@ public class AppleBinary implements RuleConfiguredTargetFactory { private static Iterable<Artifact> getExtraLinkInputs(RuleContext ruleContext) { AppleExecutableBinaryProvider executableProvider = - (AppleExecutableBinaryProvider) ruleContext.getPrerequisite( + ruleContext.getPrerequisite( BUNDLE_LOADER_ATTR_NAME, Mode.TARGET, - AppleExecutableBinaryProvider.SKYLARK_CONSTRUCTOR.getKey()); + AppleExecutableBinaryProvider.SKYLARK_CONSTRUCTOR); if (executableProvider != null) { return ImmutableSet.<Artifact>of(executableProvider.getAppleExecutableBinary()); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsProvider.java index 10ff0d389d..650e1eeb76 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsProvider.java @@ -16,7 +16,6 @@ package com.google.devtools.build.lib.rules.objc; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Maps; import com.google.devtools.build.lib.actions.Artifact; -import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.packages.NativeClassObjectConstructor; import com.google.devtools.build.lib.packages.SkylarkClassObject; @@ -38,8 +37,7 @@ import java.util.Map.Entry; * <p>Example: { "arm64": { "bitcode_symbols": Artifact, "dsym_binary": Artifact } } */ @Immutable -public final class AppleDebugOutputsProvider extends SkylarkClassObject - implements TransitiveInfoProvider { +public final class AppleDebugOutputsProvider extends SkylarkClassObject { /** Expected types of debug outputs. */ enum OutputType { diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDylibBinaryProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDylibBinaryProvider.java index 7afae2ef62..97adf8208e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDylibBinaryProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDylibBinaryProvider.java @@ -16,7 +16,6 @@ package com.google.devtools.build.lib.rules.objc; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.actions.Artifact; -import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.packages.NativeClassObjectConstructor; import com.google.devtools.build.lib.packages.SkylarkClassObject; @@ -30,8 +29,7 @@ import com.google.devtools.build.lib.packages.SkylarkClassObject; * avoid relinking symbols included in the dylib</li> * </ul> */ -public final class AppleDylibBinaryProvider extends SkylarkClassObject - implements TransitiveInfoProvider { +public final class AppleDylibBinaryProvider extends SkylarkClassObject { /** Skylark name for the AppleDylibBinaryProvider. */ public static final String SKYLARK_NAME = "AppleDylibBinary"; diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDynamicFrameworkProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDynamicFrameworkProvider.java index 2ab05d6dac..e17e7f2344 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDynamicFrameworkProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDynamicFrameworkProvider.java @@ -16,7 +16,6 @@ package com.google.devtools.build.lib.rules.objc; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.actions.Artifact; -import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.packages.NativeClassObjectConstructor; import com.google.devtools.build.lib.packages.SkylarkClassObject; @@ -36,8 +35,7 @@ import javax.annotation.Nullable; * executable may avoid relinking symbols included in the loadable binary</li> * </ul> */ -public final class AppleDynamicFrameworkProvider extends SkylarkClassObject - implements TransitiveInfoProvider { +public final class AppleDynamicFrameworkProvider extends SkylarkClassObject { /** Skylark name for the AppleDynamicFrameworkProvider. */ public static final String SKYLARK_NAME = "AppleDynamicFramework"; diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleExecutableBinaryProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleExecutableBinaryProvider.java index 347b1111d3..7b072bd136 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleExecutableBinaryProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleExecutableBinaryProvider.java @@ -16,7 +16,6 @@ package com.google.devtools.build.lib.rules.objc; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.actions.Artifact; -import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.packages.NativeClassObjectConstructor; import com.google.devtools.build.lib.packages.SkylarkClassObject; @@ -30,8 +29,7 @@ import com.google.devtools.build.lib.packages.SkylarkClassObject; * executable may avoid relinking symbols included in the loadable binary</li> * </ul> */ -public final class AppleExecutableBinaryProvider extends SkylarkClassObject - implements TransitiveInfoProvider { +public final class AppleExecutableBinaryProvider extends SkylarkClassObject { /** Skylark name for the AppleExecutableBinaryProvider. */ public static final String SKYLARK_NAME = "AppleExecutableBinary"; diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleLoadableBundleBinaryProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleLoadableBundleBinaryProvider.java index cd014bcf43..c276dc7e63 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleLoadableBundleBinaryProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleLoadableBundleBinaryProvider.java @@ -16,7 +16,6 @@ package com.google.devtools.build.lib.rules.objc; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.actions.Artifact; -import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.packages.NativeClassObjectConstructor; import com.google.devtools.build.lib.packages.SkylarkClassObject; @@ -27,8 +26,7 @@ import com.google.devtools.build.lib.packages.SkylarkClassObject; * <li>'binary': The binary artifact output by apple_binary</li> * </ul> */ -public final class AppleLoadableBundleBinaryProvider extends SkylarkClassObject - implements TransitiveInfoProvider { +public final class AppleLoadableBundleBinaryProvider extends SkylarkClassObject { /** Skylark name for the AppleLoadableBundleBinary. */ public static final String SKYLARK_NAME = "AppleLoadableBundleBinary"; diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java index 2e0fa615bf..49575aa0de 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java @@ -84,7 +84,7 @@ public class AppleStaticLibrary implements RuleConfiguredTargetFactory { Mode.SPLIT, ObjcProvider.class); ImmutableListMultimap<BuildConfiguration, CcLinkParamsProvider> configToCcAvoidDepsMap = ruleContext.getPrerequisitesByConfiguration(AppleStaticLibraryRule.AVOID_DEPS_ATTR_NAME, - Mode.SPLIT, CcLinkParamsProvider.class); + Mode.SPLIT, CcLinkParamsProvider.CC_LINK_PARAMS); Iterable<ObjcProtoProvider> avoidProtoProviders = ruleContext.getPrerequisites(AppleStaticLibraryRule.AVOID_DEPS_ATTR_NAME, Mode.TARGET, ObjcProtoProvider.class); diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryProvider.java index 6cb613f973..f18a9b476e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryProvider.java @@ -16,7 +16,6 @@ package com.google.devtools.build.lib.rules.objc; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.actions.Artifact; -import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.packages.NativeClassObjectConstructor; import com.google.devtools.build.lib.packages.SkylarkClassObject; @@ -31,8 +30,7 @@ import com.google.devtools.build.lib.packages.SkylarkClassObject; * symbols included in this archive multiple times).</li> * </ul> */ -public final class AppleStaticLibraryProvider extends SkylarkClassObject - implements TransitiveInfoProvider { +public final class AppleStaticLibraryProvider extends SkylarkClassObject { /** Skylark name for the AppleStaticLibraryProvider. */ public static final String SKYLARK_NAME = "AppleStaticLibrary"; diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/IosDevice.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IosDevice.java index 3228825ce1..2a0a2142da 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/IosDevice.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IosDevice.java @@ -43,11 +43,10 @@ public final class IosDevice implements RuleConfiguredTargetFactory { String iosVersionAttribute = context.attributes().get(IosDeviceRule.IOS_VERSION_ATTR_NAME, STRING); XcodeVersionProperties xcodeVersionProperties = - (XcodeVersionProperties) context.getPrerequisite( IosDeviceRule.XCODE_ATTR_NAME, Mode.TARGET, - XcodeVersionProperties.SKYLARK_CONSTRUCTOR.getKey()); + XcodeVersionProperties.SKYLARK_CONSTRUCTOR); DottedVersion xcodeVersion = null; if (xcodeVersionProperties != null && xcodeVersionProperties.getXcodeVersion().isPresent()) { diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/IosDeviceProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IosDeviceProvider.java index d22fdca486..1128ae8acb 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/IosDeviceProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IosDeviceProvider.java @@ -16,7 +16,6 @@ package com.google.devtools.build.lib.rules.objc; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.analysis.actions.TemplateExpansionAction.Substitution; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.packages.NativeClassObjectConstructor; @@ -28,7 +27,7 @@ import javax.annotation.Nullable; /** Provider that describes a simulator device. */ @Immutable -public final class IosDeviceProvider extends SkylarkClassObject implements TransitiveInfoProvider { +public final class IosDeviceProvider extends SkylarkClassObject { /** A builder of {@link IosDeviceProvider}s. */ public static final class Builder { private String type; diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java index bb284155bd..443144b571 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java @@ -260,7 +260,7 @@ public final class ObjcCommon { addAnyProviders(propagatedObjcDeps, dep, ObjcProvider.class); addAnyProviders(cppDeps, dep, CppCompilationContext.class); if (isCcLibrary(dep)) { - cppDepLinkParams.add(dep.getProvider(CcLinkParamsProvider.class)); + cppDepLinkParams.add(dep.get(CcLinkParamsProvider.CC_LINK_PARAMS)); addDefines(dep.getProvider(CppCompilationContext.class).getDefines()); } } 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 e0b7341dbe..b1db0b322b 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 @@ -95,8 +95,7 @@ public class ObjcLibrary implements RuleConfiguredTargetFactory { .addProvider( InstrumentedFilesProvider.class, compilationSupport.getInstrumentedFilesProvider(common)) - .addProvider( - CcLinkParamsProvider.class, + .addNativeDeclaredProvider( new CcLinkParamsProvider(new ObjcLibraryCcLinkParamsStore(common))) .addOutputGroups(outputGroupCollector) .build(); diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/TestSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/TestSupport.java index b11c77eadb..47f5a3031c 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/TestSupport.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/TestSupport.java @@ -257,9 +257,8 @@ public class TestSupport { */ public Iterable<SkylarkClassObject> getExtraProviders() { IosDeviceProvider deviceProvider = - (IosDeviceProvider) - ruleContext.getPrerequisite( - IosTest.TARGET_DEVICE, Mode.TARGET, IosDeviceProvider.SKYLARK_CONSTRUCTOR.getKey()); + ruleContext.getPrerequisite( + IosTest.TARGET_DEVICE, Mode.TARGET, IosDeviceProvider.SKYLARK_CONSTRUCTOR); DottedVersion xcodeVersion = deviceProvider.getXcodeVersion(); AppleConfiguration configuration = ruleContext.getFragment(AppleConfiguration.class); |