aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java17
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/BlazeModule.java6
2 files changed, 22 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();
}
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeModule.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeModule.java
index 6855cbd149..dbd84e7349 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeModule.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeModule.java
@@ -40,6 +40,7 @@ import com.google.devtools.build.lib.skyframe.PrecomputedValue.Injected;
import com.google.devtools.build.lib.skyframe.SkyframeExecutor;
import com.google.devtools.build.lib.skyframe.SkyframeExecutorFactory;
import com.google.devtools.build.lib.syntax.Environment;
+import com.google.devtools.build.lib.syntax.Function;
import com.google.devtools.build.lib.syntax.Label;
import com.google.devtools.build.lib.util.AbruptExitException;
import com.google.devtools.build.lib.util.Clock;
@@ -359,6 +360,11 @@ public abstract class BlazeModule {
public Iterable<PackageArgument<?>> getPackageArguments() {
return ImmutableList.of();
}
+
+ @Override
+ public ImmutableList<Function> nativeModuleFunctions() {
+ return ImmutableList.<Function>of();
+ }
};
}