diff options
author | 2015-03-23 17:02:06 +0000 | |
---|---|---|
committer | 2015-03-24 16:41:38 +0000 | |
commit | 6db223dbcab3882aa8021434cc628cccc7299aef (patch) | |
tree | 0897f96b4a4437b26368e3ca42b2978d0bc1e0e3 /src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java | |
parent | 0ddcba2d0148e662cca8487d91d8ae797a9a89e6 (diff) |
Skylark: Package environment extensions can register functions with the native module.
--
MOS_MIGRATED_REVID=89309511
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java | 17 |
1 files changed, 16 insertions, 1 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 cc84ef286f..5cf0e18b31 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 @@ -142,6 +142,11 @@ public final class PackageFactory { void update(Environment environment, MakeEnvironment.Builder pkgMakeEnv, Label buildFileLabel); + /** + * Returns the extra functions needed to be added to the Skylark native module. + */ + ImmutableList<Function> nativeModuleFunctions(); + Iterable<PackageArgument<?>> getPackageArguments(); } @@ -821,7 +826,7 @@ public final class PackageFactory { /** * Get the PackageContext by looking up in the environment. */ - private static PackageContext getContext(Environment env, FuncallExpression ast) + public static PackageContext getContext(Environment env, FuncallExpression ast) throws EvalException { try { return (PackageContext) env.lookup(PKG_CONTEXT); @@ -1069,6 +1074,13 @@ public final class PackageFactory { this.eventHandler = eventHandler; this.globber = globber; } + + /** + * Returns the Label of this Package. + */ + public Label getLabel() { + return pkgBuilder.getBuildFileLabel(); + } } /** @@ -1081,6 +1093,9 @@ public final class PackageFactory { builder.add(newRuleFunction(ruleFactory, ruleClass)); } builder.add(newPackageFunction(packageArguments)); + for (EnvironmentExtension extension : environmentExtensions) { + builder.addAll(extension.nativeModuleFunctions()); + } return builder.build(); } |