aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe
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/skyframe
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/skyframe')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java20
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java5
3 files changed, 8 insertions, 30 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
index de5db333d1..e1339795f5 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
@@ -18,8 +18,6 @@ import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
-import com.google.devtools.build.lib.actions.Actions;
-import com.google.devtools.build.lib.actions.Actions.GeneratingActions;
import com.google.devtools.build.lib.actions.InconsistentFilesystemException;
import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException;
import com.google.devtools.build.lib.analysis.AliasProvider;
@@ -573,7 +571,6 @@ public final class AspectFunction implements SkyFunction {
originalTarget.getLabel(),
originalTarget.getLocation(),
ConfiguredAspect.forAlias(real.getConfiguredAspect()),
- GeneratingActions.EMPTY,
transitivePackagesForPackageRootResolution);
}
@@ -644,23 +641,12 @@ public final class AspectFunction implements SkyFunction {
analysisEnvironment.disable(associatedTarget.getTarget());
Preconditions.checkNotNull(configuredAspect);
- GeneratingActions generatingActions;
- // Check for conflicting actions within this aspect (indicates a bug in the implementation).
- try {
- generatingActions =
- Actions.filterSharedActionsAndThrowActionConflict(
- analysisEnvironment.getActionKeyContext(),
- analysisEnvironment.getRegisteredActions());
- } catch (ActionConflictException e) {
- throw new AspectFunctionException(e);
- }
return new AspectValue(
key,
aspect,
associatedTarget.getTarget().getLabel(),
associatedTarget.getTarget().getLocation(),
configuredAspect,
- generatingActions,
transitivePackagesForPackageRootResolution == null
? null
: transitivePackagesForPackageRootResolution.build());
@@ -709,10 +695,8 @@ public final class AspectFunction implements SkyFunction {
}
}
- /**
- * Used to indicate errors during the computation of an {@link AspectValue}.
- */
- private static final class AspectFunctionException extends SkyFunctionException {
+ /** Used to indicate errors during the computation of an {@link AspectValue}. */
+ public static final class AspectFunctionException extends SkyFunctionException {
public AspectFunctionException(NoSuchThingException e) {
super(e, Transience.PERSISTENT);
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java
index 7096da3a5b..01a0df969b 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java
@@ -18,11 +18,7 @@ import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Interner;
-import com.google.devtools.build.lib.actions.ActionAnalysisMetadata;
-import com.google.devtools.build.lib.actions.Actions.GeneratingActions;
-import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.BasicActionLookupValue;
import com.google.devtools.build.lib.analysis.ConfiguredAspect;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
@@ -441,10 +437,8 @@ public final class AspectValue extends BasicActionLookupValue {
Aspect aspect,
Label label,
Location location,
- ConfiguredAspect configuredAspect,
- ImmutableList<ActionAnalysisMetadata> actions,
- ImmutableMap<Artifact, Integer> generatingActionIndex) {
- super(actions, generatingActionIndex);
+ ConfiguredAspect configuredAspect) {
+ super(configuredAspect.getActions(), configuredAspect.getGeneratingActionIndex());
this.label = Preconditions.checkNotNull(label, actions);
this.aspect = Preconditions.checkNotNull(aspect, label);
this.location = Preconditions.checkNotNull(location, label);
@@ -459,9 +453,8 @@ public final class AspectValue extends BasicActionLookupValue {
Label label,
Location location,
ConfiguredAspect configuredAspect,
- GeneratingActions actions,
NestedSet<Package> transitivePackagesForPackageRootResolution) {
- super(actions);
+ super(configuredAspect.getActions(), configuredAspect.getGeneratingActionIndex());
this.label = Preconditions.checkNotNull(label, actions);
this.aspect = Preconditions.checkNotNull(aspect, label);
this.location = Preconditions.checkNotNull(location, label);
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java
index 1bb02261b2..2c95721c0b 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java
@@ -15,6 +15,7 @@ package com.google.devtools.build.lib.skyframe;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
+import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException;
import com.google.devtools.build.lib.analysis.AnalysisEnvironment;
import com.google.devtools.build.lib.analysis.ConfiguredAspect;
import com.google.devtools.build.lib.analysis.ConfiguredAspectFactory;
@@ -49,7 +50,7 @@ public class SkylarkAspectFactory implements ConfiguredAspectFactory {
@Override
public ConfiguredAspect create(
ConfiguredTargetAndData ctadBase, RuleContext ruleContext, AspectParameters parameters)
- throws InterruptedException {
+ throws InterruptedException, ActionConflictException {
SkylarkRuleContext skylarkRuleContext = null;
try (Mutability mutability = Mutability.create("aspect")) {
AspectDescriptor aspectDescriptor =
@@ -106,7 +107,7 @@ public class SkylarkAspectFactory implements ConfiguredAspectFactory {
private ConfiguredAspect createAspect(
Object aspectSkylarkObject, AspectDescriptor aspectDescriptor, RuleContext ruleContext)
- throws EvalException {
+ throws EvalException, ActionConflictException {
ConfiguredAspect.Builder builder = new ConfiguredAspect.Builder(aspectDescriptor, ruleContext);