aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorFunction.java
diff options
context:
space:
mode:
authorGravatar ulfjack <ulfjack@google.com>2017-09-26 08:45:31 -0400
committerGravatar John Cater <jcater@google.com>2017-09-26 09:30:38 -0400
commitd27ed80762380c0fe9da9fc512c5d40a86acc59f (patch)
treee2978183274078cbb5c71d59ace31a2bcfb56835 /src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorFunction.java
parent411039319c1c67f2b9c8a7ada9e0a11d9bd4023f (diff)
Move ExternalPackageUtil to a new lib.repository package and simplify it
Move the nested Exception classes to top-level classes, remove unused functionality and move functionality only used in one place to that place. PiperOrigin-RevId: 170041246
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorFunction.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorFunction.java21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorFunction.java b/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorFunction.java
index 15eaa374b7..eafa09fb5c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorFunction.java
@@ -21,7 +21,9 @@ import com.google.devtools.build.lib.cmdline.RepositoryName;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.packages.RuleFormatter;
-import com.google.devtools.build.lib.rules.ExternalPackageUtil;
+import com.google.devtools.build.lib.repository.ExternalPackageException;
+import com.google.devtools.build.lib.repository.ExternalPackageUtil;
+import com.google.devtools.build.lib.repository.ExternalRuleNotFoundException;
import com.google.devtools.build.lib.rules.repository.RepositoryFunction.RepositoryFunctionException;
import com.google.devtools.build.lib.skyframe.FileValue;
import com.google.devtools.build.lib.skyframe.PrecomputedValue.Precomputed;
@@ -32,6 +34,7 @@ import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.devtools.build.skyframe.LegacySkyKey;
import com.google.devtools.build.skyframe.SkyFunction;
+import com.google.devtools.build.skyframe.SkyFunction.Environment;
import com.google.devtools.build.skyframe.SkyFunctionException;
import com.google.devtools.build.skyframe.SkyFunctionException.Transience;
import com.google.devtools.build.skyframe.SkyKey;
@@ -117,8 +120,8 @@ public final class RepositoryDelegatorFunction implements SkyFunction {
Rule rule;
try {
- rule = ExternalPackageUtil.getRepository(repositoryName, null, env);
- } catch (ExternalPackageUtil.ExternalRuleNotFoundException e) {
+ rule = getRepository(repositoryName, env);
+ } catch (ExternalRuleNotFoundException e) {
return RepositoryDirectoryValue.NO_SUCH_REPOSITORY_VALUE;
}
if (rule == null) {
@@ -224,6 +227,18 @@ public final class RepositoryDelegatorFunction implements SkyFunction {
.setFetchingDelayed().build();
}
+ /**
+ * Uses a remote repository name to fetch the corresponding Rule describing how to get it. This
+ * should be called from {@link SkyFunction#compute} functions, which should return null if this
+ * returns null.
+ */
+ @Nullable
+ private static Rule getRepository(
+ RepositoryName repositoryName, Environment env)
+ throws ExternalPackageException, InterruptedException {
+ return ExternalPackageUtil.getRuleByName(repositoryName.strippedName(), env);
+ }
+
private String computeRuleKey(Rule rule, byte[] ruleSpecificData) {
return new Fingerprint().addBytes(RuleFormatter.serializeRule(rule).build().toByteArray())
.addBytes(ruleSpecificData)