diff options
author | ajmichael <ajmichael@google.com> | 2017-06-07 18:36:02 -0400 |
---|---|---|
committer | John Cater <jcater@google.com> | 2017-06-08 10:52:54 -0400 |
commit | 7dec00574aa91327693f6ba7e90bff5bc834253e (patch) | |
tree | ff3d3fae51601013ba8c9654421d69454db84b8c | |
parent | ff688bf287af54049f4f6d9b060fed1d2b649380 (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.html | 59 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/query2/output/OutputFormatter.java | 2 | ||||
-rwxr-xr-x | src/test/shell/bazel/local_repository_test.sh | 11 |
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&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" |