Register instances instead of classes as Skylark-visible globals. -- MOS_MIGRATED_REVID=120538736
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 aee043a..56170ba 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
@@ -45,7 +45,6 @@ import com.google.devtools.build.lib.syntax.Environment; import com.google.devtools.build.lib.syntax.Environment.Extension; import com.google.devtools.build.lib.syntax.Mutability; -import com.google.devtools.build.lib.syntax.SkylarkType; import com.google.devtools.common.options.OptionsClassProvider; import java.lang.reflect.Constructor; @@ -105,7 +104,7 @@ private ConfigurationCollectionFactory configurationCollectionFactory; private Class<? extends BuildConfiguration.Fragment> universalFragment; private PrerequisiteValidator prerequisiteValidator; - private ImmutableMap<String, SkylarkType> skylarkAccessibleJavaClasses = ImmutableMap.of(); + private ImmutableMap<String, Object> skylarkAccessibleTopLevels = ImmutableMap.of(); private ImmutableList.Builder<Class<?>> skylarkModules = ImmutableList.<Class<?>>builder().addAll(SkylarkModules.MODULES); private final List<Class<? extends FragmentOptions>> buildOptions = Lists.newArrayList(); @@ -193,8 +192,8 @@ return this; } - public Builder setSkylarkAccessibleJavaClasses(ImmutableMap<String, SkylarkType> objects) { - this.skylarkAccessibleJavaClasses = objects; + public Builder setSkylarkAccessibleTopLevels(ImmutableMap<String, Object> objects) { + this.skylarkAccessibleTopLevels = objects; return this; } @@ -277,7 +276,7 @@ configurationCollectionFactory, universalFragment, prerequisiteValidator, - skylarkAccessibleJavaClasses, + skylarkAccessibleTopLevels, skylarkModules.build(), buildOptions); } @@ -394,7 +393,7 @@ ConfigurationCollectionFactory configurationCollectionFactory, Class<? extends BuildConfiguration.Fragment> universalFragment, PrerequisiteValidator prerequisiteValidator, - ImmutableMap<String, SkylarkType> skylarkAccessibleJavaClasses, + ImmutableMap<String, Object> skylarkAccessibleJavaClasses, ImmutableList<Class<?>> skylarkModules, List<Class<? extends FragmentOptions>> buildOptions) { this.preludeLabel = preludeLabel; @@ -514,13 +513,13 @@ } private Environment.Frame createGlobals( - ImmutableMap<String, SkylarkType> skylarkAccessibleJavaClasses, + ImmutableMap<String, Object> skylarkAccessibleToplLevels, ImmutableList<Class<?>> modules) { try (Mutability mutability = Mutability.create("ConfiguredRuleClassProvider globals")) { Environment env = createSkylarkRuleClassEnvironment( mutability, SkylarkModules.getGlobals(modules), null, null, null); - for (Map.Entry<String, SkylarkType> entry : skylarkAccessibleJavaClasses.entrySet()) { - env.setup(entry.getKey(), entry.getValue().getType()); + for (Map.Entry<String, Object> entry : skylarkAccessibleToplLevels.entrySet()) { + env.setup(entry.getKey(), entry.getValue()); } return env.getGlobals(); }
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 ef0bca7..61d5224 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
@@ -131,7 +131,6 @@ import com.google.devtools.build.lib.rules.repository.LocalRepositoryRule; import com.google.devtools.build.lib.rules.repository.NewLocalRepositoryRule; import com.google.devtools.build.lib.rules.repository.WorkspaceBaseRule; -import com.google.devtools.build.lib.syntax.SkylarkType; import com.google.devtools.build.lib.util.ResourceFileLoader; import java.io.IOException; @@ -233,10 +232,10 @@ /** * Java objects accessible from Skylark rule implementations using this module. */ - public static final ImmutableMap<String, SkylarkType> skylarkBuiltinJavaObects = + public static final ImmutableMap<String, Object> skylarkBuiltinJavaObects = ImmutableMap.of( - "android_common", SkylarkType.of(AndroidSkylarkCommon.class), - "apple_common", SkylarkType.of(AppleSkylarkCommon.class)); + "android_common", new AndroidSkylarkCommon(), + "apple_common", new AppleSkylarkCommon()); public static void setup(ConfiguredRuleClassProvider.Builder builder) { builder @@ -248,7 +247,7 @@ .setRunfilesPrefix("") .setToolsRepository("@bazel_tools") .setPrerequisiteValidator(new BazelPrerequisiteValidator()) - .setSkylarkAccessibleJavaClasses(skylarkBuiltinJavaObects); + .setSkylarkAccessibleTopLevels(skylarkBuiltinJavaObects); builder.addBuildOptions(BUILD_OPTIONS);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkCommon.java index 1724cfa..462407b 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkCommon.java
@@ -35,7 +35,7 @@ + "a directory that designates resource kind (cf. " + "http://developer.android.com/guide/topics/resources/providing-resources.html)." ) - public static PathFragment getSourceDirectoryRelativePathFromResource(Artifact resource) { + public PathFragment getSourceDirectoryRelativePathFromResource(Artifact resource) { return AndroidCommon.getSourceDirectoryRelativePathFromResource(resource); } }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java index 00b2c66..f77e8ba 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java
@@ -31,7 +31,7 @@ name = "apple_toolchain", doc = "Utilities for resolving items from the apple toolchain." ) - public static AppleToolchain getAppleToolchain() { + public AppleToolchain getAppleToolchain() { return new AppleToolchain(); } @@ -40,7 +40,7 @@ doc = "Retrieves ObjcProvider keys", structField = true ) - public static SkylarkKeyStore getKeys() { + public SkylarkKeyStore getKeys() { return new SkylarkKeyStore(); } }