From ee624453d9f5dd908d721abb4663246c70bf4509 Mon Sep 17 00:00:00 2001 From: Mark Schaller Date: Wed, 13 Jan 2016 18:41:24 +0000 Subject: 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 --- .../devtools/build/lib/packages/ExternalPackageBuilder.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/packages/ExternalPackageBuilder.java') 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 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); } -- cgit v1.2.3