aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2015-03-23 17:02:06 +0000
committerGravatar Han-Wen Nienhuys <hanwen@google.com>2015-03-24 16:41:38 +0000
commit6db223dbcab3882aa8021434cc628cccc7299aef (patch)
tree0897f96b4a4437b26368e3ca42b2978d0bc1e0e3 /src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
parent0ddcba2d0148e662cca8487d91d8ae797a9a89e6 (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.java17
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();
}