aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java25
1 files changed, 24 insertions, 1 deletions
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 3bea243bc7..8f048f7bf1 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
@@ -18,6 +18,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassType.ABSTRACT;
import static com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassType.TEST;
+import com.google.common.base.Preconditions;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
@@ -41,6 +42,7 @@ import com.google.devtools.build.lib.syntax.Label;
import com.google.devtools.build.lib.syntax.SkylarkEnvironment;
import com.google.devtools.build.lib.syntax.SkylarkType;
import com.google.devtools.build.lib.syntax.ValidationEnvironment;
+import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.devtools.common.options.OptionsClassProvider;
import java.lang.reflect.Constructor;
@@ -77,6 +79,7 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
*/
public static class Builder implements RuleDefinitionEnvironment {
private final StringBuilder defaultWorkspaceFile = new StringBuilder();
+ private PathFragment preludePath;
private final List<ConfigurationFragmentFactory> configurationFragments = new ArrayList<>();
private final List<BuildInfoFactory> buildInfoFactories = new ArrayList<>();
private final List<Class<? extends FragmentOptions>> configurationOptions = new ArrayList<>();
@@ -99,6 +102,14 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
defaultWorkspaceFile.append(contents);
}
+ public Builder setPrelude(String workspaceRelativePath) {
+ PathFragment preludePathFragment = new PathFragment(workspaceRelativePath);
+ Preconditions.checkArgument(!preludePathFragment.isAbsolute());
+ Preconditions.checkArgument(preludePathFragment.isNormalized());
+ this.preludePath = preludePathFragment;
+ return this;
+ }
+
public Builder setPrerequisiteValidator(PrerequisiteValidator prerequisiteValidator) {
this.prerequisiteValidator = prerequisiteValidator;
return this;
@@ -207,6 +218,7 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
}
return new ConfiguredRuleClassProvider(
+ preludePath,
ImmutableMap.copyOf(ruleClassMap),
ImmutableMap.copyOf(ruleDefinitionMap),
ImmutableMap.copyOf(aspectFactoryMap),
@@ -248,6 +260,11 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
String defaultWorkspaceFile;
/**
+ * Workspace-relative path to the prelude.
+ */
+ private final PathFragment preludePath;
+
+ /**
* Maps rule class name to the metaclass instance for that rule.
*/
private final ImmutableMap<String, RuleClass> ruleClassMap;
@@ -286,6 +303,7 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
private final ValidationEnvironment skylarkValidationEnvironment;
public ConfiguredRuleClassProvider(
+ PathFragment preludePath,
ImmutableMap<String, RuleClass> ruleClassMap,
ImmutableMap<String, Class<? extends RuleDefinition>> ruleDefinitionMap,
ImmutableMap<String, Class<? extends AspectFactory<?, ?, ?>>> aspectFactoryMap,
@@ -296,7 +314,7 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
ConfigurationCollectionFactory configurationCollectionFactory,
PrerequisiteValidator prerequisiteValidator,
ImmutableMap<String, SkylarkType> skylarkAccessibleJavaClasses) {
-
+ this.preludePath = preludePath;
this.ruleClassMap = ruleClassMap;
this.ruleDefinitionMap = ruleDefinitionMap;
this.aspectFactoryMap = aspectFactoryMap;
@@ -317,6 +335,11 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
}
@Override
+ public PathFragment getPreludePath() {
+ return preludePath;
+ }
+
+ @Override
public Map<String, RuleClass> getRuleClassMap() {
return ruleClassMap;
}