diff options
author | 2017-09-22 14:07:15 -0400 | |
---|---|---|
committer | 2017-09-25 09:38:15 -0400 | |
commit | ca6b46dfe901be10214961189867ad3bcbd0a986 (patch) | |
tree | 3eb8569e1b9db6168ef68da1b497b122629d68c2 /src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java | |
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/bazel/BazelRepositoryModule.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java b/src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java index 648874f23c..b065806674 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java @@ -66,6 +66,7 @@ import com.google.devtools.build.lib.runtime.Command; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.ServerBuilder; import com.google.devtools.build.lib.runtime.WorkspaceBuilder; +import com.google.devtools.build.lib.skyframe.MutableSupplier; import com.google.devtools.build.lib.skyframe.PrecomputedValue; import com.google.devtools.build.lib.skyframe.PrecomputedValue.Injected; import com.google.devtools.build.lib.skyframe.SkyFunctions; @@ -79,6 +80,7 @@ import com.google.devtools.build.skyframe.SkyValue; import com.google.devtools.common.options.OptionsBase; import com.google.devtools.common.options.OptionsProvider; import java.lang.reflect.InvocationTargetException; +import java.util.Map; import java.util.Map.Entry; import java.util.concurrent.atomic.AtomicBoolean; import javax.annotation.Nullable; @@ -92,10 +94,11 @@ public class BazelRepositoryModule extends BlazeModule { private final ImmutableMap<String, RepositoryFunction> repositoryHandlers; private final AtomicBoolean isFetch = new AtomicBoolean(false); private final SkylarkRepositoryFunction skylarkRepositoryFunction; - private final RepositoryDelegatorFunction delegator; private final RepositoryCache repositoryCache = new RepositoryCache(); private final HttpDownloader httpDownloader = new HttpDownloader(repositoryCache); private final MavenDownloader mavenDownloader = new MavenDownloader(repositoryCache); + private final MutableSupplier<Map<String, String>> clientEnvironmentSupplier = + new MutableSupplier<>(); private ImmutableMap<RepositoryName, PathFragment> overrides = ImmutableMap.of(); private FileSystem filesystem; @@ -116,8 +119,6 @@ public class BazelRepositoryModule extends BlazeModule { .put(AndroidNdkRepositoryRule.NAME, new AndroidNdkRepositoryFunction()) .put(MavenServerRule.NAME, new MavenServerRepositoryFunction()) .build(); - this.delegator = new RepositoryDelegatorFunction( - repositoryHandlers, skylarkRepositoryFunction, isFetch); } /** @@ -160,7 +161,14 @@ public class BazelRepositoryModule extends BlazeModule { builder.addCustomDirtinessChecker(REPOSITORY_VALUE_CHECKER); // Create the repository function everything flows through. builder.addSkyFunction(SkyFunctions.REPOSITORY, new RepositoryLoaderFunction()); - builder.addSkyFunction(SkyFunctions.REPOSITORY_DIRECTORY, delegator); + builder.addSkyFunction( + SkyFunctions.REPOSITORY_DIRECTORY, + new RepositoryDelegatorFunction( + repositoryHandlers, + skylarkRepositoryFunction, + isFetch, + clientEnvironmentSupplier, + directories)); builder.addSkyFunction(MavenServerFunction.NAME, new MavenServerFunction()); filesystem = directories.getFileSystem(); } @@ -184,7 +192,7 @@ public class BazelRepositoryModule extends BlazeModule { @Override public void beforeCommand(CommandEnvironment env) { - delegator.setClientEnvironment(env.getActionClientEnv()); + clientEnvironmentSupplier.set(env.getActionClientEnv()); PackageCacheOptions pkgOptions = env.getOptions().getOptions(PackageCacheOptions.class); isFetch.set(pkgOptions != null && pkgOptions.fetch); |