diff options
author | 2017-09-26 08:45:31 -0400 | |
---|---|---|
committer | 2017-09-26 09:30:38 -0400 | |
commit | d27ed80762380c0fe9da9fc512c5d40a86acc59f (patch) | |
tree | e2978183274078cbb5c71d59ace31a2bcfb56835 /src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorFunction.java | |
parent | 411039319c1c67f2b9c8a7ada9e0a11d9bd4023f (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.java | 21 |
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) |