diff options
author | 2015-09-18 17:37:51 +0000 | |
---|---|---|
committer | 2015-09-21 08:59:16 +0000 | |
commit | f172d396bbab9dec8f6beda0b0969f33a25709cd (patch) | |
tree | 76da22fa1681be1bda2de36812aeec76876c6ea6 /src/main/java/com/google/devtools/build/lib/packages/Package.java | |
parent | f081184097239243b436f96774b63b010d5e021f (diff) |
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
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/packages/Package.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/packages/Package.java | 30 |
1 files changed, 28 insertions, 2 deletions
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 41224e063e..12b0a2608c 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 @@ import java.util.Set; */ 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 @@ public class Package implements Serializable { } } - 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 @@ public class Package implements Serializable { 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 @@ public class Package implements Serializable { } } - Builder(PackageIdentifier id, String runfilesPrefix) { + public Builder(PackageIdentifier id, String runfilesPrefix) { this(newPackage(id, runfilesPrefix)); } @@ -1294,6 +1313,9 @@ public class Package implements Serializable { if (alreadyBuilt) { return pkg; } + + externalPackageData.build(this); + // Freeze targets and distributions. targets = ImmutableMap.copyOf(targets); defaultDistributionSet = @@ -1314,6 +1336,10 @@ public class Package implements Serializable { return pkg; } + protected ExternalPackageBuilder externalPackageData() { + return externalPackageData; + } + public Package build() { if (alreadyBuilt) { return pkg; |