aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Luis Fernando Pino Duque <lpino@google.com>2016-07-01 15:07:23 +0000
committerGravatar Lukacs Berki <lberki@google.com>2016-07-04 07:19:11 +0000
commit207ba4a1248ee113eb0eb009dc55918e4633cda0 (patch)
treec859d884126a8272c95ef14e45b8fa42d3c866e6 /src
parent0451cf0b5a16688bb56396af276a6ef4ebbe5d4d (diff)
--
MOS_MIGRATED_REVID=126410490
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/RuleDefinitionEnvironment.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java18
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRulesModule.java1
-rw-r--r--src/test/java/com/google/devtools/build/lib/testutil/TestRuleClassProvider.java3
5 files changed, 27 insertions, 9 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 a0ed7a479c..a99bed80a8 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
@@ -107,7 +107,7 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
ImmutableList.<Class<?>>builder().addAll(SkylarkModules.MODULES);
private ImmutableBiMap<String, Class<? extends TransitiveInfoProvider>>
registeredSkylarkProviders = ImmutableBiMap.of();
-
+
public void addWorkspaceFilePrefix(String contents) {
defaultWorkspaceFilePrefix.append(contents);
@@ -299,6 +299,11 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
public Label getToolsLabel(String labelValue) {
return getLabel(toolsRepository + labelValue);
}
+
+ @Override
+ public String getToolsRepository() {
+ return toolsRepository;
+ }
}
/**
@@ -528,7 +533,7 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
getRegisteredSkylarkProviders() {
return this.registeredSkylarkProviders;
}
-
+
/**
* Creates a BuildOptions class for the given options taken from an optionsProvider.
*/
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleDefinitionEnvironment.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleDefinitionEnvironment.java
index 45200fb8a5..5880e954dd 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleDefinitionEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleDefinitionEnvironment.java
@@ -32,4 +32,9 @@ public interface RuleDefinitionEnvironment {
* using {@link RuleDefinitionEnvironment#getLabel}
*/
Label getToolsLabel(String labelValue);
+
+ /**
+ * Returns the tools repository prefix.
+ */
+ String getToolsRepository();
}
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
index 01a2c15dd3..7692978e47 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
@@ -14,6 +14,8 @@
package com.google.devtools.build.lib.bazel.rules;
+import static com.google.common.base.Preconditions.checkNotNull;
+
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Functions;
import com.google.common.collect.ImmutableBiMap;
@@ -160,6 +162,7 @@ public class BazelRuleClassProvider {
public static ConfiguredRuleClassProvider create() {
ConfiguredRuleClassProvider.Builder builder =
new ConfiguredRuleClassProvider.Builder();
+ builder.setToolsRepository(TOOLS_REPOSITORY);
setup(builder);
return builder.build();
}
@@ -264,6 +267,8 @@ public class BazelRuleClassProvider {
ObjcProvider.OBJC_SKYLARK_PROVIDER_NAME, ObjcProvider.class);
public static void setup(ConfiguredRuleClassProvider.Builder builder) {
+ // The tools repository prefix must be set before calling this method.
+ String toolsRepository = checkNotNull(builder.getToolsRepository());
builder
.addBuildInfoFactory(new BazelJavaBuildInfoFactory())
.addBuildInfoFactory(new CppBuildInfo())
@@ -271,7 +276,6 @@ public class BazelRuleClassProvider {
.setConfigurationCollectionFactory(new BazelConfigurationCollection())
.setPrelude("//tools/build_rules:prelude_bazel")
.setRunfilesPrefix(Label.DEFAULT_REPOSITORY_DIRECTORY)
- .setToolsRepository(TOOLS_REPOSITORY)
.setPrerequisiteValidator(new BazelPrerequisiteValidator())
.setSkylarkAccessibleTopLevels(SKYLARK_BUILT_IN_JAVA_OBJECTS)
.setSkylarkProviderRegistry(SKYLARK_PROVIDERS_TO_REGISTER);
@@ -279,12 +283,12 @@ public class BazelRuleClassProvider {
builder.addConfigurationOptions(BUILD_OPTIONS);
AndroidNeverlinkAspect androidNeverlinkAspect = new AndroidNeverlinkAspect();
- DexArchiveAspect dexArchiveAspect = new DexArchiveAspect(TOOLS_REPOSITORY);
- JackAspect jackAspect = new JackAspect(TOOLS_REPOSITORY);
- BazelJ2ObjcProtoAspect bazelJ2ObjcProtoAspect = new BazelJ2ObjcProtoAspect(TOOLS_REPOSITORY);
- J2ObjcAspect j2ObjcAspect = new J2ObjcAspect(TOOLS_REPOSITORY, bazelJ2ObjcProtoAspect);
+ DexArchiveAspect dexArchiveAspect = new DexArchiveAspect(toolsRepository);
+ JackAspect jackAspect = new JackAspect(toolsRepository);
+ BazelJ2ObjcProtoAspect bazelJ2ObjcProtoAspect = new BazelJ2ObjcProtoAspect(toolsRepository);
+ J2ObjcAspect j2ObjcAspect = new J2ObjcAspect(toolsRepository, bazelJ2ObjcProtoAspect);
AndroidStudioInfoAspect androidStudioInfoAspect =
- new AndroidStudioInfoAspect(TOOLS_REPOSITORY, new BazelAndroidStudioInfoSemantics());
+ new AndroidStudioInfoAspect(toolsRepository, new BazelAndroidStudioInfoSemantics());
ObjcProtoAspect objcProtoAspect = new ObjcProtoAspect();
builder.addNativeAspectClass(androidNeverlinkAspect);
@@ -410,7 +414,7 @@ public class BazelRuleClassProvider {
builder.addRuleDefinition(new ObjcRuleClasses.WatchExtensionBundleRule());
builder.addRuleDefinition(new ObjcRuleClasses.WatchApplicationBundleRule());
builder.addRuleDefinition(new ObjcRuleClasses.CrosstoolRule());
- builder.addRuleDefinition(new AppleToolchain.RequiresXcodeConfigRule(TOOLS_REPOSITORY));
+ builder.addRuleDefinition(new AppleToolchain.RequiresXcodeConfigRule(toolsRepository));
builder.addRuleDefinition(new AppleWatch1ExtensionRule());
builder.addRuleDefinition(new AppleWatchExtensionBinaryRule());
builder.addRuleDefinition(new IosApplicationRule());
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRulesModule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRulesModule.java
index 0e6b8accc2..e5fb01ad7c 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRulesModule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRulesModule.java
@@ -177,6 +177,7 @@ public class BazelRulesModule extends BlazeModule {
@Override
public void initializeRuleClasses(ConfiguredRuleClassProvider.Builder builder) {
+ builder.setToolsRepository(BazelRuleClassProvider.TOOLS_REPOSITORY);
BazelRuleClassProvider.setup(builder);
try {
// Load auto-configuration files, it is made outside of the rule class provider so that it
diff --git a/src/test/java/com/google/devtools/build/lib/testutil/TestRuleClassProvider.java b/src/test/java/com/google/devtools/build/lib/testutil/TestRuleClassProvider.java
index 60faf47474..aa8bfb78c1 100644
--- a/src/test/java/com/google/devtools/build/lib/testutil/TestRuleClassProvider.java
+++ b/src/test/java/com/google/devtools/build/lib/testutil/TestRuleClassProvider.java
@@ -43,6 +43,9 @@ public class TestRuleClassProvider {
public static void addStandardRules(ConfiguredRuleClassProvider.Builder builder) {
try {
Class<?> providerClass = Class.forName(TestConstants.TEST_RULE_CLASS_PROVIDER);
+ // The method setup in the rule class provider requires the tools repository to be set
+ // beforehand.
+ builder.setToolsRepository(TestConstants.TOOLS_REPOSITORY);
Method setupMethod = providerClass.getMethod("setup",
ConfiguredRuleClassProvider.Builder.class);
setupMethod.invoke(null, builder);