aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/platform
diff options
context:
space:
mode:
authorGravatar John Cater <jcater@google.com>2017-03-10 19:58:18 +0000
committerGravatar Vladimir Moskva <vladmos@google.com>2017-03-12 01:43:57 +0000
commitddaa4b7188f6d522096bccfc1e9c4360dd1b59d7 (patch)
tree772a7efd8a20fbda48a5515fb5c74516814dee99 /src/main/java/com/google/devtools/build/lib/rules/platform
parent413415c6abe48153593deaa05487f40b9ce3df07 (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')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/platform/Platform.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/platform/PlatformProvider.java19
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/platform/PlatformRule.java2
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")