diff --git a/src/main/java/com/google/devtools/build/lib/query2/PostAnalysisQueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/query2/PostAnalysisQueryEnvironment.java index a9815fdd5d96ab..8480ea29e9d3b3 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/PostAnalysisQueryEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/query2/PostAnalysisQueryEnvironment.java @@ -32,6 +32,7 @@ import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget; import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.cmdline.TargetParsingException; import com.google.devtools.build.lib.cmdline.TargetPattern; import com.google.devtools.build.lib.collect.compacthashset.CompactHashSet; @@ -253,12 +254,12 @@ private boolean isAliasConfiguredTarget(ConfiguredTargetKey key) throws Interrup ((ConfiguredTargetValue) getConfiguredTargetValue(key)).getConfiguredTarget()); } - public InterruptibleSupplier> - getIgnoredPackagePrefixesPathFragments() { + public InterruptibleSupplier> getIgnoredPackagePrefixesPathFragments( + RepositoryName repositoryName) { return () -> { IgnoredPackagePrefixesValue ignoredPackagePrefixesValue = (IgnoredPackagePrefixesValue) - walkableGraphSupplier.get().getValue(IgnoredPackagePrefixesValue.key()); + walkableGraphSupplier.get().getValue(IgnoredPackagePrefixesValue.key(repositoryName)); return ignoredPackagePrefixesValue == null ? ImmutableSet.of() : ignoredPackagePrefixesValue.getPatterns(); diff --git a/src/main/java/com/google/devtools/build/lib/query2/aquery/ActionGraphQueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/query2/aquery/ActionGraphQueryEnvironment.java index 72e183cf6a9fa2..f1aaabb9ef2c4c 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/aquery/ActionGraphQueryEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/query2/aquery/ActionGraphQueryEnvironment.java @@ -312,7 +312,7 @@ public QueryTaskFuture getTargetsMatchingPattern( Futures.catchingAsync( patternToEval.evalAdaptedForAsync( resolver, - getIgnoredPackagePrefixesPathFragments(), + getIgnoredPackagePrefixesPathFragments(patternToEval.getRepository()), /* excludedSubdirectories= */ ImmutableSet.of(), (Callback) partialResult -> { diff --git a/src/main/java/com/google/devtools/build/lib/query2/cquery/ConfiguredTargetQueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/query2/cquery/ConfiguredTargetQueryEnvironment.java index 8a4f21d64d87e7..0de8a1f5e0a534 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/cquery/ConfiguredTargetQueryEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/query2/cquery/ConfiguredTargetQueryEnvironment.java @@ -274,7 +274,7 @@ public QueryTaskFuture getTargetsMatchingPattern( Futures.catchingAsync( patternToEval.evalAdaptedForAsync( resolver, - getIgnoredPackagePrefixesPathFragments(), + getIgnoredPackagePrefixesPathFragments(patternToEval.getRepository()), /* excludedSubdirectories= */ ImmutableSet.of(), (Callback) partialResult -> { diff --git a/src/test/shell/integration/configured_query_test.sh b/src/test/shell/integration/configured_query_test.sh index 91961040d10371..471948813cdc0a 100755 --- a/src/test/shell/integration/configured_query_test.sh +++ b/src/test/shell/integration/configured_query_test.sh @@ -1435,6 +1435,36 @@ EOF expect_log "@repo//:japanese" } +function test_external_repo_scope_with_bazelignore() { + if [ "${PRODUCT_NAME}" != "bazel" ]; then + # Tests of external repositories only work under bazel. + return 0 + fi + + local -r dir=$FUNCNAME + + mkdir -p $dir/repo + touch $dir/repo/REPO.bazel + cat > $dir/repo/BUILD < $dir/main/WORKSPACE < $dir/main/.bazelignore + + cd $dir/main + bazel cquery @repo//... &>"$TEST_log" || fail "Unexpected failure" + expect_not_log "no targets found beneath" + expect_log "@repo//:maple" + expect_log "@repo//:japanese" +} + function test_test_arg_in_bazelrc() { local -r pkg=$FUNCNAME mkdir -p $pkg