diff options
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java | 17 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/runtime/BlazeModule.java | 6 |
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(); + } }; } |