aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2018-06-11 11:01:51 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-06-11 11:03:23 -0700
commitd2e0a947963f7f725d5bac69391ad9797f4a9beb (patch)
treeee5b186b877825d47ab2fbc62276ce748383ecb5 /src/main/java/com
parent4ee15b8182c9728855914ce174bd933698000d9b (diff)
Create a bootstrap for repository-related skylark build API.
Also remove the old ConfiguredRuleClassProvider.addSkylarkModule() method, as it, after this change, has no callers. RELNOTES: None. PiperOrigin-RevId: 200078816
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/BUILD1
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java18
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/RepositoryBootstrap.java36
4 files changed, 41 insertions, 17 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index 21e9ab98f3..352dd39972 100644
--- a/src/main/java/com/google/devtools/build/lib/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -680,6 +680,7 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/bazel/repository/cache",
"//src/main/java/com/google/devtools/build/lib/bazel/repository/downloader",
"//src/main/java/com/google/devtools/build/lib/cmdline",
+ "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository",
"//src/main/java/com/google/devtools/build/lib/vfs",
"//src/main/java/com/google/devtools/build/lib/vfs:pathfragment",
"//src/main/java/com/google/devtools/build/skyframe:skyframe-objects",
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java
index 4821f6f961..8b6f7c6060 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java
@@ -65,7 +65,6 @@ import com.google.devtools.build.lib.syntax.Environment.Extension;
import com.google.devtools.build.lib.syntax.Environment.GlobalFrame;
import com.google.devtools.build.lib.syntax.Environment.Phase;
import com.google.devtools.build.lib.syntax.Mutability;
-import com.google.devtools.build.lib.syntax.Runtime;
import com.google.devtools.build.lib.syntax.SkylarkSemantics;
import com.google.devtools.build.lib.syntax.SkylarkUtils;
import com.google.devtools.build.lib.syntax.Type;
@@ -244,8 +243,6 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
ImmutableList.<Bootstrap>builder();
private ImmutableMap.Builder<String, Object> skylarkAccessibleTopLevels =
ImmutableMap.builder();
- private ImmutableList.Builder<Class<?>> skylarkModules =
- ImmutableList.<Class<?>>builder();
private Set<String> reservedActionMnemonics = new TreeSet<>();
private BuildConfiguration.ActionEnvironmentProvider actionEnvironmentProvider =
(BuildOptions options) -> ActionEnvironment.EMPTY;
@@ -372,11 +369,6 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
return this;
}
- public Builder addSkylarkModule(Class<?>... modules) {
- this.skylarkModules.add(modules);
- return this;
- }
-
public Builder addReservedActionMnemonic(String mnemonic) {
this.reservedActionMnemonics.add(mnemonic);
return this;
@@ -529,7 +521,6 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
prerequisiteValidator,
skylarkAccessibleTopLevels.build(),
skylarkBootstraps.build(),
- skylarkModules.build(),
ImmutableSet.copyOf(reservedActionMnemonics),
actionEnvironmentProvider,
constraintSemantics);
@@ -667,7 +658,6 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
PrerequisiteValidator prerequisiteValidator,
ImmutableMap<String, Object> skylarkAccessibleJavaClasses,
ImmutableList<Bootstrap> skylarkBootstraps,
- ImmutableList<Class<?>> skylarkModules,
ImmutableSet<String> reservedActionMnemonics,
BuildConfiguration.ActionEnvironmentProvider actionEnvironmentProvider,
ConstraintSemantics constraintSemantics) {
@@ -686,7 +676,7 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
this.universalFragments = universalFragments;
this.trimmingTransitionFactory = trimmingTransitionFactory;
this.prerequisiteValidator = prerequisiteValidator;
- this.globals = createGlobals(skylarkAccessibleJavaClasses, skylarkBootstraps, skylarkModules);
+ this.globals = createGlobals(skylarkAccessibleJavaClasses, skylarkBootstraps);
this.reservedActionMnemonics = reservedActionMnemonics;
this.actionEnvironmentProvider = actionEnvironmentProvider;
this.configurationFragmentMap = createFragmentMap(configurationFragmentFactories);
@@ -811,14 +801,10 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
private Environment.GlobalFrame createGlobals(
ImmutableMap<String, Object> skylarkAccessibleTopLevels,
- ImmutableList<Bootstrap> bootstraps,
- ImmutableList<Class<?>> modules) {
+ ImmutableList<Bootstrap> bootstraps) {
ImmutableMap.Builder<String, Object> envBuilder = ImmutableMap.builder();
SkylarkModules.addSkylarkGlobalsToBuilder(envBuilder);
- for (Class<?> module : modules) {
- Runtime.setupModuleGlobals(envBuilder, module);
- }
envBuilder.putAll(skylarkAccessibleTopLevels.entrySet());
for (Bootstrap bootstrap : bootstraps) {
bootstrap.addBindingsToBuilder(envBuilder);
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 742f35e13d..6d486b0f65 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
@@ -76,6 +76,7 @@ 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;
import com.google.devtools.build.lib.skyframe.SkyValueDirtinessChecker;
+import com.google.devtools.build.lib.skylarkbuildapi.repository.RepositoryBootstrap;
import com.google.devtools.build.lib.util.AbruptExitException;
import com.google.devtools.build.lib.util.io.TimestampGranularityMonitor;
import com.google.devtools.build.lib.vfs.FileSystem;
@@ -219,7 +220,7 @@ public class BazelRepositoryModule extends BlazeModule {
}
builder.addRuleDefinition(ruleDefinition);
}
- builder.addSkylarkModule(SkylarkRepositoryModule.class);
+ builder.addSkylarkBootstrap(new RepositoryBootstrap(SkylarkRepositoryModule.class));
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/RepositoryBootstrap.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/RepositoryBootstrap.java
new file mode 100644
index 0000000000..0df43175a6
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/RepositoryBootstrap.java
@@ -0,0 +1,36 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.devtools.build.lib.skylarkbuildapi.repository;
+
+import com.google.common.collect.ImmutableMap.Builder;
+import com.google.devtools.build.lib.skylarkbuildapi.Bootstrap;
+import com.google.devtools.build.lib.syntax.Runtime;
+
+/**
+ * A {@link Bootstrap} for repository-related libraries of the build API.
+ */
+public class RepositoryBootstrap implements Bootstrap {
+
+ private final Class<? extends RepositoryModuleApi> repositoryModuleApiClass;
+
+ public RepositoryBootstrap(Class<? extends RepositoryModuleApi> repositoryModuleApiClass) {
+ this.repositoryModuleApiClass = repositoryModuleApiClass;
+ }
+
+ @Override
+ public void addBindingsToBuilder(Builder<String, Object> builder) {
+ Runtime.setupModuleGlobals(builder, repositoryModuleApiClass);
+ }
+}