aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTarget.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java22
-rw-r--r--src/main/java/com/google/devtools/build/lib/query2/TransitionsOutputFormatterCallback.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationValue.java6
5 files changed, 28 insertions, 20 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTarget.java
index 2a0f751dd2..29f1506fd4 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTarget.java
@@ -56,7 +56,9 @@ public interface ConfiguredTarget extends TransitiveInfoCollection, ClassObject,
BuildConfiguration getConfiguration();
default String getConfigurationChecksum() {
- return getConfiguration() == null ? null : getConfiguration().checksum();
+ return getConfigurationKey() == null
+ ? null
+ : getConfigurationKey().getOptionsDiff().getChecksum();
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
index 26d6132b4f..51cbfbc261 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
@@ -55,7 +55,6 @@ import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
-import com.google.devtools.build.lib.util.Fingerprint;
import com.google.devtools.build.lib.util.OS;
import com.google.devtools.build.lib.util.RegexFilter;
import com.google.devtools.build.lib.vfs.Path;
@@ -1360,7 +1359,7 @@ public class BuildConfiguration {
globalMakeEnvBuilder.put("GENDIR", getGenfilesDirectory().getExecPath().getPathString());
globalMakeEnv = globalMakeEnvBuilder.build();
- checksum = computeChecksum(buildOptions);
+ checksum = buildOptions.computeChecksum();
hashCode = computeHashCode();
ImmutableSet.Builder<String> reservedActionMnemonics = ImmutableSet.builder();
@@ -1371,10 +1370,6 @@ public class BuildConfiguration {
this.buildEventSupplier = Suppliers.memoize(this::createBuildEvent);
}
- public static String computeChecksum(BuildOptions buildOptions) {
- return Fingerprint.md5Digest(buildOptions.computeCacheKey());
- }
-
/**
* Returns a copy of this configuration only including the given fragments (which the current
* configuration is assumed to have).
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java
index d84db4ce32..8e7c7675ab 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java
@@ -199,6 +199,10 @@ public final class BuildOptions implements Cloneable, Serializable {
return keyBuilder.toString();
}
+ public String computeChecksum() {
+ return Fingerprint.md5Digest(computeCacheKey());
+ }
+
/**
* String representation of build options.
*/
@@ -417,7 +421,7 @@ public final class BuildOptions implements Cloneable, Serializable {
BuildOptions first, BuildOptions second) {
OptionsDiff diff = diff(first, second);
if (diff.areSame()) {
- return OptionsDiffForReconstruction.getEmpty(first.fingerprint);
+ return OptionsDiffForReconstruction.getEmpty(first.fingerprint, second.computeChecksum());
}
HashMap<Class<? extends FragmentOptions>, Map<String, Object>> differingOptions =
new HashMap<>(diff.differingOptions.keySet().size());
@@ -445,7 +449,8 @@ public final class BuildOptions implements Cloneable, Serializable {
differingOptions,
ImmutableSet.copyOf(diff.extraFirstFragments),
ImmutableList.copyOf(diff.extraSecondFragments),
- first.fingerprint);
+ first.fingerprint,
+ second.computeChecksum());
}
/**
@@ -543,22 +548,25 @@ public final class BuildOptions implements Cloneable, Serializable {
private final ImmutableSet<Class<? extends FragmentOptions>> extraFirstFragmentClasses;
private final ImmutableList<FragmentOptions> extraSecondFragments;
private final byte[] baseFingerprint;
+ private final String checksum;
@AutoCodec.VisibleForSerialization
OptionsDiffForReconstruction(
Map<Class<? extends FragmentOptions>, Map<String, Object>> differingOptions,
ImmutableSet<Class<? extends FragmentOptions>> extraFirstFragmentClasses,
ImmutableList<FragmentOptions> extraSecondFragments,
- byte[] baseFingerprint) {
+ byte[] baseFingerprint,
+ String checksum) {
this.differingOptions = differingOptions;
this.extraFirstFragmentClasses = extraFirstFragmentClasses;
this.extraSecondFragments = extraSecondFragments;
this.baseFingerprint = baseFingerprint;
+ this.checksum = checksum;
}
- private static OptionsDiffForReconstruction getEmpty(byte[] baseFingerprint) {
+ private static OptionsDiffForReconstruction getEmpty(byte[] baseFingerprint, String checksum) {
return new OptionsDiffForReconstruction(
- ImmutableMap.of(), ImmutableSet.of(), ImmutableList.of(), baseFingerprint);
+ ImmutableMap.of(), ImmutableSet.of(), ImmutableList.of(), baseFingerprint, checksum);
}
@Nullable
@@ -583,6 +591,10 @@ public final class BuildOptions implements Cloneable, Serializable {
return newOptions;
}
+ public String getChecksum() {
+ return checksum;
+ }
+
private boolean isEmpty() {
return differingOptions.isEmpty()
&& extraFirstFragmentClasses.isEmpty()
diff --git a/src/main/java/com/google/devtools/build/lib/query2/TransitionsOutputFormatterCallback.java b/src/main/java/com/google/devtools/build/lib/query2/TransitionsOutputFormatterCallback.java
index a0a83e43cb..5d5e8e628f 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/TransitionsOutputFormatterCallback.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/TransitionsOutputFormatterCallback.java
@@ -170,10 +170,11 @@ public class TransitionsOutputFormatterCallback extends CqueryThreadsafeCallback
.concat(
toOptions
.stream()
- .map(options -> {
- String checksum = BuildConfiguration.computeChecksum(options);
- return checksum.equals(hostConfigurationChecksum) ? "HOST" : checksum;
- })
+ .map(
+ options -> {
+ String checksum = options.computeChecksum();
+ return checksum.equals(hostConfigurationChecksum) ? "HOST" : checksum;
+ })
.collect(Collectors.joining(", ")))
.concat(")"));
if (verbosity == CqueryOptions.Transitions.LITE) {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationValue.java
index 7bc792a62e..b648d100b8 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationValue.java
@@ -26,7 +26,6 @@ import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
import com.google.devtools.build.lib.skyframe.serialization.SerializationContext;
import com.google.devtools.build.lib.skyframe.serialization.SerializationException;
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.skyframe.serialization.strings.StringCodecs;
import com.google.devtools.build.skyframe.SkyFunctionName;
import com.google.devtools.build.skyframe.SkyKey;
@@ -78,7 +77,6 @@ public class BuildConfigurationValue implements SkyValue {
}
/** {@link SkyKey} for {@link BuildConfigurationValue}. */
- @VisibleForSerialization
public static final class Key implements SkyKey, Serializable {
private static final Interner<Key> keyInterner = BlazeInterners.newWeakInterner();
@@ -92,7 +90,7 @@ public class BuildConfigurationValue implements SkyValue {
return keyInterner.intern(new Key(fragments, optionsDiff));
}
- Key(FragmentClassSet fragments, BuildOptions.OptionsDiffForReconstruction optionsDiff) {
+ private Key(FragmentClassSet fragments, BuildOptions.OptionsDiffForReconstruction optionsDiff) {
this.fragments = fragments;
this.optionsDiff = optionsDiff;
}
@@ -102,7 +100,7 @@ public class BuildConfigurationValue implements SkyValue {
return fragments.fragmentClasses();
}
- BuildOptions.OptionsDiffForReconstruction getOptionsDiff() {
+ public BuildOptions.OptionsDiffForReconstruction getOptionsDiff() {
return optionsDiff;
}