aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools
diff options
context:
space:
mode:
authorGravatar Laurent Le Brun <laurentlb@google.com>2016-10-14 13:39:45 +0000
committerGravatar Yun Peng <pcloudy@google.com>2016-10-14 20:24:36 +0000
commit5e99198c66443e0298b406212c1e80a55fc729aa (patch)
tree24d07c8be044839bf9fea05d9751c70ad14804c1 /src/main/java/com/google/devtools
parentf50e6691da8aa685f31165c66a245b85f68abf06 (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')
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java29
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/Preprocessor.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/SkylarkModules.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/Environment.java21
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java14
-rw-r--r--src/main/java/com/google/devtools/skylark/Skylark.java9
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();