aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/packages/Package.java
diff options
context:
space:
mode:
authorGravatar Han-Wen Nienhuys <hanwen@google.com>2015-09-18 17:37:51 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2015-09-21 08:59:16 +0000
commitf172d396bbab9dec8f6beda0b0969f33a25709cd (patch)
tree76da22fa1681be1bda2de36812aeec76876c6ea6 /src/main/java/com/google/devtools/build/lib/packages/Package.java
parentf081184097239243b436f96774b63b010d5e021f (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.java30
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;