diff options
author | janakr <janakr@google.com> | 2018-03-30 12:49:12 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-03-30 12:50:39 -0700 |
commit | d3fe5e7f42e31a1021ace7cefb8a10285aad3494 (patch) | |
tree | a4168b035db55ea1ade11c7cdb7e22db429d36d5 /src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java | |
parent | 78a5fcff8a311c71cfe163a40856f7413e346409 (diff) |
Make RuleClass serializable and remove Environment from it, since it was only being used for the transitive hash code and transitive label of its globals, which can be passed in explicitly.
Assert along the way that the transitive label of its globals is always non-null. That is currently the case, although there seems to be no hard invariant of the system that it is true. Might as well tighten it now.
PiperOrigin-RevId: 191103310
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java | 7 |
1 files changed, 5 insertions, 2 deletions
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 c45ec3c66d..e6e6e9c637 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 @@ -556,7 +556,8 @@ public class SkylarkRuleClassFunctions { RuleClassType type = test ? RuleClassType.TEST : RuleClassType.NORMAL; RuleClass parent = test - ? getTestBaseRule(SkylarkUtils.getToolsRepository(funcallEnv), + ? getTestBaseRule( + SkylarkUtils.getToolsRepository(funcallEnv), (PatchTransition) SkylarkUtils.getLipoDataTransition(funcallEnv)) : (executable ? binaryBaseRule : baseRule); @@ -609,7 +610,9 @@ public class SkylarkRuleClassFunctions { .requiresHostConfigurationFragmentsBySkylarkModuleName( hostFragments.getContents(String.class, "host_fragments")); builder.setConfiguredTargetFunction(implementation); - builder.setRuleDefinitionEnvironment(funcallEnv); + builder.setRuleDefinitionEnvironmentLabelAndHashCode( + funcallEnv.getGlobals().getTransitiveLabel(), + funcallEnv.getTransitiveContentHashCode()); builder.addRequiredToolchains(collectToolchainLabels(toolchains, ast)); return new SkylarkRuleFunction(builder, type, attributes, ast.getLocation()); |