aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar ccalvarin <ccalvarin@google.com>2017-04-05 15:18:51 +0000
committerGravatar Marcel Hlopko <hlopko@google.com>2017-04-06 11:00:01 +0200
commit36109fc44c884e14589b07a7c1d36e33076ca2e5 (patch)
treeb5ec605b72a5e99e77d5a70ad1172766bf8076b2 /src/main/java/com/google/devtools/build/lib
parentaf64b3e95dca1819ad8e661212d41b0356c7f891 (diff)
Log the expansion step in invocation policy.
This is only useful for debugging invocation policy itself, not as much for understanding its effect on a user command line, so this log statement will only occur at log levels fine and higher. PiperOrigin-RevId: 152259362
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-rw-r--r--src/main/java/com/google/devtools/build/lib/flags/InvocationPolicyEnforcer.java21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/flags/InvocationPolicyEnforcer.java b/src/main/java/com/google/devtools/build/lib/flags/InvocationPolicyEnforcer.java
index 7e512c1b9c..a01ecd7077 100644
--- a/src/main/java/com/google/devtools/build/lib/flags/InvocationPolicyEnforcer.java
+++ b/src/main/java/com/google/devtools/build/lib/flags/InvocationPolicyEnforcer.java
@@ -15,6 +15,7 @@ package com.google.devtools.build.lib.flags;
import com.google.common.base.Function;
import com.google.common.base.Functions;
+import com.google.common.base.Joiner;
import com.google.common.base.Verify;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
@@ -235,6 +236,26 @@ public final class InvocationPolicyEnforcer {
.build();
boolean isExpansion = !desc.getExpansions().isEmpty();
+ if (!subflags.isEmpty() && log.isLoggable(Level.FINE)) {
+ // Log the expansion. Since this is logged regardless of user provided command line, it is
+ // only really useful for understanding the invocation policy itself. Most of the time,
+ // invocation policy does not change, so this can be a log level fine.
+ List<String> subflagNames = new ArrayList<>(subflags.size());
+ for (OptionValueDescription subflag : subflags) {
+ subflagNames.add("--" + subflag.getName());
+ }
+
+ log.logp(Level.FINE,
+ "InvocationPolicyEnforcer",
+ "expandPolicy",
+ String.format(
+ "Expanding %s on option %s to its %s: %s.",
+ originalPolicy.getOperationCase(),
+ originalPolicy.getFlagName(),
+ isExpansion ? "expansions" : "implied flags",
+ Joiner.on("; ").join(subflagNames)));
+ }
+
// Create a flag policy for the child that looks like the parent's policy "transferred" to its
// child. Note that this only makes sense for SetValue, when setting an expansion flag, or
// UseDefault, when preventing it from being set.