Skip to content

Commit c341e14

Browse files
committed
Use getDisplayForm in more output formatters
1 parent 730b54e commit c341e14

File tree

10 files changed

+40
-17
lines changed

10 files changed

+40
-17
lines changed

src/main/java/com/google/devtools/build/lib/query2/cquery/ConfiguredTargetQueryEnvironment.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,8 @@ private static ImmutableMap<String, BuildConfigurationValue> getTransitiveConfig
255255
out,
256256
skyframeExecutor,
257257
accessor,
258-
kct -> getFwdDeps(ImmutableList.of(kct))),
258+
kct -> getFwdDeps(ImmutableList.of(kct)),
259+
getMainRepoMapping()),
259260
new StarlarkOutputFormatterCallback(
260261
eventHandler, cqueryOptions, out, skyframeExecutor, accessor),
261262
new FilesOutputFormatterCallback(

src/main/java/com/google/devtools/build/lib/query2/cquery/GraphOutputFormatterCallback.java

+12-4
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import com.google.common.collect.ImmutableSet;
1818
import com.google.devtools.build.lib.cmdline.Label;
19+
import com.google.devtools.build.lib.cmdline.RepositoryMapping;
1920
import com.google.devtools.build.lib.events.ExtendedEventHandler;
2021
import com.google.devtools.build.lib.graph.Digraph;
2122
import com.google.devtools.build.lib.graph.Node;
@@ -65,12 +66,14 @@ Iterable<KeyedConfiguredTarget> getDirectDeps(KeyedConfiguredTarget target)
6566
};
6667

6768
@Override
68-
public String getLabel(Node<KeyedConfiguredTarget> node) {
69+
public String getLabel(Node<KeyedConfiguredTarget> node,
70+
RepositoryMapping mainRepositoryMapping) {
6971
// Node payloads are ConfiguredTargets. Output node labels are target labels + config
7072
// hashes.
7173
KeyedConfiguredTarget kct = node.getLabel();
7274
return String.format(
73-
"%s (%s)", kct.getLabel(), shortId(getConfiguration(kct.getConfigurationKey())));
75+
"%s (%s)", kct.getLabel().getDisplayForm(mainRepositoryMapping),
76+
shortId(getConfiguration(kct.getConfigurationKey())));
7477
}
7578

7679
@Override
@@ -79,15 +82,19 @@ public Comparator<KeyedConfiguredTarget> comparator() {
7982
}
8083
};
8184

85+
private final RepositoryMapping mainRepoMapping;
86+
8287
GraphOutputFormatterCallback(
8388
ExtendedEventHandler eventHandler,
8489
CqueryOptions options,
8590
OutputStream out,
8691
SkyframeExecutor skyframeExecutor,
8792
TargetAccessor<KeyedConfiguredTarget> accessor,
88-
DepsRetriever depsRetriever) {
93+
DepsRetriever depsRetriever,
94+
RepositoryMapping mainRepoMapping) {
8995
super(eventHandler, options, out, skyframeExecutor, accessor, /*uniquifyResults=*/ false);
9096
this.depsRetriever = depsRetriever;
97+
this.mainRepoMapping = mainRepoMapping;
9198
}
9299

93100
@Override
@@ -117,7 +124,8 @@ public void processOutput(Iterable<KeyedConfiguredTarget> partialResult)
117124
// select() conditions don't matter for cquery because cquery operates post-analysis
118125
// phase, when select()s have been resolved and removed from the graph.
119126
/*maxConditionalEdges=*/ 0,
120-
options.graphFactored);
127+
options.graphFactored,
128+
mainRepoMapping);
121129
graphWriter.write(graph, /*conditionalEdges=*/ null, outputStream);
122130
}
123131
}

src/main/java/com/google/devtools/build/lib/query2/query/output/GraphOutputFormatter.java

+5-3
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
package com.google.devtools.build.lib.query2.query.output;
1515

1616
import com.google.common.hash.HashFunction;
17+
import com.google.devtools.build.lib.cmdline.RepositoryMapping;
1718
import com.google.devtools.build.lib.events.EventHandler;
1819
import com.google.devtools.build.lib.graph.Digraph;
1920
import com.google.devtools.build.lib.graph.Node;
@@ -41,9 +42,9 @@ public String getName() {
4142
private final TargetOrdering targetOrdering = new FormatUtils.TargetOrdering();
4243

4344
@Override
44-
public String getLabel(Node<Target> node) {
45+
public String getLabel(Node<Target> node, RepositoryMapping mainRepositoryMapping) {
4546
// Node payloads are Targets. Output node labels are target labels.
46-
return node.getLabel().getLabel().toString();
47+
return node.getLabel().getLabel().getDisplayForm(mainRepositoryMapping);
4748
}
4849

4950
@Override
@@ -69,7 +70,8 @@ public void output(
6970
sortLabels,
7071
options.graphNodeStringLimit,
7172
options.graphConditionalEdgesLimit,
72-
options.graphFactored);
73+
options.graphFactored,
74+
env.getMainRepoMapping());
7375
graphWriter.write(result, new ConditionalEdges(result), out);
7476
}
7577
}

src/main/java/com/google/devtools/build/lib/query2/query/output/GraphOutputWriter.java

+8-4
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.google.common.collect.Iterables;
2020
import com.google.common.collect.Ordering;
2121
import com.google.devtools.build.lib.cmdline.Label;
22+
import com.google.devtools.build.lib.cmdline.RepositoryMapping;
2223
import com.google.devtools.build.lib.collect.CollectionUtils;
2324
import com.google.devtools.build.lib.collect.EquivalenceRelation;
2425
import com.google.devtools.build.lib.graph.Digraph;
@@ -54,7 +55,7 @@ public interface NodeReader<T> {
5455
* <p>This is not the same as a build {@link Label}. This is just the text associated with a
5556
* node in a GraphViz graph.
5657
*/
57-
String getLabel(Node<T> node);
58+
String getLabel(Node<T> node, RepositoryMapping mainRepositoryMapping);
5859

5960
/** Returns a comparator for the build graph nodes that form the payloads of GraphViz nodes. */
6061
Comparator<T> comparator();
@@ -67,6 +68,7 @@ public interface NodeReader<T> {
6768
private final int maxConditionalEdges;
6869
private final boolean mergeEquivalentNodes;
6970
private final Ordering<Node<T>> nodeComparator;
71+
private final RepositoryMapping mainRepoMapping;
7072

7173
private static final int RESERVED_LABEL_CHARS = "\\n...and 9999999 more items".length();
7274

@@ -90,13 +92,15 @@ public GraphOutputWriter(
9092
boolean sortLabels,
9193
int maxLabelSize,
9294
int maxConditionalEdges,
93-
boolean mergeEquivalentNodes) {
95+
boolean mergeEquivalentNodes,
96+
RepositoryMapping mainRepoMapping) {
9497
this.nodeReader = nodeReader;
9598
this.lineTerminator = lineTerminator;
9699
this.sortLabels = sortLabels;
97100
this.maxLabelSize = maxLabelSize;
98101
this.maxConditionalEdges = maxConditionalEdges;
99102
this.mergeEquivalentNodes = mergeEquivalentNodes;
103+
this.mainRepoMapping = mainRepoMapping;
100104
nodeComparator = Ordering.from(nodeReader.comparator()).onResultOf(Node::getLabel);
101105
}
102106

@@ -120,7 +124,7 @@ public void write(
120124
private void outputUnfactored(
121125
Digraph<T> graph, @Nullable ConditionalEdges conditionalEdges, PrintWriter out) {
122126
graph.visitNodesBeforeEdges(
123-
new DotOutputVisitor<T>(out, nodeReader::getLabel) {
127+
new DotOutputVisitor<T>(out, node -> nodeReader.getLabel(node, mainRepoMapping)) {
124128
@Override
125129
public void beginVisit() {
126130
super.beginVisit();
@@ -180,7 +184,7 @@ private void outputFactored(
180184
StringBuilder buf = new StringBuilder();
181185
int count = 0;
182186
for (Node<T> eqNode : node.getLabel()) {
183-
String labelString = nodeReader.getLabel(eqNode);
187+
String labelString = nodeReader.getLabel(eqNode, mainRepoMapping);
184188
if (!firstItem) {
185189
buf.append("\\n");
186190

src/main/java/com/google/devtools/build/lib/query2/query/output/LocationOutputFormatter.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public void processOutput(Iterable<Target> partialResult) throws IOException {
8787
.append(": ")
8888
.append(target.getTargetKind())
8989
.append(" ")
90-
.append(target.getLabel().getCanonicalForm())
90+
.append(target.getLabel().getDisplayForm(env.getMainRepoMapping()))
9191
.append(lineTerm);
9292
}
9393
}

src/main/java/com/google/devtools/build/lib/query2/query/output/MaxrankOutputFormatter.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ int rank(Node<Set<Node<Target>>> node) {
104104
final String lineTerm = options.getLineTerminator();
105105
PrintStream printStream = new PrintStream(out);
106106
for (RankAndLabel item : output) {
107-
printStream.print(item + lineTerm);
107+
printStream.print(item.toDisplayString(env.getMainRepoMapping()) + lineTerm);
108108
}
109109
flushAndCheckError(printStream);
110110
}

src/main/java/com/google/devtools/build/lib/query2/query/output/MinrankOutputFormatter.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ public void output(
110110
if (outputToOrder != null) {
111111
Collections.sort(outputToOrder);
112112
for (RankAndLabel item : outputToOrder) {
113-
printStream.print(item + lineTerm);
113+
printStream.print(item.toDisplayString(env.getMainRepoMapping()) + lineTerm);
114114
}
115115
}
116116

src/main/java/com/google/devtools/build/lib/query2/query/output/RankAndLabel.java

+6-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
package com.google.devtools.build.lib.query2.query.output;
1616

1717
import com.google.devtools.build.lib.cmdline.Label;
18+
import com.google.devtools.build.lib.cmdline.RepositoryMapping;
1819

1920
class RankAndLabel implements Comparable<RankAndLabel> {
2021
private final int rank;
@@ -39,6 +40,10 @@ public int compareTo(RankAndLabel o) {
3940

4041
@Override
4142
public String toString() {
42-
return rank + " " + label.getCanonicalForm();
43+
return toDisplayString(RepositoryMapping.ALWAYS_FALLBACK);
44+
}
45+
46+
public String toDisplayString(RepositoryMapping mainRepoMapping) {
47+
return rank + " " + label.getDisplayForm(mainRepoMapping);
4348
}
4449
}

src/test/java/com/google/devtools/build/lib/query2/cquery/BUILD

+1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ java_test(
3939
deps = [
4040
":configured_target_query_helper",
4141
":configured_target_query_test",
42+
"//src/main/java/com/google/devtools/build/lib/cmdline",
4243
"//src/main/java/com/google/devtools/build/lib/events",
4344
"//src/main/java/com/google/devtools/build/lib/query2",
4445
"//src/main/java/com/google/devtools/build/lib/query2/engine",

src/test/java/com/google/devtools/build/lib/query2/cquery/GraphOutputFormatterCallbackTest.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import com.google.common.collect.ImmutableList;
1919
import com.google.common.eventbus.EventBus;
20+
import com.google.devtools.build.lib.cmdline.RepositoryMapping;
2021
import com.google.devtools.build.lib.events.Event;
2122
import com.google.devtools.build.lib.events.Reporter;
2223
import com.google.devtools.build.lib.query2.PostAnalysisQueryEnvironment;
@@ -80,7 +81,8 @@ private List<String> getOutput(String queryExpression) throws Exception {
8081
new PrintStream(output),
8182
getHelper().getSkyframeExecutor(),
8283
env.getAccessor(),
83-
ct -> env.getFwdDeps(ImmutableList.of(ct)));
84+
ct -> env.getFwdDeps(ImmutableList.of(ct)),
85+
RepositoryMapping.ALWAYS_FALLBACK);
8486
env.evaluateQuery(expression, callback);
8587
return Arrays.asList(output.toString().split(System.lineSeparator()));
8688
}

0 commit comments

Comments
 (0)