Provide placeholder rule class for deserialized Skylark rules
At this time, Skylark-defined rule classes don't get serialized, and
aren't available at package deserialization time. To allow packages
with Skylark-defined rule classes to deserialize, we provide a
placeholder rule class implementation for deserialized Skylark rules.
Resubmitting after previous rollback.
--
MOS_MIGRATED_REVID=97972209
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 8afcbb7..1a52b5e 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
@@ -241,7 +241,7 @@
private void readObject(ObjectInputStream in) throws IOException {
try {
- deserializedPkg = new PackageDeserializer(null, null).deserialize(in);
+ deserializedPkg = new PackageDeserializer().deserialize(in);
} catch (PackageDeserializationException e) {
throw new IllegalStateException(e);
}
@@ -450,7 +450,7 @@
* though not necessarily: data in a subdirectory of a test package may use a
* different filename to avoid inadvertently creating a new package.
*/
- Label getBuildFileLabel() {
+ public Label getBuildFileLabel() {
return buildFile.getLabel();
}