aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools
diff options
context:
space:
mode:
authorGravatar jcater <jcater@google.com>2018-02-28 12:44:39 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-28 12:46:43 -0800
commit614fe0dfb9e6bed90c361e4b6bfff37c11a4775f (patch)
tree1a7dd6c919ba817afe1ec9836976f50c20b617e1 /src/main/java/com/google/devtools
parent49451c1f853acf3e60ef90635767da0addb8671e (diff)
Refactor the AbstractAction computeKey method to be easier to add invariants
for every type of action. PiperOrigin-RevId: 187368369
Diffstat (limited to 'src/main/java/com/google/devtools')
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/FailAction.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/MiddlemanAction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/PseudoAction.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/SourceManifestAction.java26
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/BinaryFileWriteAction.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteAction.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/LauncherFileWriteAction.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/LazyWritePathsFileAction.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/ParameterFileWriteAction.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactAction.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java22
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkAction.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeAction.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionAction.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraActionInfoFileWriteAction.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/test/BaselineCoverageAction.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFileManifestAction.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/test/TestRunnerAction.java37
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeployInfoAction.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/WriteAdbArgsAction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java26
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java20
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppModuleMapAction.java36
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkAction.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/ExtractInclusionAction.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/FdoStubAction.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendAction.java24
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/SolibSymlinkAction.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/UmbrellaHeaderAction.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/WriteBuildInfoHeaderAction.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileAction.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/WriteBuildInfoPropertiesAction.java12
35 files changed, 196 insertions, 248 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java b/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java
index 6b9d374f0f..86fa2410b7 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java
@@ -38,6 +38,7 @@ import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
import com.google.devtools.build.lib.syntax.SkylarkDict;
import com.google.devtools.build.lib.syntax.SkylarkList;
import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
+import com.google.devtools.build.lib.util.Fingerprint;
import com.google.devtools.build.lib.vfs.FileSystem;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
import com.google.devtools.build.lib.vfs.Path;
@@ -302,16 +303,18 @@ public abstract class AbstractAction implements Action, SkylarkValue {
/**
* See the javadoc for {@link com.google.devtools.build.lib.actions.Action} and {@link
* ActionExecutionMetadata#getKey(ActionKeyContext)} for the contract for {@link
- * #computeKey(ActionKeyContext)}.
+ * #computeKey(ActionKeyContext, Fingerprint)}.
*/
- protected abstract String computeKey(ActionKeyContext actionKeyContext)
+ protected abstract void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp)
throws CommandLineExpansionException;
@Override
public final synchronized String getKey(ActionKeyContext actionKeyContext) {
if (cachedKey == null) {
try {
- cachedKey = computeKey(actionKeyContext);
+ Fingerprint fp = new Fingerprint();
+ computeKey(actionKeyContext, fp);
+ cachedKey = fp.hexDigestAndReset();
} catch (CommandLineExpansionException e) {
cachedKey = KEY_ERROR;
}
diff --git a/src/main/java/com/google/devtools/build/lib/actions/FailAction.java b/src/main/java/com/google/devtools/build/lib/actions/FailAction.java
index 86c22e0855..a61d2b2f50 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/FailAction.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/FailAction.java
@@ -16,6 +16,7 @@ package com.google.devtools.build.lib.actions;
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
+import com.google.devtools.build.lib.util.Fingerprint;
/**
* FailAction is an Action that always fails to execute. (Used as scaffolding
@@ -45,8 +46,8 @@ public final class FailAction extends AbstractAction {
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext) {
- return GUID;
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
+ fp.addString(GUID);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/actions/MiddlemanAction.java b/src/main/java/com/google/devtools/build/lib/actions/MiddlemanAction.java
index addbf6ea8d..70a659948e 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/MiddlemanAction.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/MiddlemanAction.java
@@ -21,6 +21,7 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
+import com.google.devtools.build.lib.util.Fingerprint;
/**
* An action that depends on a set of inputs and creates a single output file whenever it runs. This
@@ -73,11 +74,10 @@ public final class MiddlemanAction extends AbstractAction {
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext) {
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
// TODO(bazel-team): Need to take middlemanType into account here.
// Only the set of inputs matters, and the dependency checker is
// responsible for considering those.
- return "";
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/PseudoAction.java b/src/main/java/com/google/devtools/build/lib/analysis/PseudoAction.java
index 3f704d201a..52b3ee2ada 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/PseudoAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/PseudoAction.java
@@ -64,8 +64,9 @@ public class PseudoAction<InfoType extends MessageLite> extends AbstractAction {
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext) {
- return new Fingerprint().addUUID(uuid).addBytes(getInfo().toByteArray()).hexDigestAndReset();
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
+ fp.addUUID(uuid);
+ fp.addBytes(getInfo().toByteArray());
}
protected InfoType getInfo() {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/SourceManifestAction.java b/src/main/java/com/google/devtools/build/lib/analysis/SourceManifestAction.java
index b7a420a03e..2fc824a10f 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/SourceManifestAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/SourceManifestAction.java
@@ -193,29 +193,27 @@ public final class SourceManifestAction extends AbstractFileWriteAction {
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext) {
- Fingerprint f = new Fingerprint();
- f.addString(GUID);
- f.addBoolean(runfiles.getLegacyExternalRunfiles());
- f.addPath(runfiles.getSuffix());
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
+ fp.addString(GUID);
+ fp.addBoolean(runfiles.getLegacyExternalRunfiles());
+ fp.addPath(runfiles.getSuffix());
Map<PathFragment, Artifact> symlinks = runfiles.getSymlinksAsMap(null);
- f.addInt(symlinks.size());
+ fp.addInt(symlinks.size());
for (Map.Entry<PathFragment, Artifact> symlink : symlinks.entrySet()) {
- f.addPath(symlink.getKey());
- f.addPath(symlink.getValue().getPath());
+ fp.addPath(symlink.getKey());
+ fp.addPath(symlink.getValue().getPath());
}
Map<PathFragment, Artifact> rootSymlinks = runfiles.getRootSymlinksAsMap(null);
- f.addInt(rootSymlinks.size());
+ fp.addInt(rootSymlinks.size());
for (Map.Entry<PathFragment, Artifact> rootSymlink : rootSymlinks.entrySet()) {
- f.addPath(rootSymlink.getKey());
- f.addPath(rootSymlink.getValue().getPath());
+ fp.addPath(rootSymlink.getKey());
+ fp.addPath(rootSymlink.getValue().getPath());
}
for (Artifact artifact : runfiles.getArtifacts()) {
- f.addPath(artifact.getRootRelativePath());
- f.addPath(artifact.getPath());
+ fp.addPath(artifact.getRootRelativePath());
+ fp.addPath(artifact.getPath());
}
- return f.hexDigestAndReset();
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/BinaryFileWriteAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/BinaryFileWriteAction.java
index 0df7abe34a..951b4c127e 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/BinaryFileWriteAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/BinaryFileWriteAction.java
@@ -71,21 +71,18 @@ public final class BinaryFileWriteAction extends AbstractFileWriteAction {
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext) {
- Fingerprint f = new Fingerprint();
- f.addString(GUID);
- f.addString(String.valueOf(makeExecutable));
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
+ fp.addString(GUID);
+ fp.addString(String.valueOf(makeExecutable));
try (InputStream in = source.openStream()) {
byte[] buffer = new byte[512];
int amountRead;
while ((amountRead = in.read(buffer)) != -1) {
- f.addBytes(buffer, 0, amountRead);
+ fp.addBytes(buffer, 0, amountRead);
}
} catch (IOException e) {
throw new RuntimeException(e);
}
-
- return f.hexDigestAndReset();
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteAction.java
index 6ba8be6741..5a75dffc0e 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteAction.java
@@ -244,12 +244,10 @@ public final class FileWriteAction extends AbstractFileWriteAction {
/** Computes the Action key for this action by computing the fingerprint for the file contents. */
@Override
- protected String computeKey(ActionKeyContext actionKeyContext) {
- Fingerprint f = new Fingerprint();
- f.addString(GUID);
- f.addString(String.valueOf(makeExecutable));
- f.addString(getFileContents());
- return f.hexDigestAndReset();
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
+ fp.addString(GUID);
+ fp.addString(String.valueOf(makeExecutable));
+ fp.addString(getFileContents());
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/LauncherFileWriteAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/LauncherFileWriteAction.java
index d674852f4e..5ad73764c1 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/LauncherFileWriteAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/LauncherFileWriteAction.java
@@ -87,16 +87,14 @@ public final class LauncherFileWriteAction extends AbstractFileWriteAction {
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext) {
- Fingerprint f = new Fingerprint();
- f.addString(GUID);
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
+ fp.addString(GUID);
try {
- f.addBytes(this.launcher.getPath().getDigest());
+ fp.addBytes(this.launcher.getPath().getDigest());
} catch (IOException e) {
throw new RuntimeException(e);
}
- f.addString(this.launchInfo.fingerPrint);
- return f.hexDigestAndReset();
+ fp.addString(this.launchInfo.fingerPrint);
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/LazyWritePathsFileAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/LazyWritePathsFileAction.java
index be17d7dd2d..f351fb53ea 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/LazyWritePathsFileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/LazyWritePathsFileAction.java
@@ -22,7 +22,6 @@ import com.google.devtools.build.lib.actions.ActionExecutionContext;
import com.google.devtools.build.lib.actions.ActionKeyContext;
import com.google.devtools.build.lib.actions.ActionOwner;
import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.actions.CommandLineExpansionException;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.util.Fingerprint;
@@ -65,17 +64,12 @@ public final class LazyWritePathsFileAction extends AbstractFileWriteAction {
};
}
- /**
- * Computes the Action key for this action by computing the fingerprint for the file contents.
- */
+ /** Computes the Action key for this action by computing the fingerprint for the file contents. */
@Override
- protected String computeKey(ActionKeyContext actionKeyContext)
- throws CommandLineExpansionException {
- Fingerprint f = new Fingerprint();
- f.addString(GUID);
- f.addBoolean(includeDerivedArtifacts);
- f.addString(getContents());
- return f.hexDigestAndReset();
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
+ fp.addString(GUID);
+ fp.addBoolean(includeDerivedArtifacts);
+ fp.addString(getContents());
}
private String getContents() {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/ParameterFileWriteAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/ParameterFileWriteAction.java
index 03b2084064..7af135b67c 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/ParameterFileWriteAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/ParameterFileWriteAction.java
@@ -178,14 +178,12 @@ public final class ParameterFileWriteAction extends AbstractFileWriteAction {
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext)
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp)
throws CommandLineExpansionException {
- Fingerprint f = new Fingerprint();
- f.addString(GUID);
- f.addString(String.valueOf(makeExecutable));
- f.addString(type.toString());
- f.addString(charset.toString());
- commandLine.addToFingerprint(actionKeyContext, f);
- return f.hexDigestAndReset();
+ fp.addString(GUID);
+ fp.addString(String.valueOf(makeExecutable));
+ fp.addString(type.toString());
+ fp.addString(charset.toString());
+ commandLine.addToFingerprint(actionKeyContext, fp);
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactAction.java
index fb9dc28823..131830a41e 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactAction.java
@@ -211,18 +211,16 @@ public final class PopulateTreeArtifactAction extends AbstractAction {
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext) {
- Fingerprint f = new Fingerprint();
- f.addString(GUID);
- f.addString(getMnemonic());
- f.addStrings(spawnCommandLine());
- f.addPaths(zipper.getRunfilesSupplier().getRunfilesDirs());
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
+ fp.addString(GUID);
+ fp.addString(getMnemonic());
+ fp.addStrings(spawnCommandLine());
+ fp.addPaths(zipper.getRunfilesSupplier().getRunfilesDirs());
List<Artifact> runfilesManifests = zipper.getRunfilesSupplier().getManifests();
- f.addInt(runfilesManifests.size());
+ fp.addInt(runfilesManifests.size());
for (Artifact manifest : runfilesManifests) {
- f.addPath(manifest.getExecPath());
+ fp.addPath(manifest.getExecPath());
}
- return f.hexDigestAndReset();
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java
index e991541ecc..3a5b225cdf 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java
@@ -328,25 +328,23 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext)
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp)
throws CommandLineExpansionException {
- Fingerprint f = new Fingerprint();
- f.addString(GUID);
- argv.addToFingerprint(actionKeyContext, f);
- f.addString(getMnemonic());
+ fp.addString(GUID);
+ argv.addToFingerprint(actionKeyContext, fp);
+ fp.addString(getMnemonic());
// We don't need the toolManifests here, because they are a subset of the inputManifests by
// definition and the output of an action shouldn't change whether something is considered a
// tool or not.
- f.addPaths(getRunfilesSupplier().getRunfilesDirs());
+ fp.addPaths(getRunfilesSupplier().getRunfilesDirs());
ImmutableList<Artifact> runfilesManifests = getRunfilesSupplier().getManifests();
- f.addInt(runfilesManifests.size());
+ fp.addInt(runfilesManifests.size());
for (Artifact runfilesManifest : runfilesManifests) {
- f.addPath(runfilesManifest.getExecPath());
+ fp.addPath(runfilesManifest.getExecPath());
}
- f.addStringMap(getEnvironment());
- f.addStrings(getClientEnvironmentVariables());
- f.addStringMap(getExecutionInfo());
- return f.hexDigestAndReset();
+ fp.addStringMap(getEnvironment());
+ fp.addStrings(getClientEnvironmentVariables());
+ fp.addStringMap(getExecutionInfo());
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkAction.java
index 5a74e0b8b3..d0aba38bdc 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkAction.java
@@ -128,15 +128,13 @@ public class SymlinkAction extends AbstractAction {
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext) {
- Fingerprint f = new Fingerprint();
- f.addString(GUID);
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
+ fp.addString(GUID);
// We don't normally need to add inputs to the key. In this case, however, the inputPath can be
// different from the actual input artifact.
if (inputPath != null) {
- f.addPath(inputPath);
+ fp.addPath(inputPath);
}
- return f.hexDigestAndReset();
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeAction.java
index 3b2750df5a..60d75e1ede 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeAction.java
@@ -91,11 +91,9 @@ public final class SymlinkTreeAction extends AbstractAction {
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext) {
- Fingerprint f = new Fingerprint();
- f.addString(GUID);
- f.addInt(filesetTree ? 1 : 0);
- return f.hexDigestAndReset();
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
+ fp.addString(GUID);
+ fp.addInt(filesetTree ? 1 : 0);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionAction.java
index 644129157a..c5af5d1042 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionAction.java
@@ -439,17 +439,15 @@ public final class TemplateExpansionAction extends AbstractFileWriteAction {
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext) {
- Fingerprint f = new Fingerprint();
- f.addString(GUID);
- f.addString(String.valueOf(makeExecutable));
- f.addString(template.getKey());
- f.addInt(substitutions.size());
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
+ fp.addString(GUID);
+ fp.addString(String.valueOf(makeExecutable));
+ fp.addString(template.getKey());
+ fp.addInt(substitutions.size());
for (Substitution entry : substitutions) {
- f.addString(entry.getKey());
- f.addString(entry.getValue());
+ fp.addString(entry.getKey());
+ fp.addString(entry.getValue());
}
- return f.hexDigestAndReset();
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraActionInfoFileWriteAction.java b/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraActionInfoFileWriteAction.java
index 5267e7dafd..d2f080ee2a 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraActionInfoFileWriteAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraActionInfoFileWriteAction.java
@@ -59,12 +59,10 @@ public final class ExtraActionInfoFileWriteAction extends AbstractFileWriteActio
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext)
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp)
throws CommandLineExpansionException {
- Fingerprint f = new Fingerprint();
- f.addString(UUID);
- f.addString(shadowedAction.getKey(actionKeyContext));
- f.addBytes(shadowedAction.getExtraActionInfo(actionKeyContext).build().toByteArray());
- return f.hexDigestAndReset();
+ fp.addString(UUID);
+ fp.addString(shadowedAction.getKey(actionKeyContext));
+ fp.addBytes(shadowedAction.getExtraActionInfo(actionKeyContext).build().toByteArray());
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/BaselineCoverageAction.java b/src/main/java/com/google/devtools/build/lib/analysis/test/BaselineCoverageAction.java
index 172d5b2fdc..b400440ca0 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/BaselineCoverageAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/BaselineCoverageAction.java
@@ -59,10 +59,8 @@ public final class BaselineCoverageAction extends AbstractFileWriteAction
}
@Override
- public String computeKey(ActionKeyContext actionKeyContext) {
- return new Fingerprint()
- .addStrings(getInstrumentedFilePathStrings())
- .hexDigestAndReset();
+ public void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
+ fp.addStrings(getInstrumentedFilePathStrings());
}
private Iterable<String> getInstrumentedFilePathStrings() {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFileManifestAction.java b/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFileManifestAction.java
index 628be6cf4a..cfcc9bfc11 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFileManifestAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFileManifestAction.java
@@ -78,12 +78,10 @@ final class InstrumentedFileManifestAction extends AbstractFileWriteAction {
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext) {
- Fingerprint f = new Fingerprint();
- f.addString(GUID);
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
+ fp.addString(GUID);
// Not sorting here is probably cheaper, though it might lead to unnecessary re-execution.
- f.addStrings(Iterables.transform(files, TO_EXEC_PATH));
- return f.hexDigestAndReset();
+ fp.addStrings(Iterables.transform(files, TO_EXEC_PATH));
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestRunnerAction.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestRunnerAction.java
index 0166545c99..22638c7ce9 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestRunnerAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestRunnerAction.java
@@ -232,30 +232,29 @@ public class TestRunnerAction extends AbstractAction implements NotifyOnActionCa
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext)
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp)
throws CommandLineExpansionException {
- Fingerprint f = new Fingerprint();
- f.addString(GUID);
- f.addStrings(executionSettings.getArgs().arguments());
- f.addString(executionSettings.getTestFilter() == null ? "" : executionSettings.getTestFilter());
+ fp.addString(GUID);
+ fp.addStrings(executionSettings.getArgs().arguments());
+ fp.addString(
+ executionSettings.getTestFilter() == null ? "" : executionSettings.getTestFilter());
RunUnder runUnder = executionSettings.getRunUnder();
- f.addString(runUnder == null ? "" : runUnder.getValue());
- f.addStringMap(extraTestEnv);
+ fp.addString(runUnder == null ? "" : runUnder.getValue());
+ fp.addStringMap(extraTestEnv);
// TODO(ulfjack): It might be better for performance to hash the action and test envs in config,
// and only add a hash here.
- configuration.getActionEnvironment().addTo(f);
- configuration.getTestActionEnvironment().addTo(f);
+ configuration.getActionEnvironment().addTo(fp);
+ configuration.getTestActionEnvironment().addTo(fp);
// The 'requiredClientEnvVariables' are handled by Skyframe and don't need to be added here.
- f.addString(testProperties.getSize().toString());
- f.addString(testProperties.getTimeout().toString());
- f.addStrings(testProperties.getTags());
- f.addInt(testProperties.isLocal() ? 1 : 0);
- f.addInt(shardNum);
- f.addInt(executionSettings.getTotalShards());
- f.addInt(runNumber);
- f.addInt(testConfiguration.getRunsPerTestForLabel(getOwner().getLabel()));
- f.addInt(configuration.isCodeCoverageEnabled() ? 1 : 0);
- return f.hexDigestAndReset();
+ fp.addString(testProperties.getSize().toString());
+ fp.addString(testProperties.getTimeout().toString());
+ fp.addStrings(testProperties.getTags());
+ fp.addInt(testProperties.isLocal() ? 1 : 0);
+ fp.addInt(shardNum);
+ fp.addInt(executionSettings.getTotalShards());
+ fp.addInt(runNumber);
+ fp.addInt(testConfiguration.getRunsPerTestForLabel(getOwner().getLabel()));
+ fp.addInt(configuration.isCodeCoverageEnabled() ? 1 : 0);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java b/src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java
index 1fd392d7c8..9a74ccc95f 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java
@@ -51,6 +51,7 @@ import com.google.devtools.build.lib.shell.BadExitStatusException;
import com.google.devtools.build.lib.shell.CommandException;
import com.google.devtools.build.lib.shell.CommandResult;
import com.google.devtools.build.lib.util.CommandBuilder;
+import com.google.devtools.build.lib.util.Fingerprint;
import com.google.devtools.build.lib.util.NetUtil;
import com.google.devtools.build.lib.vfs.FileSystem;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
@@ -268,9 +269,7 @@ public class BazelWorkspaceStatusModule extends BlazeModule {
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext) {
- return "";
- }
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {}
@Override
public boolean executeUnconditionally() {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeployInfoAction.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeployInfoAction.java
index 573d9046f7..83a6d73b66 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeployInfoAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeployInfoAction.java
@@ -114,19 +114,18 @@ public final class AndroidDeployInfoAction extends AbstractFileWriteAction {
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext) {
- Fingerprint f = new Fingerprint().addString(GUID);
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
+ fp.addString(GUID);
try (InputStream in = getByteString().newInput()) {
byte[] buffer = new byte[512];
int amountRead;
while ((amountRead = in.read(buffer)) != -1) {
- f.addBytes(buffer, 0, amountRead);
+ fp.addBytes(buffer, 0, amountRead);
}
} catch (IOException e) {
throw new RuntimeException(e);
}
- return f.hexDigestAndReset();
}
private static AndroidDeployInfoOuterClass.Artifact makeArtifactProto(Artifact artifact) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/WriteAdbArgsAction.java b/src/main/java/com/google/devtools/build/lib/rules/android/WriteAdbArgsAction.java
index 02d46b59a3..d9d108925a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/WriteAdbArgsAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/WriteAdbArgsAction.java
@@ -186,8 +186,8 @@ public final class WriteAdbArgsAction extends AbstractFileWriteAction {
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext) {
- return new Fingerprint().addString(GUID).hexDigestAndReset();
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
+ fp.addString(GUID);
}
/** Specifies how the app should be started/stopped. */
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
index 406bb8e8d1..236439e93c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
@@ -1116,11 +1116,10 @@ public class CppCompileAction extends AbstractAction
}
@Override
- public String computeKey(ActionKeyContext actionKeyContext) {
- Fingerprint f = new Fingerprint();
- f.addUUID(actionClassId);
- f.addStringMap(getEnvironment());
- f.addStringMap(executionInfo);
+ public void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
+ fp.addUUID(actionClassId);
+ fp.addStringMap(getEnvironment());
+ fp.addStringMap(executionInfo);
// For the argv part of the cache key, ignore all compiler flags that explicitly denote module
// file (.pcm) inputs. Depending on input discovery, some of the unused ones are removed from
@@ -1129,7 +1128,7 @@ public class CppCompileAction extends AbstractAction
// itself is fully determined by the input source files and module maps.
// A better long-term solution would be to make the compiler to find them automatically and
// never hand in the .pcm files explicitly on the command line in the first place.
- f.addStrings(compileCommandLine.getArguments(/* overwrittenVariables= */ null));
+ fp.addStrings(compileCommandLine.getArguments(/* overwrittenVariables= */ null));
/*
* getArguments() above captures all changes which affect the compilation
@@ -1138,14 +1137,13 @@ public class CppCompileAction extends AbstractAction
* that affect whether validateIncludes() will report an error or warning
* have changed, otherwise we might miss some errors.
*/
- f.addPaths(ccCompilationInfo.getDeclaredIncludeDirs());
- f.addPaths(ccCompilationInfo.getDeclaredIncludeWarnDirs());
- actionKeyContext.addNestedSetToFingerprint(f, ccCompilationInfo.getDeclaredIncludeSrcs());
- f.addInt(0); // mark the boundary between input types
- actionKeyContext.addNestedSetToFingerprint(f, getMandatoryInputs());
- f.addInt(0);
- actionKeyContext.addNestedSetToFingerprint(f, prunableInputs);
- return f.hexDigestAndReset();
+ fp.addPaths(ccCompilationInfo.getDeclaredIncludeDirs());
+ fp.addPaths(ccCompilationInfo.getDeclaredIncludeWarnDirs());
+ actionKeyContext.addNestedSetToFingerprint(fp, ccCompilationInfo.getDeclaredIncludeSrcs());
+ fp.addInt(0); // mark the boundary between input types
+ actionKeyContext.addNestedSetToFingerprint(fp, getMandatoryInputs());
+ fp.addInt(0);
+ actionKeyContext.addNestedSetToFingerprint(fp, prunableInputs);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java
index 69ec47e29f..a0e6c84d0f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java
@@ -438,12 +438,11 @@ public final class CppLinkAction extends AbstractAction
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext) {
- Fingerprint f = new Fingerprint();
- f.addString(fake ? FAKE_LINK_GUID : LINK_GUID);
- f.addString(ldExecutable.getPathString());
- f.addStrings(linkCommandLine.arguments());
- f.addStrings(getExecutionInfo().keySet());
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
+ fp.addString(fake ? FAKE_LINK_GUID : LINK_GUID);
+ fp.addString(ldExecutable.getPathString());
+ fp.addStrings(linkCommandLine.arguments());
+ fp.addStrings(getExecutionInfo().keySet());
// TODO(bazel-team): For correctness, we need to ensure the invariant that all values accessed
// during the execution phase are also covered by the key. Above, we add the argv to the key,
@@ -452,13 +451,12 @@ public final class CppLinkAction extends AbstractAction
// key. We either need to change the code to cover them in the key computation, or change the
// LinkConfiguration to disallow the combinations where the value of a setting does not affect
// the argv.
- f.addBoolean(linkCommandLine.isNativeDeps());
- f.addBoolean(linkCommandLine.useTestOnlyFlags());
+ fp.addBoolean(linkCommandLine.isNativeDeps());
+ fp.addBoolean(linkCommandLine.useTestOnlyFlags());
if (linkCommandLine.getRuntimeSolibDir() != null) {
- f.addPath(linkCommandLine.getRuntimeSolibDir());
+ fp.addPath(linkCommandLine.getRuntimeSolibDir());
}
- f.addBoolean(isLtoIndexing);
- return f.hexDigestAndReset();
+ fp.addBoolean(isLtoIndexing);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModuleMapAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModuleMapAction.java
index d9d334c1ba..602089b691 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModuleMapAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModuleMapAction.java
@@ -228,36 +228,34 @@ public final class CppModuleMapAction extends AbstractFileWriteAction {
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext) {
- Fingerprint f = new Fingerprint();
- f.addString(GUID);
- f.addInt(privateHeaders.size());
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
+ fp.addString(GUID);
+ fp.addInt(privateHeaders.size());
for (Artifact artifact : privateHeaders) {
- f.addPath(artifact.getExecPath());
+ fp.addPath(artifact.getExecPath());
}
- f.addInt(publicHeaders.size());
+ fp.addInt(publicHeaders.size());
for (Artifact artifact : publicHeaders) {
- f.addPath(artifact.getExecPath());
+ fp.addPath(artifact.getExecPath());
}
- f.addInt(dependencies.size());
+ fp.addInt(dependencies.size());
for (CppModuleMap dep : dependencies) {
- f.addPath(dep.getArtifact().getExecPath());
+ fp.addPath(dep.getArtifact().getExecPath());
}
- f.addInt(additionalExportedHeaders.size());
+ fp.addInt(additionalExportedHeaders.size());
for (PathFragment path : additionalExportedHeaders) {
- f.addPath(path);
+ fp.addPath(path);
}
- f.addPath(cppModuleMap.getArtifact().getExecPath());
+ fp.addPath(cppModuleMap.getArtifact().getExecPath());
Optional<Artifact> umbrellaHeader = cppModuleMap.getUmbrellaHeader();
if (umbrellaHeader.isPresent()) {
- f.addPath(umbrellaHeader.get().getExecPath());
+ fp.addPath(umbrellaHeader.get().getExecPath());
}
- f.addString(cppModuleMap.getName());
- f.addBoolean(moduleMapHomeIsCwd);
- f.addBoolean(compiledModule);
- f.addBoolean(generateSubmodules);
- f.addBoolean(externDependencies);
- return f.hexDigestAndReset();
+ fp.addString(cppModuleMap.getName());
+ fp.addBoolean(moduleMapHomeIsCwd);
+ fp.addBoolean(compiledModule);
+ fp.addBoolean(generateSubmodules);
+ fp.addBoolean(externDependencies);
}
@VisibleForTesting
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkAction.java
index ce7824cdc8..bcad6786a7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkAction.java
@@ -84,13 +84,11 @@ public final class CreateIncSymlinkAction extends AbstractAction {
}
@Override
- public String computeKey(ActionKeyContext actionKeyContext) {
- Fingerprint key = new Fingerprint();
+ public void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
for (Map.Entry<Artifact, Artifact> entry : symlinks.entrySet()) {
- key.addPath(entry.getKey().getPath());
- key.addPath(entry.getValue().getPath());
+ fp.addPath(entry.getKey().getPath());
+ fp.addPath(entry.getValue().getPath());
}
- return key.hexDigestAndReset();
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtractInclusionAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtractInclusionAction.java
index 93e6b19e52..211ae9ca4d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtractInclusionAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtractInclusionAction.java
@@ -25,6 +25,7 @@ import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.ExecException;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
+import com.google.devtools.build.lib.util.Fingerprint;
import java.io.IOException;
/**
@@ -51,8 +52,8 @@ final class ExtractInclusionAction extends AbstractAction {
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext) {
- return GUID;
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
+ fp.addString(GUID);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoStubAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoStubAction.java
index 3997c5130e..f8fd4220a7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoStubAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoStubAction.java
@@ -21,6 +21,7 @@ import com.google.devtools.build.lib.actions.ActionOwner;
import com.google.devtools.build.lib.actions.ActionResult;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
+import com.google.devtools.build.lib.util.Fingerprint;
import com.google.devtools.build.lib.vfs.FileSystem;
import com.google.devtools.build.lib.vfs.Path;
@@ -56,8 +57,8 @@ public final class FdoStubAction extends AbstractAction {
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext) {
- return "fdoStubAction";
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
+ fp.addString("fdoStubAction");
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendAction.java
index 366d1cb9b6..2e992fefac 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendAction.java
@@ -166,32 +166,30 @@ public final class LtoBackendAction extends SpawnAction {
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext) {
- Fingerprint f = new Fingerprint();
- f.addString(GUID);
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
+ fp.addString(GUID);
try {
- f.addStrings(getArguments());
+ fp.addStrings(getArguments());
} catch (CommandLineExpansionException e) {
throw new AssertionError("LtoBackendAction command line expansion cannot fail");
}
- f.addString(getMnemonic());
- f.addPaths(getRunfilesSupplier().getRunfilesDirs());
+ fp.addString(getMnemonic());
+ fp.addPaths(getRunfilesSupplier().getRunfilesDirs());
ImmutableList<Artifact> runfilesManifests = getRunfilesSupplier().getManifests();
for (Artifact runfilesManifest : runfilesManifests) {
- f.addPath(runfilesManifest.getExecPath());
+ fp.addPath(runfilesManifest.getExecPath());
}
for (Artifact input : getMandatoryInputs()) {
- f.addPath(input.getExecPath());
+ fp.addPath(input.getExecPath());
}
if (imports != null) {
for (PathFragment bitcodePath : bitcodeFiles.keySet()) {
- f.addPath(bitcodePath);
+ fp.addPath(bitcodePath);
}
- f.addPath(imports.getExecPath());
+ fp.addPath(imports.getExecPath());
}
- f.addStringMap(getEnvironment());
- f.addStringMap(getExecutionInfo());
- return f.hexDigestAndReset();
+ fp.addStringMap(getEnvironment());
+ fp.addStringMap(getExecutionInfo());
}
/** Builder class to construct {@link LtoBackendAction} instances. */
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/SolibSymlinkAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/SolibSymlinkAction.java
index cfbe99a26e..c0c5e3a657 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/SolibSymlinkAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/SolibSymlinkAction.java
@@ -73,11 +73,9 @@ public final class SolibSymlinkAction extends AbstractAction {
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext) {
- Fingerprint f = new Fingerprint();
- f.addPath(symlink.getPath());
- f.addPath(target);
- return f.hexDigestAndReset();
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
+ fp.addPath(symlink.getPath());
+ fp.addPath(target);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/UmbrellaHeaderAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/UmbrellaHeaderAction.java
index a77e6443f7..08a35dd5da 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/UmbrellaHeaderAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/UmbrellaHeaderAction.java
@@ -110,18 +110,16 @@ public final class UmbrellaHeaderAction extends AbstractFileWriteAction {
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext) {
- Fingerprint f = new Fingerprint();
- f.addString(GUID);
- f.addPath(umbrellaHeader.getExecPath());
- f.addInt(publicHeaders.size());
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
+ fp.addString(GUID);
+ fp.addPath(umbrellaHeader.getExecPath());
+ fp.addInt(publicHeaders.size());
for (Artifact artifact : publicHeaders) {
- f.addPath(artifact.getExecPath());
+ fp.addPath(artifact.getExecPath());
}
- f.addInt(additionalExportedHeaders.size());
+ fp.addInt(additionalExportedHeaders.size());
for (PathFragment path : additionalExportedHeaders) {
- f.addPath(path);
+ fp.addPath(path);
}
- return f.hexDigestAndReset();
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/WriteBuildInfoHeaderAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/WriteBuildInfoHeaderAction.java
index e75153a1b5..93e40f95e1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/WriteBuildInfoHeaderAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/WriteBuildInfoHeaderAction.java
@@ -138,12 +138,10 @@ public final class WriteBuildInfoHeaderAction extends AbstractFileWriteAction {
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext) {
- Fingerprint f = new Fingerprint();
- f.addString(GUID);
- f.addBoolean(writeStableInfo);
- f.addBoolean(writeVolatileInfo);
- return f.hexDigestAndReset();
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
+ fp.addString(GUID);
+ fp.addBoolean(writeStableInfo);
+ fp.addBoolean(writeVolatileInfo);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java b/src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java
index d4a2c87d23..529cb4d668 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java
@@ -33,7 +33,6 @@ import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.Runfiles;
import com.google.devtools.build.lib.analysis.RunfilesProvider;
import com.google.devtools.build.lib.analysis.actions.AbstractFileWriteAction;
-import com.google.devtools.build.lib.analysis.actions.AbstractFileWriteAction.DeterministicWriter;
import com.google.devtools.build.lib.analysis.actions.ByteStringDeterministicWriter;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
@@ -49,7 +48,6 @@ import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.packages.NoSuchPackageException;
import com.google.devtools.build.lib.packages.NoSuchTargetException;
import com.google.devtools.build.lib.packages.Package;
-import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
import com.google.devtools.build.lib.packages.Target;
import com.google.devtools.build.lib.pkgcache.FilteringPolicies;
import com.google.devtools.build.lib.pkgcache.FilteringPolicy;
@@ -381,10 +379,8 @@ public class GenQuery implements RuleConfiguredTargetFactory {
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext) {
- Fingerprint f = new Fingerprint();
- f.addBytes(result.toByteArray());
- return f.hexDigestAndReset();
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
+ fp.addBytes(result.toByteArray());
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileAction.java
index 719caf20be..7fc16ddfe9 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileAction.java
@@ -127,15 +127,14 @@ public class JavaHeaderCompileAction extends SpawnAction {
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext) {
- Fingerprint f = new Fingerprint().addString(GUID);
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
+ fp.addString(GUID);
try {
- f.addString(super.computeKey(actionKeyContext));
- f.addStrings(directCommandLine.arguments());
+ super.computeKey(actionKeyContext, fp);
+ fp.addStrings(directCommandLine.arguments());
} catch (CommandLineExpansionException e) {
throw new AssertionError("JavaHeaderCompileAction command line expansion cannot fail");
}
- return f.hexDigestAndReset();
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/WriteBuildInfoPropertiesAction.java b/src/main/java/com/google/devtools/build/lib/rules/java/WriteBuildInfoPropertiesAction.java
index 96b68017d5..f23d4e8832 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/WriteBuildInfoPropertiesAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/WriteBuildInfoPropertiesAction.java
@@ -198,13 +198,11 @@ public class WriteBuildInfoPropertiesAction extends AbstractFileWriteAction {
}
@Override
- protected String computeKey(ActionKeyContext actionKeyContext) {
- Fingerprint f = new Fingerprint();
- f.addString(GUID);
- f.addString(keyTranslations.computeKey());
- f.addBoolean(includeVolatile);
- f.addBoolean(includeNonVolatile);
- return f.hexDigestAndReset();
+ protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
+ fp.addString(GUID);
+ fp.addString(keyTranslations.computeKey());
+ fp.addBoolean(includeVolatile);
+ fp.addBoolean(includeNonVolatile);
}
@Override