diff options
author | 2018-06-22 09:43:23 -0700 | |
---|---|---|
committer | 2018-06-22 09:44:34 -0700 | |
commit | 39a0a38f1364b5e4056632c731df4b3fe64c13bb (patch) | |
tree | da5eff7d932aab31806ad38070c3e4826dae796c /src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java | |
parent | 732dc512801c32207c252a76ca8d9e5544560339 (diff) |
Expose aspect actions from Skylark.
Like with providers, consumers get a merged view of all actions from the merged configured target (all other aspects + the base target).
I had to rejig the aspect value / configured aspect to be symmetric with rule configured targets.
I do not expect significant memory bloat from this. All lists / maps already existed, only extra fields have been added.
RELNOTES: Expose aspect actions provider to Skylark.
PiperOrigin-RevId: 201697923
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java index 456c6a10b9..c04365a903 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java @@ -64,6 +64,7 @@ import com.google.devtools.build.lib.packages.RuleVisibility; import com.google.devtools.build.lib.packages.SkylarkProviderIdentifier; import com.google.devtools.build.lib.packages.Target; import com.google.devtools.build.lib.profiler.memory.CurrentRuleTracker; +import com.google.devtools.build.lib.skyframe.AspectFunction.AspectFunctionException; import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndData; import com.google.devtools.build.lib.skyframe.ConfiguredTargetKey; import com.google.devtools.build.lib.util.OrderedSetMultimap; @@ -389,7 +390,7 @@ public final class ConfiguredTargetFactory { @Nullable ToolchainContext toolchainContext, BuildConfiguration aspectConfiguration, BuildConfiguration hostConfiguration) - throws InterruptedException { + throws AspectFunctionException, InterruptedException { // Load the requested toolchains into the ToolchainContext. if (toolchainContext != null) { @@ -424,8 +425,13 @@ public final class ConfiguredTargetFactory { return null; } - ConfiguredAspect configuredAspect = - aspectFactory.create(associatedTarget, ruleContext, aspect.getParameters()); + ConfiguredAspect configuredAspect; + try { + configuredAspect = + aspectFactory.create(associatedTarget, ruleContext, aspect.getParameters()); + } catch (ActionConflictException e) { + throw new AspectFunctionException(e); + } if (configuredAspect != null) { validateAdvertisedProviders( configuredAspect, aspect.getDefinition().getAdvertisedProviders(), |