aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build
diff options
context:
space:
mode:
authorGravatar mjhalupka <mjhalupka@google.com>2018-02-08 13:29:30 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-08 13:31:21 -0800
commit0ab46f0dd95f735056add4dd8a90a76944b81d00 (patch)
tree3597993d68d65ce10c68b5acbfc772599587704a /src/main/java/com/google/devtools/build
parentc7f613b0ede0efd977065d1fc190d2a67eb3148e (diff)
Remove references to getTarget(). Requires threading through an
ExtendedEventHandler so we can get the target via the package manager during rule dumps. PiperOrigin-RevId: 185042522
Diffstat (limited to 'src/main/java/com/google/devtools/build')
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/commands/DumpCommand.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java2
3 files changed, 23 insertions, 6 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/DumpCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/DumpCommand.java
index 6f92ae0a06..c4b1e5f301 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/DumpCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/DumpCommand.java
@@ -17,6 +17,7 @@ package com.google.devtools.build.lib.runtime.commands;
import static java.util.stream.Collectors.toList;
import com.google.devtools.build.lib.events.Event;
+import com.google.devtools.build.lib.events.ExtendedEventHandler;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.PackageFactory;
import com.google.devtools.build.lib.packages.RuleClass;
@@ -222,7 +223,7 @@ public class DumpCommand implements BlazeCommand {
}
if (dumpOptions.dumpRules) {
- dumpRuleStats(env.getBlazeWorkspace(), env.getSkyframeExecutor(), out);
+ dumpRuleStats(env.getReporter(), env.getBlazeWorkspace(), env.getSkyframeExecutor(), out);
out.println();
}
@@ -290,8 +291,12 @@ public class DumpCommand implements BlazeCommand {
}
}
- private void dumpRuleStats(BlazeWorkspace workspace, SkyframeExecutor executor, PrintStream out) {
- List<RuleStat> ruleStats = executor.getRuleStats();
+ private void dumpRuleStats(
+ ExtendedEventHandler eventHandler,
+ BlazeWorkspace workspace,
+ SkyframeExecutor executor,
+ PrintStream out) {
+ List<RuleStat> ruleStats = executor.getRuleStats(eventHandler);
if (ruleStats.isEmpty()) {
out.print("No rules in Blaze server, please run a build command first.");
return;
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java
index d32e94602f..20b05f0d46 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java
@@ -41,8 +41,11 @@ import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.events.ExtendedEventHandler;
import com.google.devtools.build.lib.packages.AspectClass;
import com.google.devtools.build.lib.packages.BuildFileName;
+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.PackageFactory;
+import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.packages.RuleClass;
import com.google.devtools.build.lib.packages.SkylarkSemanticsOptions;
import com.google.devtools.build.lib.pkgcache.PackageCacheOptions;
@@ -692,7 +695,7 @@ public final class SequencedSkyframeExecutor extends SkyframeExecutor {
}
@Override
- public List<RuleStat> getRuleStats() {
+ public List<RuleStat> getRuleStats(ExtendedEventHandler eventHandler) {
Map<String, RuleStat> ruleStats = new HashMap<>();
for (Map.Entry<SkyKey, ? extends NodeEntry> skyKeyAndNodeEntry :
memoizingEvaluator.getGraphMap().entrySet()) {
@@ -707,8 +710,17 @@ public final class SequencedSkyframeExecutor extends SkyframeExecutor {
ConfiguredTargetValue ctValue = (ConfiguredTargetValue) entry.getValue();
ConfiguredTarget configuredTarget = ctValue.getConfiguredTarget();
if (configuredTarget instanceof RuleConfiguredTarget) {
+
+ Rule rule;
+ try {
+ rule =
+ (Rule) getPackageManager().getTarget(eventHandler, configuredTarget.getLabel());
+ } catch (NoSuchPackageException | NoSuchTargetException | InterruptedException e) {
+ throw new IllegalStateException(
+ "Failed to get Rule target from package when calculating stats.", e);
+ }
RuleConfiguredTarget ruleConfiguredTarget = (RuleConfiguredTarget) configuredTarget;
- RuleClass ruleClass = ruleConfiguredTarget.getTarget().getRuleClassObject();
+ RuleClass ruleClass = rule.getRuleClassObject();
RuleStat ruleStat =
ruleStats.computeIfAbsent(
ruleClass.getKey(), k -> new RuleStat(k, ruleClass.getName(), true));
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
index 4cc660209a..5677caad8d 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
@@ -686,7 +686,7 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
}
/** Computes statistics on heap-resident rules and aspects. */
- public abstract List<RuleStat> getRuleStats();
+ public abstract List<RuleStat> getRuleStats(ExtendedEventHandler eventHandler);
/**
* Removes ConfigurationFragmentValues from the cache.