diff options
author | janakr <janakr@google.com> | 2017-09-22 14:07:15 -0400 |
---|---|---|
committer | John Cater <jcater@google.com> | 2017-09-25 09:38:15 -0400 |
commit | ca6b46dfe901be10214961189867ad3bcbd0a986 (patch) | |
tree | 3eb8569e1b9db6168ef68da1b497b122629d68c2 /src/main/java/com/google/devtools/build/lib/rules/repository | |
parent | b6857d5b5f581656f0cb9934a015f69555eb9c20 (diff) |
Inject BlazeDirectories into RepositoryDelegatorFunction directly, instead of depending on a precomputed value. BlazeDirectories don't change over the lifetime of the Blaze server, and certainly not over the lifetime of a SkyframeExecutor instance, which already had a reference to them.
Step 2.
PiperOrigin-RevId: 169711443
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/repository')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorFunction.java | 23 |
1 files changed, 13 insertions, 10 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 6f6573e0f1..15eaa374b7 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 @@ -24,7 +24,6 @@ import com.google.devtools.build.lib.packages.RuleFormatter; import com.google.devtools.build.lib.rules.ExternalPackageUtil; 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; import com.google.devtools.build.lib.skyframe.PrecomputedValue.Precomputed; import com.google.devtools.build.lib.skyframe.SkyFunctions; import com.google.devtools.build.lib.util.Fingerprint; @@ -42,6 +41,7 @@ import java.nio.charset.StandardCharsets; import java.util.Map; import java.util.TreeMap; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.function.Supplier; import javax.annotation.Nullable; /** @@ -72,17 +72,21 @@ public final class RepositoryDelegatorFunction implements SkyFunction { // command is a fetch. Remote repository lookups are only allowed during fetches. private final AtomicBoolean isFetch; - private Map<String, String> clientEnvironment; + private final BlazeDirectories directories; - public RepositoryDelegatorFunction(ImmutableMap<String, RepositoryFunction> handlers, - @Nullable RepositoryFunction skylarkHandler, AtomicBoolean isFetch) { + private final Supplier<Map<String, String>> clientEnvironmentSupplier; + + public RepositoryDelegatorFunction( + ImmutableMap<String, RepositoryFunction> handlers, + @Nullable RepositoryFunction skylarkHandler, + AtomicBoolean isFetch, + Supplier<Map<String, String>> clientEnvironmentSupplier, + BlazeDirectories directories) { this.handlers = handlers; this.skylarkHandler = skylarkHandler; this.isFetch = isFetch; - } - - public void setClientEnvironment(Map<String, String> clientEnvironment) { - this.clientEnvironment = clientEnvironment; + this.clientEnvironmentSupplier = clientEnvironmentSupplier; + this.directories = directories; } private void setupRepositoryRoot(Path repoRoot) throws RepositoryFunctionException { @@ -98,7 +102,6 @@ public final class RepositoryDelegatorFunction implements SkyFunction { public SkyValue compute(SkyKey skyKey, Environment env) throws SkyFunctionException, InterruptedException { RepositoryName repositoryName = (RepositoryName) skyKey.argument(); - BlazeDirectories directories = PrecomputedValue.BLAZE_DIRECTORIES.get(env); Map<RepositoryName, PathFragment> overrides = REPOSITORY_OVERRIDES.get(env); if (env.valuesMissing()) { return null; @@ -133,7 +136,7 @@ public final class RepositoryDelegatorFunction implements SkyFunction { return RepositoryDirectoryValue.NO_SUCH_REPOSITORY_VALUE; } - handler.setClientEnvironment(clientEnvironment); + handler.setClientEnvironment(clientEnvironmentSupplier.get()); byte[] ruleSpecificData = handler.getRuleSpecificMarkerData(rule, env); if (ruleSpecificData == null) { |