diff options
author | 2018-03-26 09:07:11 -0700 | |
---|---|---|
committer | 2018-03-26 09:10:14 -0700 | |
commit | 8688b68d4331449f97b04a868c0d61c62eff71f2 (patch) | |
tree | 2ead7527a6bb736e481034647cd8cd6f6047a4e3 /src/main/java/com/google/devtools/build/lib/analysis | |
parent | 656a0bab1e025ff3c27d595284a4bf1c5a8d8028 (diff) |
Make a bunch more stuff serializable, especially anonymous classes and lambdas. Give a bit more information in JavaSerializableCodec when serialization fails on an anonymous class or lambda.
PiperOrigin-RevId: 190472245
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java | 10 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java | 53 |
2 files changed, 35 insertions, 28 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java b/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java index 5ea8584bbe..ca48a59e4b 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java @@ -41,6 +41,7 @@ import com.google.devtools.build.lib.packages.RuleClass; import com.google.devtools.build.lib.packages.RuleClass.Builder; import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassType; import com.google.devtools.build.lib.packages.TestSize; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.syntax.Type; import com.google.devtools.build.lib.util.FileTypeSet; @@ -48,7 +49,8 @@ import com.google.devtools.build.lib.util.FileTypeSet; * Rule class definitions used by (almost) every rule. */ public class BaseRuleClasses { - private static final Attribute.ComputedDefault testonlyDefault = + @AutoCodec @AutoCodec.VisibleForSerialization + static final Attribute.ComputedDefault testonlyDefault = new Attribute.ComputedDefault() { @Override public Object getDefault(AttributeMap rule) { @@ -56,7 +58,8 @@ public class BaseRuleClasses { } }; - private static final Attribute.ComputedDefault deprecationDefault = + @AutoCodec @AutoCodec.VisibleForSerialization + static final Attribute.ComputedDefault deprecationDefault = new Attribute.ComputedDefault() { @Override public Object getDefault(AttributeMap rule) { @@ -73,7 +76,7 @@ public class BaseRuleClasses { * they only run on the target configuration and should not operate on action_listeners and * extra_actions themselves (to avoid cycles). */ - @VisibleForTesting + @AutoCodec @VisibleForTesting static final LabelListLateBoundDefault<?> ACTION_LISTENER = LabelListLateBoundDefault.fromTargetConfiguration( BuildConfiguration.class, @@ -81,6 +84,7 @@ public class BaseRuleClasses { // TODO(b/65746853): provide a way to do this without passing the entire configuration /** Implementation for the :run_under attribute. */ + @AutoCodec public static final LabelLateBoundDefault<?> RUN_UNDER = LabelLateBoundDefault.fromTargetConfiguration( BuildConfiguration.class, diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java index fb01a4a9c7..c45ec3c66d 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java @@ -152,20 +152,7 @@ public class SkylarkRuleClassFunctions { attr("timeout", STRING) .taggable() .nonconfigurable("used in loading phase rule validation logic") - .value( - new Attribute.ComputedDefault() { - @Override - public Object getDefault(AttributeMap rule) { - TestSize size = TestSize.getTestSize(rule.get("size", Type.STRING)); - if (size != null) { - String timeout = size.getDefaultTimeout().toString(); - if (timeout != null) { - return timeout; - } - } - return "illegal"; - } - })) + .value(timeoutAttribute)) .add( attr("flaky", BOOLEAN) .value(false) @@ -186,14 +173,16 @@ public class SkylarkRuleClassFunctions { .value( ImmutableList.of( labelCache.getUnchecked(toolsRepository + "//tools/test:runtime")))) - .add(attr("$test_setup_script", LABEL) - .cfg(HostTransition.INSTANCE) - .singleArtifact() - .value(labelCache.getUnchecked(toolsRepository + "//tools/test:test_setup"))) - .add(attr("$collect_coverage_script", LABEL) - .cfg(HostTransition.INSTANCE) - .singleArtifact() - .value(labelCache.getUnchecked(toolsRepository + "//tools/test:collect_coverage"))) + .add( + attr("$test_setup_script", LABEL) + .cfg(HostTransition.INSTANCE) + .singleArtifact() + .value(labelCache.getUnchecked(toolsRepository + "//tools/test:test_setup"))) + .add( + attr("$collect_coverage_script", LABEL) + .cfg(HostTransition.INSTANCE) + .singleArtifact() + .value(labelCache.getUnchecked(toolsRepository + "//tools/test:collect_coverage"))) // Input files for test actions collecting code coverage .add( attr("$coverage_support", LABEL) @@ -205,12 +194,26 @@ public class SkylarkRuleClassFunctions { .cfg(HostTransition.INSTANCE) .value(labelCache.getUnchecked("//tools/defaults:coverage_report_generator")) .singleArtifact()) - .add(attr(":run_under", LABEL) - .cfg(lipoDataTransition) - .value(RUN_UNDER)) + .add(attr(":run_under", LABEL).cfg(lipoDataTransition).value(RUN_UNDER)) .build(); } + @AutoCodec @AutoCodec.VisibleForSerialization + static final Attribute.ComputedDefault timeoutAttribute = + new Attribute.ComputedDefault() { + @Override + public Object getDefault(AttributeMap rule) { + TestSize size = TestSize.getTestSize(rule.get("size", Type.STRING)); + if (size != null) { + String timeout = size.getDefaultTimeout().toString(); + if (timeout != null) { + return timeout; + } + } + return "illegal"; + } + }; + @SkylarkSignature( name = "struct", returnType = Info.class, |