Add a hook to Package.Builder.Helper that gets called by PackageFunction after the Package is fully loaded.

--
MOS_MIGRATED_REVID=124260910
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 cbfeb5b..44d9e30 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
@@ -691,14 +691,23 @@
     return b;
   }
 
-  /** A builder for {@link Package} objects. Only intended to be used by {@link PackageFactory}. */
+  /**
+   * A builder for {@link Package} objects. Only intended to be used by {@link PackageFactory} and
+   * {@link com.google.devtools.build.lib.skyframe.PackageFunction}.
+   */
   public static class Builder {
     public static interface Helper {
       /**
        * Returns a fresh {@link Package} instance that a {@link Builder} will internally mutate
-       * during package loading.
+       * during package loading. Called by {@link PackageFactory}.
        */
       Package createFreshPackage(PackageIdentifier packageId, String runfilesPrefix);
+
+      /**
+       * Called after {@link com.google.devtools.build.lib.skyframe.PackageFunction} is completely
+       * done loading the given {@link Package}.
+       */
+      void onLoadingComplete(Package pkg);
     }
 
     /** {@link Helper} that simply calls the {@link Package} constructor. */
@@ -712,6 +721,10 @@
       public Package createFreshPackage(PackageIdentifier packageId, String runfilesPrefix) {
         return new Package(packageId, runfilesPrefix);
       }
+
+      @Override
+      public void onLoadingComplete(Package pkg) {
+      }
     }
 
     /**
diff --git a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
index 5a37b9d..5a20efc 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
@@ -1519,6 +1519,14 @@
   }
 
   /**
+   * Called by a caller of {@link #createPackageFromPreprocessingAst} after this caller has fully
+   * loaded the package.
+   */
+  public void afterDoneLoadingPackage(Package pkg) {
+    packageBuilderHelper.onLoadingComplete(pkg);
+  }
+
+  /**
    * Constructs a Package instance, evaluates the BUILD-file AST inside the
    * build environment, and populates the package with Rule instances as it
    * goes.  As with most programming languages, evaluation stops when an