diff options
author | 2017-06-22 00:11:44 +0200 | |
---|---|---|
committer | 2017-06-22 12:45:45 +0200 | |
commit | 3c566c6697a3a0e574f0cc7da2da9fb16be35cb7 (patch) | |
tree | d8d0abf6d5ca5cac6d76a0a9f5059265159fb22a | |
parent | 21a01ff03f3dd817bd7bba52b9b3b8c81c49cde6 (diff) |
Use targets' labels' package identifier for query output=package
Subinclude targets' packages are the package containing the load
statement. Subinclude targets' labels are the bzl files they refer to.
The latter has the appropriate package to display for --output=package.
Fixes #3122.
PiperOrigin-RevId: 159750840
-rw-r--r-- | site/docs/query.html | 5 | ||||
-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 | 29 |
3 files changed, 35 insertions, 1 deletions
diff --git a/site/docs/query.html b/site/docs/query.html index 5eb8885357..86b4318e18 100644 --- a/site/docs/query.html +++ b/site/docs/query.html @@ -1225,6 +1225,11 @@ maxrank </p> <p> + 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> +<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. 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 3fb451adff..48923a3e83 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 @@ -344,7 +344,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.getLabel().getPackageIdentifier().toString()); } } diff --git a/src/test/shell/bazel/local_repository_test.sh b/src/test/shell/bazel/local_repository_test.sh index bc3a08a46e..d802af5d66 100755 --- a/src/test/shell/bazel/local_repository_test.sh +++ b/src/test/shell/bazel/local_repository_test.sh @@ -427,6 +427,35 @@ 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_repository_buildfiles_package_query() { + mkdir a b b/b b/c + echo "local_repository(name='b', path='b')" > WORKSPACE + echo "sh_library(name='a', deps=['@b//b'])" > a/BUILD + touch b/WORKSPACE b/c/BUILD + cat > b/b/BUILD <<EOF +load('//c:lib.bzl', 'x') +sh_library( + name = "b" +) +EOF + echo "x = 2" > b/c/lib.bzl + bazel query --output package "buildfiles(deps(//a))" >& $TEST_log || fail "query failed" + expect_log "a" + expect_log "@b//b" + expect_log "@b//c" +} + function test_warning() { local bar=$TEST_TMPDIR/bar rm -rf "$bar" |