aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis
diff options
context:
space:
mode:
authorGravatar Kristina Chodorow <kchodorow@google.com>2015-02-11 15:54:50 +0000
committerGravatar Han-Wen Nienhuys <hanwen@google.com>2015-02-11 15:54:50 +0000
commitbc4b4b1d6cf04f6f1b8c7129338c975d39363cc2 (patch)
tree0740db737394c4fa9345dc631fd753461ee6ed76 /src/main/java/com/google/devtools/build/lib/analysis
parent98f9af508cc3c4e1d66e459e12dd0bc78a536b12 (diff)
Parse built-in WORKSPACE files
This doesn't actually add any default workspace files, yet, but adds machinery for them. Also did some cleanup/renaming. -- MOS_MIGRATED_REVID=86085127
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java20
1 files changed, 20 insertions, 0 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 e84f9aa187..26e0617454 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
@@ -40,6 +40,7 @@ import com.google.devtools.build.lib.syntax.SkylarkEnvironment;
import com.google.devtools.build.lib.syntax.SkylarkModule;
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;
@@ -76,6 +77,7 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
* Builder for {@link ConfiguredRuleClassProvider}.
*/
public static class Builder implements RuleDefinitionEnvironment {
+ private final List<PathFragment> defaultWorkspaceFiles = new ArrayList<>();
private final List<ConfigurationFragmentFactory> configurationFragments = new ArrayList<>();
private final List<BuildInfoFactory> buildInfoFactories = new ArrayList<>();
private final List<Class<? extends FragmentOptions>> configurationOptions = new ArrayList<>();
@@ -90,6 +92,10 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
private PrerequisiteValidator prerequisiteValidator;
private ImmutableMap<String, SkylarkType> skylarkAccessibleJavaClasses = ImmutableMap.of();
+ public void addWorkspaceFile(PathFragment defaultWorkspace) {
+ defaultWorkspaceFiles.add(defaultWorkspace);
+ }
+
public Builder setPrerequisiteValidator(PrerequisiteValidator prerequisiteValidator) {
this.prerequisiteValidator = prerequisiteValidator;
return this;
@@ -194,6 +200,7 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
return new ConfiguredRuleClassProvider(
ImmutableMap.copyOf(ruleClassMap),
ImmutableMap.copyOf(ruleDefinitionMap),
+ ImmutableList.copyOf(defaultWorkspaceFiles),
ImmutableList.copyOf(buildInfoFactories),
ImmutableList.copyOf(configurationOptions),
ImmutableList.copyOf(configurationFragments),
@@ -225,6 +232,12 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
});
/**
+ * A list of relative paths to the WORKSPACE files needed to provide external dependencies for
+ * the rule classes.
+ */
+ private ImmutableList<PathFragment> defaultWorkspaceFiles;
+
+ /**
* Maps rule class name to the metaclass instance for that rule.
*/
private final ImmutableMap<String, RuleClass> ruleClassMap;
@@ -260,6 +273,7 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
public ConfiguredRuleClassProvider(
ImmutableMap<String, RuleClass> ruleClassMap,
ImmutableMap<String, Class<? extends RuleDefinition>> ruleDefinitionMap,
+ ImmutableList<PathFragment> defaultWorkspaceFiles,
ImmutableList<BuildInfoFactory> buildInfoFactories,
ImmutableList<Class<? extends FragmentOptions>> configurationOptions,
ImmutableList<ConfigurationFragmentFactory> configurationFragments,
@@ -269,6 +283,7 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
this.ruleClassMap = ruleClassMap;
this.ruleDefinitionMap = ruleDefinitionMap;
+ this.defaultWorkspaceFiles = defaultWorkspaceFiles;
this.buildInfoFactories = buildInfoFactories;
this.configurationOptions = configurationOptions;
this.configurationFragments = configurationFragments;
@@ -373,4 +388,9 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
public Object getNativeModule() {
return nativeModule;
}
+
+ @Override
+ public List<PathFragment> getWorkspaceFiles() {
+ return defaultWorkspaceFiles;
+ }
}