aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
diff options
context:
space:
mode:
authorGravatar tomlu <tomlu@google.com>2018-06-22 09:43:23 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-06-22 09:44:34 -0700
commit39a0a38f1364b5e4056632c731df4b3fe64c13bb (patch)
treeda5eff7d932aab31806ad38070c3e4826dae796c /src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
parent732dc512801c32207c252a76ca8d9e5544560339 (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.java12
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(),