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
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 e84f9aa..26e0617 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.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 @@
* 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 @@
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 @@
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 @@
});
/**
+ * 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 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 @@
this.ruleClassMap = ruleClassMap;
this.ruleDefinitionMap = ruleDefinitionMap;
+ this.defaultWorkspaceFiles = defaultWorkspaceFiles;
this.buildInfoFactories = buildInfoFactories;
this.configurationOptions = configurationOptions;
this.configurationFragments = configurationFragments;
@@ -373,4 +388,9 @@
public Object getNativeModule() {
return nativeModule;
}
+
+ @Override
+ public List<PathFragment> getWorkspaceFiles() {
+ return defaultWorkspaceFiles;
+ }
}