diff options
author | 2017-03-10 19:58:18 +0000 | |
---|---|---|
committer | 2017-03-12 01:43:57 +0000 | |
commit | ddaa4b7188f6d522096bccfc1e9c4360dd1b59d7 (patch) | |
tree | 772a7efd8a20fbda48a5515fb5c74516814dee99 /src/main/java/com/google/devtools/build/lib/rules/platform | |
parent | 413415c6abe48153593deaa05487f40b9ce3df07 (diff) |
Add the remote_execution_properties attribute to the platform() rule.
Part of #2219.
--
Change-Id: Id82bdd5b3dfab1d2ea781d27dd98020966ce8fac
Reviewed-on: https://cr.bazel.build/9271
PiperOrigin-RevId: 149782572
MOS_MIGRATED_REVID=149782572
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/platform')
3 files changed, 28 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/platform/Platform.java b/src/main/java/com/google/devtools/build/lib/rules/platform/Platform.java index f652383757..f5d7e88832 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/platform/Platform.java +++ b/src/main/java/com/google/devtools/build/lib/rules/platform/Platform.java @@ -26,6 +26,8 @@ import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.RunfilesProvider; import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory; +import com.google.devtools.build.lib.syntax.Type; +import java.util.Map; /** Defines a platform for execution contexts. */ public class Platform implements RuleConfiguredTargetFactory { @@ -45,11 +47,18 @@ public class Platform implements RuleConfiguredTargetFactory { return null; } + PlatformProvider.Builder platformProviderBuilder = PlatformProvider.builder(); + platformProviderBuilder.constraints(constraints); + + Map<String, String> remoteExecutionProperties = + ruleContext.attributes().get(PlatformRule.REMOTE_EXECUTION_PROPS_ATTR, Type.STRING_DICT); + platformProviderBuilder.remoteExecutionProperties(remoteExecutionProperties); + return new RuleConfiguredTargetBuilder(ruleContext) .addProvider(RunfilesProvider.class, RunfilesProvider.EMPTY) .addProvider(FileProvider.class, FileProvider.EMPTY) .addProvider(FilesToRunProvider.class, FilesToRunProvider.EMPTY) - .addProvider(PlatformProvider.class, PlatformProvider.create(constraints)) + .addProvider(PlatformProvider.class, platformProviderBuilder.build()) .build(); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/platform/PlatformProvider.java b/src/main/java/com/google/devtools/build/lib/rules/platform/PlatformProvider.java index 7a06c1f138..1cf5b5017f 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/platform/PlatformProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/platform/PlatformProvider.java @@ -18,6 +18,7 @@ import com.google.auto.value.AutoValue; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; +import java.util.Map; /** Provider for a platform, which is a group of constraints and values. */ @AutoValue @@ -25,8 +26,20 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; public abstract class PlatformProvider implements TransitiveInfoProvider { public abstract ImmutableMap<ConstraintSettingProvider, ConstraintValueProvider> constraints(); - public static PlatformProvider create( - ImmutableMap<ConstraintSettingProvider, ConstraintValueProvider> constraints) { - return new AutoValue_PlatformProvider(constraints); + public abstract ImmutableMap<String, String> remoteExecutionProperties(); + + public static Builder builder() { + return new AutoValue_PlatformProvider.Builder(); + } + + /** A Builder instance to configure a new {@link PlatformProvider}. */ + @AutoValue.Builder + public abstract static class Builder { + public abstract Builder constraints( + Map<ConstraintSettingProvider, ConstraintValueProvider> constraints); + + public abstract Builder remoteExecutionProperties(Map<String, String> properties); + + public abstract PlatformProvider build(); } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/platform/PlatformRule.java b/src/main/java/com/google/devtools/build/lib/rules/platform/PlatformRule.java index 29537a4fb0..fd965ee171 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/platform/PlatformRule.java +++ b/src/main/java/com/google/devtools/build/lib/rules/platform/PlatformRule.java @@ -30,6 +30,7 @@ import com.google.devtools.build.lib.util.FileTypeSet; public class PlatformRule implements RuleDefinition { public static final String RULE_NAME = "platform"; public static final String CONSTRAINT_VALUES_ATTR = "constraint_values"; + public static final String REMOTE_EXECUTION_PROPS_ATTR = "remote_execution_properties"; @Override public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment env) { @@ -47,6 +48,7 @@ public class PlatformRule implements RuleDefinition { .mandatoryNativeProviders( ImmutableList.<Class<? extends TransitiveInfoProvider>>of( ConstraintValueProvider.class))) + .add(attr(REMOTE_EXECUTION_PROPS_ATTR, Type.STRING_DICT)) .removeAttribute("deps") .removeAttribute("data") .exemptFromConstraintChecking("this rule is part of constraint definition") |