aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools')
-rw-r--r--src/main/java/com/google/devtools/build/lib/pkgcache/AbstractRecursivePackageProvider.java61
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/EnvironmentBackedRecursivePackageProvider.java38
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java27
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternFunction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java2
6 files changed, 73 insertions, 59 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/pkgcache/AbstractRecursivePackageProvider.java b/src/main/java/com/google/devtools/build/lib/pkgcache/AbstractRecursivePackageProvider.java
new file mode 100644
index 0000000000..4252f1d44c
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/pkgcache/AbstractRecursivePackageProvider.java
@@ -0,0 +1,61 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.google.devtools.build.lib.pkgcache;
+
+import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.cmdline.PackageIdentifier;
+import com.google.devtools.build.lib.events.ExtendedEventHandler;
+import com.google.devtools.build.lib.packages.NoSuchPackageException;
+import com.google.devtools.build.lib.packages.NoSuchTargetException;
+import com.google.devtools.build.lib.packages.Target;
+import com.google.devtools.build.lib.vfs.Path;
+
+/** Partial implementation of RecursivePackageProvider to provide some common methods. */
+public abstract class AbstractRecursivePackageProvider implements RecursivePackageProvider {
+
+ private final PathPackageLocator pkgPath;
+
+ protected AbstractRecursivePackageProvider(PathPackageLocator pkgPath) {
+ this.pkgPath = pkgPath;
+ }
+
+ @Override
+ public Path getBuildFileForPackage(PackageIdentifier packageName) {
+ try {
+ return pkgPath.getPackageBuildFile(packageName);
+ } catch (NoSuchPackageException e) {
+ return null;
+ }
+ }
+
+ public PathPackageLocator getPkgPath() {
+ return pkgPath;
+ }
+
+
+ @Override
+ public Target getTarget(ExtendedEventHandler eventHandler, Label label)
+ throws NoSuchPackageException, NoSuchTargetException, InterruptedException {
+ return getPackage(eventHandler, label.getPackageIdentifier()).getTarget(label.getName());
+ }
+
+ /**
+ * Indicates that a missing dependency is needed before target parsing can proceed. Currently
+ * used only in skyframe to notify the framework of missing dependencies. Caught by the compute
+ * method in {@link com.google.devtools.build.lib.skyframe.TargetPatternFunction}, which then
+ * returns null in accordance with the skyframe missing dependency policy.
+ */
+ public static class MissingDepException extends RuntimeException {
+ }
+}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/EnvironmentBackedRecursivePackageProvider.java b/src/main/java/com/google/devtools/build/lib/skyframe/EnvironmentBackedRecursivePackageProvider.java
index ccbc126098..6244cc45d3 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/EnvironmentBackedRecursivePackageProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/EnvironmentBackedRecursivePackageProvider.java
@@ -18,20 +18,17 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
-import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
import com.google.devtools.build.lib.cmdline.RepositoryName;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.ExtendedEventHandler;
import com.google.devtools.build.lib.packages.BuildFileContainsErrorsException;
import com.google.devtools.build.lib.packages.NoSuchPackageException;
-import com.google.devtools.build.lib.packages.NoSuchTargetException;
import com.google.devtools.build.lib.packages.Package;
-import com.google.devtools.build.lib.packages.Target;
+import com.google.devtools.build.lib.pkgcache.AbstractRecursivePackageProvider;
import com.google.devtools.build.lib.pkgcache.PathPackageLocator;
import com.google.devtools.build.lib.pkgcache.RecursivePackageProvider;
import com.google.devtools.build.lib.rules.repository.RepositoryDirectoryValue;
-import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.devtools.build.lib.vfs.Root;
import com.google.devtools.build.lib.vfs.RootedPath;
@@ -50,14 +47,14 @@ import java.util.Map;
* <p>This implementation never emits events through the {@link ExtendedEventHandler}s passed to its
* methods. Instead, it emits events through its environment's {@link Environment#getListener()}.
*/
-public final class EnvironmentBackedRecursivePackageProvider implements RecursivePackageProvider {
+public final class EnvironmentBackedRecursivePackageProvider
+ extends AbstractRecursivePackageProvider {
private final Environment env;
- private final PathPackageLocator pkgPath;
- public EnvironmentBackedRecursivePackageProvider(Environment env, PathPackageLocator pkgPath) {
+ EnvironmentBackedRecursivePackageProvider(Environment env, PathPackageLocator pkgPath) {
+ super(pkgPath);
this.env = env;
- this.pkgPath = pkgPath;
}
@Override
@@ -97,15 +94,6 @@ public final class EnvironmentBackedRecursivePackageProvider implements Recursiv
}
@Override
- public Path getBuildFileForPackage(PackageIdentifier packageName) {
- try {
- return pkgPath.getPackageBuildFile(packageName);
- } catch (NoSuchPackageException e) {
- return null;
- }
- }
-
- @Override
public boolean isPackage(ExtendedEventHandler eventHandler, PackageIdentifier packageId)
throws MissingDepException, InterruptedException {
SkyKey packageLookupKey = PackageLookupValue.key(packageId);
@@ -187,20 +175,4 @@ public final class EnvironmentBackedRecursivePackageProvider implements Recursiv
return packageNames;
}
-
- @Override
- public Target getTarget(ExtendedEventHandler eventHandler, Label label)
- throws NoSuchPackageException, NoSuchTargetException, MissingDepException,
- InterruptedException {
- return getPackage(eventHandler, label.getPackageIdentifier()).getTarget(label.getName());
- }
-
- /**
- * Indicates that a missing dependency is needed before target parsing can proceed. Currently
- * used only in skyframe to notify the framework of missing dependencies. Caught by the compute
- * method in {@link com.google.devtools.build.lib.skyframe.TargetPatternFunction}, which then
- * returns null in accordance with the skyframe missing dependency policy.
- */
- static class MissingDepException extends RuntimeException {
- }
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java b/src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java
index e926ffab8d..aa22453702 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java
@@ -26,7 +26,6 @@ import com.google.common.collect.Iterables;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import com.google.common.collect.Sets.SetView;
-import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
import com.google.devtools.build.lib.cmdline.RepositoryName;
import com.google.devtools.build.lib.cmdline.TargetPattern;
@@ -35,14 +34,12 @@ import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.ExtendedEventHandler;
import com.google.devtools.build.lib.packages.BuildFileNotFoundException;
import com.google.devtools.build.lib.packages.NoSuchPackageException;
-import com.google.devtools.build.lib.packages.NoSuchTargetException;
import com.google.devtools.build.lib.packages.Package;
-import com.google.devtools.build.lib.packages.Target;
+import com.google.devtools.build.lib.pkgcache.AbstractRecursivePackageProvider;
import com.google.devtools.build.lib.pkgcache.PathPackageLocator;
import com.google.devtools.build.lib.pkgcache.RecursivePackageProvider;
import com.google.devtools.build.lib.rules.repository.RepositoryDirectoryValue;
import com.google.devtools.build.lib.skyframe.TargetPatternValue.TargetPatternKey;
-import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.devtools.build.lib.vfs.Root;
import com.google.devtools.build.lib.vfs.RootedPath;
@@ -61,10 +58,9 @@ import java.util.logging.Logger;
* preloaded in {@code graph}.
*/
@ThreadSafe
-public final class GraphBackedRecursivePackageProvider implements RecursivePackageProvider {
+public final class GraphBackedRecursivePackageProvider extends AbstractRecursivePackageProvider {
private final WalkableGraph graph;
- private final PathPackageLocator pkgPath;
private final ImmutableList<TargetPatternKey> universeTargetPatternKeys;
private static final Logger logger = Logger.getLogger(
@@ -73,7 +69,7 @@ public final class GraphBackedRecursivePackageProvider implements RecursivePacka
public GraphBackedRecursivePackageProvider(WalkableGraph graph,
ImmutableList<TargetPatternKey> universeTargetPatternKeys,
PathPackageLocator pkgPath) {
- this.pkgPath = pkgPath;
+ super(pkgPath);
this.graph = Preconditions.checkNotNull(graph);
this.universeTargetPatternKeys = Preconditions.checkNotNull(universeTargetPatternKeys);
}
@@ -135,15 +131,6 @@ public final class GraphBackedRecursivePackageProvider implements RecursivePacka
}
@Override
- public Path getBuildFileForPackage(PackageIdentifier packageName) {
- try {
- return pkgPath.getPackageBuildFile(packageName);
- } catch (NoSuchPackageException e) {
- return null;
- }
- }
-
- @Override
public boolean isPackage(ExtendedEventHandler eventHandler, PackageIdentifier packageName)
throws InterruptedException {
SkyKey packageLookupKey = PackageLookupValue.key(packageName);
@@ -205,7 +192,7 @@ public final class GraphBackedRecursivePackageProvider implements RecursivePacka
List<Root> roots = new ArrayList<>();
if (repository.isMain()) {
- roots.addAll(pkgPath.getPathEntries());
+ roots.addAll(getPkgPath().getPathEntries());
} else {
RepositoryDirectoryValue repositoryValue =
(RepositoryDirectoryValue) graph.getValue(RepositoryDirectoryValue.key(repository));
@@ -297,12 +284,6 @@ public final class GraphBackedRecursivePackageProvider implements RecursivePacka
}
}
- @Override
- public Target getTarget(ExtendedEventHandler eventHandler, Label label)
- throws NoSuchPackageException, NoSuchTargetException, InterruptedException {
- return getPackage(eventHandler, label.getPackageIdentifier()).getTarget(label.getName());
- }
-
private static final class TraversalInfo {
private final RootedPath rootedDir;
// Set of blacklisted directories. The graph is assumed to be prepopulated with
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 0eab83286b..e8a59d958f 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
@@ -29,12 +29,12 @@ import com.google.devtools.build.lib.packages.NoSuchTargetException;
import com.google.devtools.build.lib.packages.NoSuchThingException;
import com.google.devtools.build.lib.packages.Package;
import com.google.devtools.build.lib.packages.Target;
+import com.google.devtools.build.lib.pkgcache.AbstractRecursivePackageProvider.MissingDepException;
import com.google.devtools.build.lib.pkgcache.FilteringPolicies;
import com.google.devtools.build.lib.pkgcache.FilteringPolicy;
import com.google.devtools.build.lib.pkgcache.PathPackageLocator;
import com.google.devtools.build.lib.pkgcache.TargetPatternResolverUtil;
import com.google.devtools.build.lib.rules.repository.RepositoryDirectoryValue;
-import com.google.devtools.build.lib.skyframe.EnvironmentBackedRecursivePackageProvider.MissingDepException;
import com.google.devtools.build.lib.util.BatchCallback;
import com.google.devtools.build.lib.util.BatchCallback.NullCallback;
import com.google.devtools.build.lib.vfs.PathFragment;
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternFunction.java
index b4a012fcdc..a590cf5b49 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternFunction.java
@@ -24,9 +24,9 @@ import com.google.devtools.build.lib.cmdline.TargetPattern;
import com.google.devtools.build.lib.collect.compacthashset.CompactHashSet;
import com.google.devtools.build.lib.concurrent.MultisetSemaphore;
import com.google.devtools.build.lib.packages.Target;
+import com.google.devtools.build.lib.pkgcache.AbstractRecursivePackageProvider.MissingDepException;
import com.google.devtools.build.lib.pkgcache.ParsingFailedEvent;
import com.google.devtools.build.lib.pkgcache.PathPackageLocator;
-import com.google.devtools.build.lib.skyframe.EnvironmentBackedRecursivePackageProvider.MissingDepException;
import com.google.devtools.build.lib.util.BatchCallback;
import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.devtools.build.skyframe.SkyFunction;
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java
index 2e0c286c27..0bca5204f5 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java
@@ -24,6 +24,7 @@ import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.packages.NoSuchPackageException;
import com.google.devtools.build.lib.packages.Target;
import com.google.devtools.build.lib.packages.TargetUtils;
+import com.google.devtools.build.lib.pkgcache.AbstractRecursivePackageProvider.MissingDepException;
import com.google.devtools.build.lib.pkgcache.CompileOneDependencyTransformer;
import com.google.devtools.build.lib.pkgcache.FilteringPolicies;
import com.google.devtools.build.lib.pkgcache.LoadingPhaseRunner;
@@ -32,7 +33,6 @@ import com.google.devtools.build.lib.pkgcache.PathPackageLocator;
import com.google.devtools.build.lib.pkgcache.TargetParsingCompleteEvent;
import com.google.devtools.build.lib.pkgcache.TargetProvider;
import com.google.devtools.build.lib.pkgcache.TestFilter;
-import com.google.devtools.build.lib.skyframe.EnvironmentBackedRecursivePackageProvider.MissingDepException;
import com.google.devtools.build.lib.skyframe.TargetPatternPhaseValue.TargetPatternPhaseKey;
import com.google.devtools.build.lib.skyframe.TargetPatternValue.TargetPatternKey;
import com.google.devtools.build.lib.skyframe.TargetPatternValue.TargetPatternSkyKeyOrException;