diff options
author | 2016-10-14 13:39:45 +0000 | |
---|---|---|
committer | 2016-10-14 20:24:36 +0000 | |
commit | 5e99198c66443e0298b406212c1e80a55fc729aa (patch) | |
tree | 24d07c8be044839bf9fea05d9751c70ad14804c1 /src/main/java/com/google/devtools | |
parent | f50e6691da8aa685f31165c66a245b85f68abf06 (diff) |
Cleanup, remove differences between Build and Skylark environments.
The only visible difference for users is that a few more functions are
available in BUILD files. That's fine, this difference was not even
documented.
RELNOTES:
A few functions are added to BUILD files for consistency (hash, dir,
hasattr, getattr) with .bzl files, although they are not very useful.
--
MOS_MIGRATED_REVID=136151633
Diffstat (limited to 'src/main/java/com/google/devtools')
7 files changed, 40 insertions, 54 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java index 52cb946e45..5990ea302d 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java +++ b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java @@ -1415,7 +1415,6 @@ public final class PackageFactory { buildFileBytes, packageId.toString(), globber, - Environment.BUILD, ruleFactory.getRuleClassNames()); } catch (InterruptedException e) { globber.onInterrupt(); @@ -1629,13 +1628,14 @@ public final class PackageFactory { StoredEventHandler eventHandler = new StoredEventHandler(); try (Mutability mutability = Mutability.create("package %s", packageId)) { - Environment pkgEnv = Environment.builder(mutability) - .setGlobals(Environment.BUILD) - .setEventHandler(eventHandler) - .setImportedExtensions(imports) - .setToolsRepository(ruleClassProvider.getToolsRepository()) - .setPhase(Phase.LOADING) - .build(); + Environment pkgEnv = + Environment.builder(mutability) + .setGlobals(Environment.DEFAULT_GLOBALS) + .setEventHandler(eventHandler) + .setImportedExtensions(imports) + .setToolsRepository(ruleClassProvider.getToolsRepository()) + .setPhase(Phase.LOADING) + .build(); pkgBuilder.setFilename(buildFilePath) .setMakeEnv(pkgMakeEnv) @@ -1705,12 +1705,13 @@ public final class PackageFactory { // strategy would be to crawl the ast and tag statements whose execution cannot involve globs - // these can be executed and their impact on the resulting package can be saved. try (Mutability mutability = Mutability.create("prefetchGlobs for %s", packageId)) { - Environment pkgEnv = Environment.builder(mutability) - .setGlobals(Environment.BUILD) - .setEventHandler(NullEventHandler.INSTANCE) - .setToolsRepository(ruleClassProvider.getToolsRepository()) - .setPhase(Phase.LOADING) - .build(); + Environment pkgEnv = + Environment.builder(mutability) + .setGlobals(Environment.DEFAULT_GLOBALS) + .setEventHandler(NullEventHandler.INSTANCE) + .setToolsRepository(ruleClassProvider.getToolsRepository()) + .setPhase(Phase.LOADING) + .build(); Package.Builder pkgBuilder = new Package.Builder(packageBuilderHelper.createFreshPackage( packageId, ruleClassProvider.getRunfilesPrefix())); diff --git a/src/main/java/com/google/devtools/build/lib/packages/Preprocessor.java b/src/main/java/com/google/devtools/build/lib/packages/Preprocessor.java index 787d09e0c5..286815d7d4 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/Preprocessor.java +++ b/src/main/java/com/google/devtools/build/lib/packages/Preprocessor.java @@ -18,16 +18,13 @@ import com.google.common.collect.Iterables; import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.events.StoredEventHandler; import com.google.devtools.build.lib.syntax.BuildFileAST; -import com.google.devtools.build.lib.syntax.Environment; import com.google.devtools.build.lib.syntax.ParserInputSource; import com.google.devtools.build.lib.vfs.FileSystemUtils; import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.PathFragment; - import java.io.IOException; import java.util.List; import java.util.Set; - import javax.annotation.Nullable; /** A Preprocessor is an interface to implement generic text-based preprocessing of BUILD files. */ @@ -183,7 +180,6 @@ public interface Preprocessor { byte[] buildFileBytes, String packageName, Globber globber, - Environment.Frame globals, Set<String> ruleNames) throws IOException, InterruptedException; diff --git a/src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java b/src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java index ba1440f2c4..3a31933e93 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java +++ b/src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java @@ -178,9 +178,10 @@ public class WorkspaceFactory { private void execute(BuildFileAST ast, @Nullable Map<String, Extension> importedExtensions, StoredEventHandler localReporter) throws InterruptedException { - Environment.Builder environmentBuilder = Environment.builder(mutability) - .setGlobals(Environment.BUILD) - .setEventHandler(localReporter); + Environment.Builder environmentBuilder = + Environment.builder(mutability) + .setGlobals(Environment.DEFAULT_GLOBALS) + .setEventHandler(localReporter); if (importedExtensions != null) { Map<String, Extension> map = new HashMap<String, Extension>(parentImportMap); map.putAll(importedExtensions); diff --git a/src/main/java/com/google/devtools/build/lib/rules/SkylarkModules.java b/src/main/java/com/google/devtools/build/lib/rules/SkylarkModules.java index ef2767be9a..436fe58281 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/SkylarkModules.java +++ b/src/main/java/com/google/devtools/build/lib/rules/SkylarkModules.java @@ -20,7 +20,6 @@ import com.google.devtools.build.lib.syntax.Environment; import com.google.devtools.build.lib.syntax.Environment.Frame; import com.google.devtools.build.lib.syntax.Mutability; import com.google.devtools.build.lib.syntax.Runtime; - import java.util.HashMap; import java.util.List; import java.util.Map; @@ -56,10 +55,11 @@ public final class SkylarkModules { private static Environment.Frame createGlobals(List<Class<?>> modules) { try (Mutability mutability = Mutability.create("SkylarkModules")) { - Environment env = Environment.builder(mutability) - .setSkylark() - .setGlobals(Environment.SKYLARK) - .build(); + Environment env = + Environment.builder(mutability) + .setSkylark() + .setGlobals(Environment.DEFAULT_GLOBALS) + .build(); for (Class<?> moduleClass : modules) { Runtime.registerModuleGlobals(env, moduleClass); } diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Environment.java b/src/main/java/com/google/devtools/build/lib/syntax/Environment.java index d03aa27fe2..fe9b20967a 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/Environment.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/Environment.java @@ -875,11 +875,11 @@ public final class Environment implements Freezable { /** A read-only Environment.Frame with global constants in it only */ static final Frame CONSTANTS_ONLY = createConstantsGlobals(); - /** A read-only Environment.Frame with initial globals for the BUILD language */ - public static final Frame BUILD = createBuildGlobals(); + /** A read-only Environment.Frame with initial globals */ + public static final Frame DEFAULT_GLOBALS = createDefaultGlobals(); - /** A read-only Environment.Frame with initial globals for Skylark */ - public static final Frame SKYLARK = createSkylarkGlobals(); + /** To be removed when all call-sites are updated. */ + public static final Frame SKYLARK = DEFAULT_GLOBALS; private static Environment.Frame createConstantsGlobals() { try (Mutability mutability = Mutability.create("CONSTANTS")) { @@ -889,20 +889,11 @@ public final class Environment implements Freezable { } } - private static Environment.Frame createBuildGlobals() { + private static Environment.Frame createDefaultGlobals() { try (Mutability mutability = Mutability.create("BUILD")) { Environment env = Environment.builder(mutability).build(); Runtime.setupConstants(env); - Runtime.setupMethodEnvironment(env, MethodLibrary.buildGlobalFunctions); - return env.getGlobals(); - } - } - - private static Environment.Frame createSkylarkGlobals() { - try (Mutability mutability = Mutability.create("SKYLARK")) { - Environment env = Environment.builder(mutability).setSkylark().build(); - Runtime.setupConstants(env); - Runtime.setupMethodEnvironment(env, MethodLibrary.skylarkGlobalFunctions); + Runtime.setupMethodEnvironment(env, MethodLibrary.defaultGlobalFunctions); return env.getGlobals(); } } diff --git a/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java b/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java index 843d8e90a8..42457758d7 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java @@ -2304,22 +2304,16 @@ public class MethodLibrary { static final class StringModule {} - static final List<BaseFunction> buildGlobalFunctions = + static final List<BaseFunction> defaultGlobalFunctions = ImmutableList.<BaseFunction>of( - all, any, bool, dict, fail, enumerate, int_, len, list, max, min, minus, print, range, - repr, reversed, select, set, sorted, str, zip); - - static final List<BaseFunction> skylarkGlobalFunctions = - ImmutableList.<BaseFunction>builder() - .addAll(buildGlobalFunctions) - .add(dir, getattr, hasattr, hash, type) - .build(); + all, any, bool, dict, dir, fail, getattr, hasattr, hash, enumerate, int_, len, list, max, + min, minus, print, range, repr, reversed, select, set, sorted, str, type, zip); /** * Collect global functions for the validation environment. */ public static void setupValidationEnvironment(Set<String> builtIn) { - for (BaseFunction function : skylarkGlobalFunctions) { + for (BaseFunction function : defaultGlobalFunctions) { builtIn.add(function.getName()); } } diff --git a/src/main/java/com/google/devtools/skylark/Skylark.java b/src/main/java/com/google/devtools/skylark/Skylark.java index 51053fb2a5..12f9a16cc5 100644 --- a/src/main/java/com/google/devtools/skylark/Skylark.java +++ b/src/main/java/com/google/devtools/skylark/Skylark.java @@ -18,7 +18,6 @@ import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.syntax.Environment; import com.google.devtools.build.lib.syntax.Mutability; import com.google.devtools.build.lib.syntax.Printer; - import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; @@ -43,8 +42,12 @@ class Skylark { private final BufferedReader reader = new BufferedReader( new InputStreamReader(System.in, Charset.defaultCharset())); private final Mutability mutability = Mutability.create("interpreter"); - private final Environment env = Environment.builder(mutability) - .setSkylark().setGlobals(Environment.SKYLARK).setEventHandler(PRINT_HANDLER).build(); + private final Environment env = + Environment.builder(mutability) + .setSkylark() + .setGlobals(Environment.DEFAULT_GLOBALS) + .setEventHandler(PRINT_HANDLER) + .build(); public String prompt() { StringBuilder input = new StringBuilder(); |