Make TargetPatternResolver#{isPackage, getTargetsInPackage} take a PackageIdentifier instead of a String.
This remarkably fiddly CL is a step towards making wildcards pattern work with remote repositories. I originally wanted to refactor findTargetsBeneathDirectory(), too, but it turns out that it's a much more complicated affair.
--
MOS_MIGRATED_REVID=103622420
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java
index b116595..a48117f 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java
@@ -160,20 +160,18 @@
}
@Override
- public ResolvedTargets<Void> getTargetsInPackage(String originalPattern, String packageName,
- boolean rulesOnly) throws TargetParsingException {
+ public ResolvedTargets<Void> getTargetsInPackage(String originalPattern,
+ PackageIdentifier packageIdentifier, boolean rulesOnly) throws TargetParsingException {
FilteringPolicy policy =
rulesOnly ? FilteringPolicies.RULES_ONLY : FilteringPolicies.NO_FILTER;
- return getTargetsInPackage(originalPattern, new PathFragment(packageName), policy);
+ return getTargetsInPackage(originalPattern, packageIdentifier, policy);
}
private ResolvedTargets<Void> getTargetsInPackage(String originalPattern,
- PathFragment packageNameFragment, FilteringPolicy policy)
+ PackageIdentifier packageIdentifier, FilteringPolicy policy)
throws TargetParsingException {
- TargetPatternResolverUtil.validatePatternPackage(originalPattern, packageNameFragment, this);
try {
- PackageIdentifier packageId = PackageIdentifier.createInDefaultRepo(packageNameFragment);
- Package pkg = packageProvider.getPackage(env.getListener(), packageId);
+ Package pkg = packageProvider.getPackage(env.getListener(), packageIdentifier);
ResolvedTargets<Target> packageTargets =
TargetPatternResolverUtil.resolvePackageTargets(pkg, policy);
ImmutableList.Builder<SkyKey> builder = ImmutableList.builder();
@@ -194,11 +192,8 @@
}
@Override
- public boolean isPackage(String packageName) {
- // TODO(bazel-team): this should get the whole PackageIdentifier. Using only the package name
- // makes it impossible to use wildcards to refer to targets in remote repositories.
- return packageProvider.isPackage(env.getListener(),
- PackageIdentifier.createInDefaultRepo(packageName));
+ public boolean isPackage(PackageIdentifier packageIdentifier) {
+ return packageProvider.isPackage(env.getListener(), packageIdentifier);
}
@Override