aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/packages/ExternalPackageBuilder.java
diff options
context:
space:
mode:
authorGravatar Mark Schaller <mschaller@google.com>2016-01-13 18:41:24 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-01-14 09:53:17 +0000
commitee624453d9f5dd908d721abb4663246c70bf4509 (patch)
treeba90c489d6fb079438a8015f786fc3c9f1cad0c3 /src/main/java/com/google/devtools/build/lib/packages/ExternalPackageBuilder.java
parent3d9441bb4fc224c6551f5063d2a5d2c84a76e3e8 (diff)
For native rule classes, (de)serialize only explicit attrs
Native rule classes can provide default values for rules after they're deserialized, so there isn't a need to serialize those default values. This doesn't apply yet to rules with Skylark-defined rule classes, due to the non-serializablity of Skylark rule classes. -- MOS_MIGRATED_REVID=112066930
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/packages/ExternalPackageBuilder.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/ExternalPackageBuilder.java10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/ExternalPackageBuilder.java b/src/main/java/com/google/devtools/build/lib/packages/ExternalPackageBuilder.java
index 8570899691..b771763eb2 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/ExternalPackageBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/ExternalPackageBuilder.java
@@ -20,6 +20,7 @@ import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.events.StoredEventHandler;
+import com.google.devtools.build.lib.packages.RuleFactory.BuildLangTypedAttributeValuesMap;
import com.google.devtools.build.lib.syntax.FuncallExpression;
import com.google.devtools.build.lib.util.Preconditions;
@@ -40,8 +41,10 @@ public class ExternalPackageBuilder {
InterruptedException {
StoredEventHandler eventHandler = new StoredEventHandler();
+ BuildLangTypedAttributeValuesMap attributeValues = new BuildLangTypedAttributeValuesMap(kwargs);
Rule tempRule =
- RuleFactory.createRule(pkg, ruleClass, kwargs, eventHandler, ast, ast.getLocation(), null);
+ RuleFactory.createRule(
+ pkg, ruleClass, attributeValues, eventHandler, ast, ast.getLocation(), /*env=*/ null);
pkg.addEvents(eventHandler.getEvents());
overwriteRule(pkg, tempRule);
for (Map.Entry<String, Label> entry :
@@ -64,8 +67,11 @@ public class ExternalPackageBuilder {
attributes.put("actual", actual);
}
StoredEventHandler handler = new StoredEventHandler();
+ BuildLangTypedAttributeValuesMap attributeValues =
+ new BuildLangTypedAttributeValuesMap(attributes);
Rule rule =
- RuleFactory.createRule(pkg, bindRuleClass, attributes, handler, null, location, null);
+ RuleFactory.createRule(
+ pkg, bindRuleClass, attributeValues, handler, /*ast=*/ null, location, /*env=*/ null);
overwriteRule(pkg, rule);
rule.setVisibility(ConstantRuleVisibility.PUBLIC);
}