Merge BlazeModule.getEnvironmentExtensions into serverInit / ServerBuilder.
--
MOS_MIGRATED_REVID=137955061
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeModule.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeModule.java
index 014c180..9fbd0ff 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeModule.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeModule.java
@@ -254,13 +254,6 @@
}
/**
- * Returns the extensions this module contributes to the global namespace of the BUILD language.
- */
- public PackageFactory.EnvironmentExtension getPackageEnvironmentExtension() {
- return new PackageFactory.EmptyEnvironmentExtension();
- }
-
- /**
* Returns a helper that the {@link PackageFactory} will use during package loading. If the module
* does not provide any helper, it should return null. Note that only one helper per Bazel/Blaze
* runtime is allowed.
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java
index 5037ee6..61a02ab 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java
@@ -1090,11 +1090,6 @@
ConfiguredRuleClassProvider ruleClassProvider = ruleClassBuilder.build();
- List<PackageFactory.EnvironmentExtension> extensions = new ArrayList<>();
- for (BlazeModule module : blazeModules) {
- extensions.add(module.getPackageEnvironmentExtension());
- }
-
Package.Builder.Helper packageBuilderHelper = null;
for (BlazeModule module : blazeModules) {
Package.Builder.Helper candidateHelper =
@@ -1114,7 +1109,7 @@
ruleClassProvider,
ruleClassBuilder.getPlatformRegexps(),
serverBuilder.getAttributeContainerFactory(),
- extensions,
+ serverBuilder.getEnvironmentExtensions(),
BlazeVersionInfo.instance().getVersion(),
packageBuilderHelper);
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/ServerBuilder.java b/src/main/java/com/google/devtools/build/lib/runtime/ServerBuilder.java
index 6b387f8..dde7062 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/ServerBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/ServerBuilder.java
@@ -18,6 +18,7 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.packages.AttributeContainer;
+import com.google.devtools.build.lib.packages.PackageFactory;
import com.google.devtools.build.lib.packages.RuleClass;
import com.google.devtools.build.lib.query2.AbstractBlazeQueryEnvironment;
import com.google.devtools.build.lib.query2.QueryEnvironmentFactory;
@@ -40,6 +41,8 @@
private final ImmutableList.Builder<QueryFunction> queryFunctions = ImmutableList.builder();
private final ImmutableList.Builder<OutputFormatter> queryOutputFormatters =
ImmutableList.builder();
+ private final ImmutableList.Builder<PackageFactory.EnvironmentExtension> environmentExtensions =
+ ImmutableList.builder();
@VisibleForTesting
public ServerBuilder() {}
@@ -72,6 +75,11 @@
return queryOutputFormatters.build();
}
+ // Visible for WorkspaceResolver.
+ public ImmutableList<PackageFactory.EnvironmentExtension> getEnvironmentExtensions() {
+ return environmentExtensions.build();
+ }
+
@VisibleForTesting
public ImmutableList<BlazeCommand> getCommands() {
return commands.build();
@@ -158,4 +166,9 @@
this.queryOutputFormatters.addAll(formatters);
return this;
}
+
+ public ServerBuilder addEnvironmentExtension(PackageFactory.EnvironmentExtension extension) {
+ this.environmentExtensions.add(extension);
+ return this;
+ }
}
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupFunctionTest.java
index d4b51bb..e51aa42 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupFunctionTest.java
@@ -20,10 +20,10 @@
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.util.AnalysisMock;
-import com.google.devtools.build.lib.bazel.rules.BazelRulesModule;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
import com.google.devtools.build.lib.cmdline.RepositoryName;
import com.google.devtools.build.lib.events.NullEventHandler;
+import com.google.devtools.build.lib.packages.PackageFactory;
import com.google.devtools.build.lib.packages.RuleClassProvider;
import com.google.devtools.build.lib.pkgcache.PathPackageLocator;
import com.google.devtools.build.lib.skyframe.ExternalFilesHelper.ExternalFileAction;
@@ -93,7 +93,7 @@
.getPackageFactoryForTesting()
.create(
ruleClassProvider,
- new BazelRulesModule().getPackageEnvironmentExtension(),
+ new PackageFactory.EmptyEnvironmentExtension(),
scratch.getFileSystem()),
directories));
skyFunctions.put(SkyFunctions.EXTERNAL_PACKAGE, new ExternalPackageFunction());
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java
index 48dd471..c69cddf 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java
@@ -26,10 +26,10 @@
import com.google.common.testing.EqualsTester;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.util.AnalysisMock;
-import com.google.devtools.build.lib.bazel.rules.BazelRulesModule;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
import com.google.devtools.build.lib.events.NullEventHandler;
import com.google.devtools.build.lib.packages.BuildFileNotFoundException;
+import com.google.devtools.build.lib.packages.PackageFactory;
import com.google.devtools.build.lib.packages.RuleClassProvider;
import com.google.devtools.build.lib.pkgcache.PathPackageLocator;
import com.google.devtools.build.lib.rules.repository.LocalRepositoryFunction;
@@ -115,7 +115,7 @@
.getPackageFactoryForTesting()
.create(
ruleClassProvider,
- new BazelRulesModule().getPackageEnvironmentExtension(),
+ new PackageFactory.EmptyEnvironmentExtension(),
scratch.getFileSystem()),
directories));
skyFunctions.put(SkyFunctions.EXTERNAL_PACKAGE, new ExternalPackageFunction());
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunctionTest.java
index 6a59557..0f5e046 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunctionTest.java
@@ -21,10 +21,10 @@
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
-import com.google.devtools.build.lib.bazel.rules.BazelRulesModule;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.NoSuchTargetException;
import com.google.devtools.build.lib.packages.Package;
+import com.google.devtools.build.lib.packages.PackageFactory;
import com.google.devtools.build.lib.packages.PackageFactory.EnvironmentExtension;
import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.testutil.MoreAsserts;
@@ -113,7 +113,7 @@
@Override
protected Iterable<EnvironmentExtension> getEnvironmentExtensions() {
- return ImmutableList.of(new BazelRulesModule().getPackageEnvironmentExtension());
+ return ImmutableList.<EnvironmentExtension>of(new PackageFactory.EmptyEnvironmentExtension());
}
private Label getLabelMapping(Package pkg, String name) throws NoSuchTargetException {
diff --git a/src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace/WorkspaceResolver.java b/src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace/WorkspaceResolver.java
index 736469f..bbf1a87 100644
--- a/src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace/WorkspaceResolver.java
+++ b/src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace/WorkspaceResolver.java
@@ -33,9 +33,11 @@
import com.google.devtools.build.lib.packages.WorkspaceFactory;
import com.google.devtools.build.lib.runtime.BlazeModule;
import com.google.devtools.build.lib.runtime.BlazeRuntime;
+import com.google.devtools.build.lib.runtime.ServerBuilder;
import com.google.devtools.build.lib.syntax.Mutability;
import com.google.devtools.build.lib.syntax.ParserInputSource;
import com.google.devtools.build.lib.syntax.Type;
+import com.google.devtools.build.lib.util.AbruptExitException;
import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.workspace.maven.DefaultModelResolver;
import com.google.devtools.build.workspace.maven.Resolver;
@@ -59,16 +61,20 @@
WorkspaceResolver(Resolver resolver, EventHandler handler) {
this.resolver = resolver;
this.handler = handler;
+ ServerBuilder serverBuilder = new ServerBuilder();
ConfiguredRuleClassProvider.Builder ruleClassBuilder =
new ConfiguredRuleClassProvider.Builder();
List<BlazeModule> blazeModules = BlazeRuntime.createModules(BazelMain.BAZEL_MODULES);
- ImmutableList.Builder<EnvironmentExtension> environmentExtensions = ImmutableList.builder();
for (BlazeModule blazeModule : blazeModules) {
+ try {
+ blazeModule.serverInit(null, serverBuilder);
+ } catch (AbruptExitException e) {
+ throw new RuntimeException(e);
+ }
blazeModule.initializeRuleClasses(ruleClassBuilder);
- environmentExtensions.add(blazeModule.getPackageEnvironmentExtension());
}
this.ruleClassProvider = ruleClassBuilder.build();
- this.environmentExtensions = environmentExtensions.build();
+ this.environmentExtensions = serverBuilder.getEnvironmentExtensions();
}
/** Converts the WORKSPACE file content into an ExternalPackage. */