aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar ajmichael <ajmichael@google.com>2017-06-07 18:36:02 -0400
committerGravatar John Cater <jcater@google.com>2017-06-08 10:52:54 -0400
commit7dec00574aa91327693f6ba7e90bff5bc834253e (patch)
treeff3d3fae51601013ba8c9654421d69454db84b8c
parentff688bf287af54049f4f6d9b060fed1d2b649380 (diff)
Make PackageOutputFormatter use PackageIdentifier instead of package name.
Fixes #3122. RELNOTES: bazel query --output package now displays packages from external repository with the format "@reponame//package". Packages in the main repository continue to have the format "package". PiperOrigin-RevId: 158327492
-rw-r--r--site/docs/query.html59
-rw-r--r--src/main/java/com/google/devtools/build/lib/query2/output/OutputFormatter.java2
-rwxr-xr-xsrc/test/shell/bazel/local_repository_test.sh11
3 files changed, 15 insertions, 57 deletions
diff --git a/site/docs/query.html b/site/docs/query.html
index dbe80e4846..7c30dfbfab 100644
--- a/site/docs/query.html
+++ b/site/docs/query.html
@@ -1231,63 +1231,10 @@ maxrank
</p>
<p>
- In conjunction with the <code>deps(...)</code> query, this output
- option can be used to find the set of packages that must be checked
- out in order to build a given set of targets.
+ Packages in external repositories are formatted as
+ <code>@repo//foo/bar</code> while packages in the main repository are
+ formatted as <code>foo/bar</code>.
</p>
-
-<h3 id="output-graph">Display a graph of the result</h3>
-<pre>--output graph</pre>
-<p>
- This option causes the query result to be printed as a directed
- graph in the popular AT&amp;T GraphViz format. Typically the
- result is saved to a file, such as <code>.png</code> or <code>.svg</code>.
- (If the <code>dot</code> program is not installed on your workstation, you
- can install it using the command <code>sudo apt-get install graphviz</code>.)
- See the example section below for a sample invocation.
-</p>
-
-<p>
- This output format is particularly useful for <code>allpath</code>,
- <code>deps</code>, or <code>rdeps</code> queries, where the result
- includes a <em>set of paths</em> that cannot be easily visualized when
- rendered in a linear form, such as with <code>--output label</code>.
-</p>
-
-<p>
- By default, the graph is rendered in a <em>factored</em> form. That is,
- topologically-equivalent nodes are merged together into a single
- node with multiple labels. This makes the graph more compact
- and readable, because typical result graphs contain highly
- repetitive patterns. For example, a <code>java_library</code> rule
- may depend on hundreds of Java source files all generated by the
- same <code>genrule</code>; in the factored graph, all these files
- are represented by a single node. This behavior may be disabled
- with the <code>--nograph:factored</code> option.
-</p>
-
-<h4><code>--graph:node_limit <var>n</var></code></h4>
-<p>
- The option specifies the maximum length of the label string for a
- graph node in the output. Longer labels will be truncated; -1
- disables truncation. Due to the factored form in which graphs are
- usually printed, the node labels may be very long. GraphViz cannot
- handle labels exceeding 1024 characters, which is the default value
- of this option. This option has no effect unless
- <code>--output=graph</code> is being used.
-</p>
-
-<h4><code>--[no]graph:factored</code></h4>
-<p>
- By default, graphs are displayed in factored form, as explained
- <a href='#output-graph'>above</a>.
- When <code>--nograph:factored</code> is specified, graphs are
- printed without factoring. This makes visualization using GraphViz
- impractical, but the simpler format may ease processing by other
- tools (e.g. grep). This option has no effect
- unless <code>--output=graph</code> is being used.
-</p>
-
<h3 id="output-xml">XML</h3>
<pre>--output xml</pre>
<p>
diff --git a/src/main/java/com/google/devtools/build/lib/query2/output/OutputFormatter.java b/src/main/java/com/google/devtools/build/lib/query2/output/OutputFormatter.java
index 2fa79b68a2..78231f9d8c 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/output/OutputFormatter.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/output/OutputFormatter.java
@@ -331,7 +331,7 @@ public abstract class OutputFormatter implements Serializable {
public void processOutput(Iterable<Target> partialResult) {
for (Target target : partialResult) {
- packageNames.add(target.getLabel().getPackageName());
+ packageNames.add(target.getPackage().getPackageIdentifier().toString());
}
}
diff --git a/src/test/shell/bazel/local_repository_test.sh b/src/test/shell/bazel/local_repository_test.sh
index bc3a08a46e..6e9e8538f7 100755
--- a/src/test/shell/bazel/local_repository_test.sh
+++ b/src/test/shell/bazel/local_repository_test.sh
@@ -427,6 +427,17 @@ EOF
expect_log "//external:my_repo"
}
+function test_repository_package_query() {
+ mkdir a b b/b
+ echo "local_repository(name='b', path='b')" > WORKSPACE
+ echo "sh_library(name='a', deps=['@b//b'])" > a/BUILD
+ touch b/WORKSPACE
+ echo "sh_library(name='b')" > b/b/BUILD
+ bazel query --output package "deps(//a)" >& $TEST_log || fail "query failed"
+ expect_log "a"
+ expect_log "@b//b"
+}
+
function test_warning() {
local bar=$TEST_TMPDIR/bar
rm -rf "$bar"