Do not store a separate map for external package data. This ensures that serialization works correctly.
Removes ExternalPackage as Package specialization.
--
MOS_MIGRATED_REVID=103395682
diff --git a/src/main/java/com/google/devtools/build/lib/packages/Package.java b/src/main/java/com/google/devtools/build/lib/packages/Package.java
index 41224e0..12b0a26 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/Package.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/Package.java
@@ -67,6 +67,16 @@
*/
public class Package implements Serializable {
+ public static PackageIdentifier EXTERNAL_PACKAGE_IDENTIFIER;
+
+ static {
+ try {
+ Package.EXTERNAL_PACKAGE_IDENTIFIER = PackageIdentifier.parse("//external");
+ } catch (LabelSyntaxException e) {
+ throw new IllegalStateException();
+ }
+ }
+
/**
* Common superclass for all name-conflict exceptions.
*/
@@ -744,7 +754,14 @@
}
}
- static class Builder {
+ public static Builder newExternalPackageBuilder(Path workspacePath, String runfilesPrefix) {
+ Builder b = new Builder(new Package(EXTERNAL_PACKAGE_IDENTIFIER, runfilesPrefix));
+ b.setFilename(workspacePath);
+ b.setMakeEnv(new MakeEnvironment.Builder());
+ return b;
+ }
+
+ public static class Builder {
protected static Package newPackage(PackageIdentifier packageId, String runfilesPrefix) {
return new Package(packageId, runfilesPrefix);
}
@@ -777,6 +794,8 @@
protected Map<Label, Path> subincludes = null;
protected ImmutableList<Label> skylarkFileDependencies = ImmutableList.of();
+ protected ExternalPackageBuilder externalPackageData = new ExternalPackageBuilder();
+
/**
* True iff the "package" function has already been called in this package.
*/
@@ -809,7 +828,7 @@
}
}
- Builder(PackageIdentifier id, String runfilesPrefix) {
+ public Builder(PackageIdentifier id, String runfilesPrefix) {
this(newPackage(id, runfilesPrefix));
}
@@ -1294,6 +1313,9 @@
if (alreadyBuilt) {
return pkg;
}
+
+ externalPackageData.build(this);
+
// Freeze targets and distributions.
targets = ImmutableMap.copyOf(targets);
defaultDistributionSet =
@@ -1314,6 +1336,10 @@
return pkg;
}
+ protected ExternalPackageBuilder externalPackageData() {
+ return externalPackageData;
+ }
+
public Package build() {
if (alreadyBuilt) {
return pkg;