Add an intermediate SkyFunction for resolving the external package
The WORKSPACE file parsing needs to be separated into several parts
to enable load of labels in the WORKSPACE file.
This change adds an intermediate SkyFunction, ExternalPackageFunction,
that requires all the WORKSPACE file part to be parsed to resolve
//external: labels.
Issue #824 Step 1.
--
MOS_MIGRATED_REVID=113984026
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java
index 995ece5..2218684 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java
@@ -155,19 +155,26 @@
ImmutableMap.<SkyFunctionName, SkyFunction>builder()
.put(SkyFunctions.FILE_STATE, new FileStateFunction(tsgm, externalFilesHelper))
.put(SkyFunctions.FILE, new FileFunction(pkgLocator))
- .put(SkyFunctions.ARTIFACT,
+ .put(
+ SkyFunctions.ARTIFACT,
new ArtifactFunction(Predicates.<PathFragment>alwaysFalse()))
- .put(SkyFunctions.ACTION_EXECUTION,
+ .put(
+ SkyFunctions.ACTION_EXECUTION,
new ActionExecutionFunction(skyframeActionExecutor, tsgm))
- .put(SkyFunctions.PACKAGE,
+ .put(
+ SkyFunctions.PACKAGE,
new PackageFunction(null, null, null, null, null, null, null))
.put(SkyFunctions.PACKAGE_LOOKUP, new PackageLookupFunction(null))
- .put(SkyFunctions.WORKSPACE_AST,
+ .put(
+ SkyFunctions.WORKSPACE_AST,
new WorkspaceASTFunction(TestRuleClassProvider.getRuleClassProvider()))
- .put(SkyFunctions.WORKSPACE_FILE,
- new WorkspaceFileFunction(TestRuleClassProvider.getRuleClassProvider(),
+ .put(
+ SkyFunctions.WORKSPACE_FILE,
+ new WorkspaceFileFunction(
+ TestRuleClassProvider.getRuleClassProvider(),
new PackageFactory(TestRuleClassProvider.getRuleClassProvider()),
new BlazeDirectories(rootDirectory, outputBase, rootDirectory)))
+ .put(SkyFunctions.EXTERNAL_PACKAGE, new ExternalPackageFunction())
.build(),
differencer,
evaluationProgressReceiver);