aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/actions/BasicActionLookupValue.java
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2018-03-06 16:15:11 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-06 16:18:46 -0800
commite2d200f32a7242898a5c976837bd3b8e6dfed62c (patch)
tree98a6fb3b0bbe3d8438aff9206d5ff77cf19870c3 /src/main/java/com/google/devtools/build/lib/actions/BasicActionLookupValue.java
parenta854d6c0d3d222bbd4ff2a532d48ddd91718908c (diff)
Expose an actions provider on RuleConfiguredTarget instances.
Given a target (for example from a skylark aspect), one will be able to access a list of actions that the target generated using "target.actions". This is without additional memory footprint. Actions themselves are not fully exposed to skylark (and thus there isn't much meaning to gather from them in skylark yet). Access methods will follow soon. RELNOTES: None. PiperOrigin-RevId: 188098079
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/actions/BasicActionLookupValue.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/BasicActionLookupValue.java69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/BasicActionLookupValue.java b/src/main/java/com/google/devtools/build/lib/actions/BasicActionLookupValue.java
new file mode 100644
index 0000000000..7ac35c75b3
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/actions/BasicActionLookupValue.java
@@ -0,0 +1,69 @@
+// Copyright 2014 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.google.devtools.build.lib.actions;
+
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.MoreObjects;
+import com.google.common.base.MoreObjects.ToStringHelper;
+import com.google.common.collect.ImmutableMap;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
+import java.util.ArrayList;
+
+/**
+ * Basic implementation of {@link ActionLookupValue} where the value itself owns and maintains
+ * the list of generating actions.
+ */
+public class BasicActionLookupValue extends ActionLookupValue {
+ protected final ArrayList<ActionAnalysisMetadata> actions;
+ @VisibleForSerialization protected final ImmutableMap<Artifact, Integer> generatingActionIndex;
+
+ protected BasicActionLookupValue(
+ ActionAnalysisMetadata action,
+ boolean removeActionAfterEvaluation) {
+ this(Actions.GeneratingActions.fromSingleAction(action), removeActionAfterEvaluation);
+ }
+
+ protected BasicActionLookupValue(
+ ArrayList<ActionAnalysisMetadata> actions,
+ ImmutableMap<Artifact, Integer> generatingActionIndex,
+ boolean removeActionsAfterEvaluation) {
+ super(removeActionsAfterEvaluation);
+ this.actions = actions;
+ this.generatingActionIndex = generatingActionIndex;
+ }
+
+ @VisibleForTesting
+ public BasicActionLookupValue(
+ Actions.GeneratingActions generatingActions, boolean removeActionsAfterEvaluation) {
+ this(new ArrayList<>(generatingActions.getActions()),
+ generatingActions.getGeneratingActionIndex(),
+ removeActionsAfterEvaluation);
+ }
+
+ @Override
+ protected ArrayList<ActionAnalysisMetadata> getActions() {
+ return actions;
+ }
+
+ @Override
+ protected ImmutableMap<Artifact, Integer> getGeneratingActionIndex() {
+ return generatingActionIndex;
+ }
+
+ protected ToStringHelper getStringHelper() {
+ return MoreObjects.toStringHelper(this)
+ .add("actions", actions)
+ .add("generatingActionIndex", generatingActionIndex);
+ }
+}