aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java30
1 files changed, 29 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java
index 467b7a73f8..cb0d288788 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java
@@ -91,6 +91,7 @@ public class PackageFunction implements SkyFunction {
private final Cache<PackageIdentifier, CacheEntryWithGlobDeps<AstAfterPreprocessing>> astCache;
private final AtomicBoolean showLoadingProgress;
private final AtomicInteger numPackagesLoaded;
+ private final PackageProgressReceiver packageProgress;
private final Profiler profiler = Profiler.instance();
private final Label preludeLabel;
@@ -106,7 +107,8 @@ public class PackageFunction implements SkyFunction {
Cache<PackageIdentifier, CacheEntryWithGlobDeps<Package.Builder>> packageFunctionCache,
Cache<PackageIdentifier, CacheEntryWithGlobDeps<AstAfterPreprocessing>> astCache,
AtomicInteger numPackagesLoaded,
- @Nullable SkylarkImportLookupFunction skylarkImportLookupFunctionForInlining) {
+ @Nullable SkylarkImportLookupFunction skylarkImportLookupFunctionForInlining,
+ @Nullable PackageProgressReceiver packageProgress) {
this.skylarkImportLookupFunctionForInlining = skylarkImportLookupFunctionForInlining;
// Can be null in tests.
this.preludeLabel = packageFactory == null
@@ -118,6 +120,26 @@ public class PackageFunction implements SkyFunction {
this.packageFunctionCache = packageFunctionCache;
this.astCache = astCache;
this.numPackagesLoaded = numPackagesLoaded;
+ this.packageProgress = packageProgress;
+ }
+
+ public PackageFunction(
+ PackageFactory packageFactory,
+ CachingPackageLocator pkgLocator,
+ AtomicBoolean showLoadingProgress,
+ Cache<PackageIdentifier, CacheEntryWithGlobDeps<Package.Builder>> packageFunctionCache,
+ Cache<PackageIdentifier, CacheEntryWithGlobDeps<AstAfterPreprocessing>> astCache,
+ AtomicInteger numPackagesLoaded,
+ @Nullable SkylarkImportLookupFunction skylarkImportLookupFunctionForInlining) {
+ this(
+ packageFactory,
+ pkgLocator,
+ showLoadingProgress,
+ packageFunctionCache,
+ astCache,
+ numPackagesLoaded,
+ skylarkImportLookupFunctionForInlining,
+ null);
}
public void setSkylarkImportLookupFunctionForInliningForTesting(
@@ -1096,6 +1118,9 @@ public class PackageFunction implements SkyFunction {
packageFunctionCache.getIfPresent(packageId);
if (packageFunctionCacheEntry == null) {
profiler.startTask(ProfilerTask.CREATE_PACKAGE, packageId.toString());
+ if (packageProgress != null) {
+ packageProgress.startReadPackage(packageId);
+ }
try {
CacheEntryWithGlobDeps<AstAfterPreprocessing> astCacheEntry =
astCache.getIfPresent(packageId);
@@ -1183,6 +1208,9 @@ public class PackageFunction implements SkyFunction {
packageFunctionCacheEntry =
new CacheEntryWithGlobDeps<>(pkgBuilder, globDepsRequested, null);
numPackagesLoaded.incrementAndGet();
+ if (packageProgress != null) {
+ packageProgress.doneReadPackage(packageId);
+ }
packageFunctionCache.put(packageId, packageFunctionCacheEntry);
} finally {
profiler.completeTask(ProfilerTask.CREATE_PACKAGE);