diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
26 files changed, 54 insertions, 65 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java index a27427a9e0..8987fedbd8 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java @@ -60,7 +60,6 @@ import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition; import com.google.devtools.build.lib.packages.Attribute.SplitTransition; import com.google.devtools.build.lib.packages.AttributeMap; import com.google.devtools.build.lib.packages.BuildType; -import com.google.devtools.build.lib.packages.ClassObjectConstructor; import com.google.devtools.build.lib.packages.ConfigurationFragmentPolicy; import com.google.devtools.build.lib.packages.FileTarget; import com.google.devtools.build.lib.packages.FilesetEntry; @@ -820,6 +819,28 @@ public final class RuleContext extends TargetContext } /** + * For a given attribute, returns all declared provider provided by targets + * of that attribute. Each declared provider is keyed by the + * {@link BuildConfiguration} under which the provider was created. + */ + public <C extends SkylarkClassObject> ImmutableListMultimap<BuildConfiguration, C> + getPrerequisitesByConfiguration(String attributeName, Mode mode, + final NativeClassObjectConstructor<C> provider) { + List<? extends TransitiveInfoCollection> transitiveInfoCollections = + getPrerequisites(attributeName, mode); + + ImmutableListMultimap.Builder<BuildConfiguration, C> result = + ImmutableListMultimap.builder(); + for (TransitiveInfoCollection prerequisite : transitiveInfoCollections) { + C prerequisiteProvider = prerequisite.get(provider); + if (prerequisiteProvider != null) { + result.put(prerequisite.getConfiguration(), prerequisiteProvider); + } + } + return result.build(); + } + + /** * For a given attribute, returns all {@link TransitiveInfoCollection}s provided by targets * of that attribute. Each {@link TransitiveInfoCollection} is keyed by the * {@link BuildConfiguration} under which the collection was created. @@ -862,8 +883,8 @@ public final class RuleContext extends TargetContext * TransitiveInfoCollection under the specified attribute. */ @Nullable - public SkylarkClassObject getPrerequisite( - String attributeName, Mode mode, final ClassObjectConstructor.Key skylarkKey) { + public <T extends SkylarkClassObject> T getPrerequisite( + String attributeName, Mode mode, final NativeClassObjectConstructor<T> skylarkKey) { TransitiveInfoCollection prerequisite = getPrerequisite(attributeName, mode); return prerequisite == null ? null : prerequisite.get(skylarkKey); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationTest.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationTest.java index 92a9cdd538..26bf861d9a 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationTest.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationTest.java @@ -317,9 +317,8 @@ public class AndroidInstrumentationTest implements RuleConfiguredTargetFactory { */ private static ExecutionInfoProvider getExecutionInfoProvider(RuleContext ruleContext) { ExecutionInfoProvider executionInfoProvider = - (ExecutionInfoProvider) ruleContext.getPrerequisite( - "target_device", Mode.HOST, ExecutionInfoProvider.SKYLARK_CONSTRUCTOR.getKey()); + "target_device", Mode.HOST, ExecutionInfoProvider.SKYLARK_CONSTRUCTOR); ImmutableMap<String, String> executionRequirements = (executionInfoProvider != null) ? executionInfoProvider.getExecutionInfo() diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersionProperties.java b/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersionProperties.java index 0e872c5e74..da22fa547e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersionProperties.java +++ b/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersionProperties.java @@ -18,7 +18,6 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Optional; import com.google.common.base.Strings; import com.google.common.collect.ImmutableMap; -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; @@ -27,7 +26,7 @@ import javax.annotation.Nullable; /** A tuple containing information about a version of xcode and its properties. */ @Immutable -public class XcodeVersionProperties extends SkylarkClassObject implements TransitiveInfoProvider { +public class XcodeVersionProperties extends SkylarkClassObject { /** Skylark name for the XcodeVersionProperties provider. */ public static final String SKYLARK_NAME = "XcodeProperties"; diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java index 2618fee2d8..7b7230c27b 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java @@ -1083,7 +1083,7 @@ public final class CcLibraryHelper { new CcSpecificLinkParamsProvider( createCcLinkParamsStore(ccLinkingOutputs, cppCompilationContext, forcePic))); } else { - providers.add( + providers.put( new CcLinkParamsProvider( createCcLinkParamsStore(ccLinkingOutputs, cppCompilationContext, forcePic))); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParams.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParams.java index 4b9fcd7e8e..83d539d1e9 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParams.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParams.java @@ -205,7 +205,7 @@ public final class CcLinkParams { * the method does not do anything. */ public Builder addTransitiveTarget(TransitiveInfoCollection target) { - return addTransitiveProvider(target.getProvider(CcLinkParamsProvider.class)); + return addTransitiveProvider(target.get(CcLinkParamsProvider.CC_LINK_PARAMS)); } /** diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsProvider.java index 1ed8d6f169..cc6d68adf1 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsProvider.java @@ -17,7 +17,6 @@ package com.google.devtools.build.lib.rules.cpp; import com.google.common.base.Function; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; -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; @@ -25,22 +24,14 @@ import com.google.devtools.build.lib.rules.cpp.CcLinkParamsStore.CcLinkParamsSto /** A target that provides C linker parameters. */ @Immutable -public final class CcLinkParamsProvider extends SkylarkClassObject - implements TransitiveInfoProvider { +public final class CcLinkParamsProvider extends SkylarkClassObject { public static final NativeClassObjectConstructor<CcLinkParamsProvider> CC_LINK_PARAMS = new NativeClassObjectConstructor<CcLinkParamsProvider>( CcLinkParamsProvider.class, "link_params") {}; public static final Function<TransitiveInfoCollection, CcLinkParamsStore> TO_LINK_PARAMS = input -> { - - // Try native first... - CcLinkParamsProvider provider = input.getProvider(CcLinkParamsProvider.class); - if (provider != null) { - return provider.getCcLinkParamsStore(); - } - // ... then try Skylark. - provider = input.get(CC_LINK_PARAMS); + CcLinkParamsProvider provider = input.get(CC_LINK_PARAMS); if (provider != null) { return provider.getCcLinkParamsStore(); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcSkylarkApiProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcSkylarkApiProvider.java index cd5f64282b..b540dee5f8 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcSkylarkApiProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcSkylarkApiProvider.java @@ -60,7 +60,7 @@ public final class CcSkylarkApiProvider extends SkylarkApiProvider { + "(possibly empty but never None)") public NestedSet<Artifact> getLibraries() { NestedSetBuilder<Artifact> libs = NestedSetBuilder.linkOrder(); - CcLinkParamsProvider ccLinkParams = getInfo().getProvider(CcLinkParamsProvider.class); + CcLinkParamsProvider ccLinkParams = getInfo().get(CcLinkParamsProvider.CC_LINK_PARAMS); if (ccLinkParams == null) { return libs.build(); } @@ -78,7 +78,7 @@ public final class CcSkylarkApiProvider extends SkylarkApiProvider { + "FULLY STATIC mode (linkopts=[\"-static\"]) or MOSTLY STATIC mode (linkstatic=1) " + "(possibly empty but never None)") public ImmutableList<String> getLinkopts() { - CcLinkParamsProvider ccLinkParams = getInfo().getProvider(CcLinkParamsProvider.class); + CcLinkParamsProvider ccLinkParams = getInfo().get(CcLinkParamsProvider.CC_LINK_PARAMS); if (ccLinkParams == null) { return ImmutableList.of(); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java index 5fd09b5ca9..6d31017676 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java @@ -173,7 +173,7 @@ public class JavaImport implements RuleConfiguredTargetFactory { new JavaRuntimeJarProvider(javaArtifacts.getRuntimeJars())) .add(JavaNeverlinkInfoProvider.class, new JavaNeverlinkInfoProvider(neverLink)) .add(RunfilesProvider.class, RunfilesProvider.simple(runfiles)) - .add(CcLinkParamsProvider.class, new CcLinkParamsProvider(ccLinkParamsStore)) + .addNativeDeclaredProvider(new CcLinkParamsProvider(ccLinkParamsStore)) .add(JavaCompilationArgsProvider.class, compilationArgsProvider) .add( JavaNativeLibraryProvider.class, diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java index 28255ccff2..f31cfcaec0 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java @@ -227,7 +227,6 @@ public class JavaLibrary implements RuleConfiguredTargetFactory { .addProvider(new JavaNeverlinkInfoProvider(neverLink)) .addProvider(transitiveCppDeps) .addProvider(JavaCompilationArgsProvider.class, compilationArgsProvider) - .addProvider(ccLinkParamsProvider) .addNativeDeclaredProvider(ccLinkParamsProvider) .addProvider(new JavaNativeLibraryProvider(transitiveJavaNativeLibraries)) .addProvider(JavaSourceInfoProvider.fromJavaTargetAttributes(attributes, semantics)) 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); diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java b/src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java index ab6df63379..fd659781cf 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java @@ -118,7 +118,7 @@ public abstract class PyBinary implements RuleConfiguredTargetFactory { .setFilesToBuild(common.getFilesToBuild()) .add(RunfilesProvider.class, runfilesProvider) .setRunfilesSupport(runfilesSupport, common.getExecutable()) - .add(CcLinkParamsProvider.class, new CcLinkParamsProvider(ccLinkParamsStore)) + .addNativeDeclaredProvider(new CcLinkParamsProvider(ccLinkParamsStore)) .add(PythonImportsProvider.class, new PythonImportsProvider(imports)); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PyLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/python/PyLibrary.java index 8d20b9657b..5a3d535a30 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/python/PyLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/python/PyLibrary.java @@ -92,7 +92,7 @@ public abstract class PyLibrary implements RuleConfiguredTargetFactory { return builder .setFilesToBuild(filesToBuild) .add(RunfilesProvider.class, RunfilesProvider.simple(runfilesBuilder.build())) - .add(CcLinkParamsProvider.class, new CcLinkParamsProvider(ccLinkParamsStore)) + .addNativeDeclaredProvider(new CcLinkParamsProvider(ccLinkParamsStore)) .add(PythonImportsProvider.class, new PythonImportsProvider(imports)) .build(); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/ExecutionInfoProvider.java b/src/main/java/com/google/devtools/build/lib/rules/test/ExecutionInfoProvider.java index 4f17ec199c..32cabb0e2d 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/test/ExecutionInfoProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/test/ExecutionInfoProvider.java @@ -14,7 +14,6 @@ package com.google.devtools.build.lib.rules.test; import com.google.common.collect.ImmutableMap; -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; @@ -25,8 +24,7 @@ import java.util.Map; * tests). */ @Immutable -public final class ExecutionInfoProvider extends SkylarkClassObject - implements TransitiveInfoProvider { +public final class ExecutionInfoProvider extends SkylarkClassObject { /** Skylark constructor and identifier for ExecutionInfoProvider. */ public static final NativeClassObjectConstructor<ExecutionInfoProvider> SKYLARK_CONSTRUCTOR = diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/TestEnvironmentProvider.java b/src/main/java/com/google/devtools/build/lib/rules/test/TestEnvironmentProvider.java index 240738dde5..fe52a230a0 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/test/TestEnvironmentProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/test/TestEnvironmentProvider.java @@ -16,7 +16,6 @@ package com.google.devtools.build.lib.rules.test; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; -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; @@ -24,8 +23,7 @@ import java.util.Map; /** Provider containing any additional environment variables for use in the test action. */ @Immutable -public final class TestEnvironmentProvider extends SkylarkClassObject - implements TransitiveInfoProvider { +public final class TestEnvironmentProvider extends SkylarkClassObject { /** Skylark constructor and identifier for TestEnvironmentProvider. */ public static final NativeClassObjectConstructor<TestEnvironmentProvider> SKYLARK_CONSTRUCTOR = |