Skip to content

Commit

Permalink
No public description
Browse files Browse the repository at this point in the history
PiperOrigin-RevId: 596041334
Change-Id: I6e29b07a3c21452642169c52494383c5fac0b09c
  • Loading branch information
yuyue730 authored and copybara-github committed Jan 5, 2024
1 parent 1013c52 commit 9ae2cda
Show file tree
Hide file tree
Showing 15 changed files with 654 additions and 583 deletions.
1 change: 1 addition & 0 deletions src/main/java/com/google/devtools/build/lib/skyframe/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ java_library(
"HighWaterMarkLimiter.java",
"LocalRepositoryLookupFunction.java",
"PackageFunction.java",
"PackageFunctionWithMultipleGlobDeps.java",
"PrepareDepsOfPatternFunction.java",
"SequencedSkyframeExecutor.java",
"SequencedSkyframeExecutorFactory.java",
Expand Down
537 changes: 153 additions & 384 deletions src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -616,18 +616,19 @@ private ImmutableMap<SkyFunctionName, SkyFunction> skyFunctions() {
map.put(SkyFunctions.RECURSIVE_PKG, new RecursivePkgFunction(directories));
map.put(
SkyFunctions.PACKAGE,
new PackageFunction(
pkgFactory,
packageManager,
showLoadingProgress,
numPackagesSuccessfullyLoaded,
bzlLoadFunctionForInliningPackageAndWorkspaceNodes,
packageProgress,
actionOnIOExceptionReadingBuildFile,
shouldUseRepoDotBazel,
getGlobbingStrategy(),
skyKeyStateReceiver::makeThreadStateReceiver,
cpuBoundSemaphore));
PackageFunction.newBuilder()
.setPackageFactory(pkgFactory)
.setPackageLocator(packageManager)
.setShowLoadingProgress(showLoadingProgress)
.setNumPackagesSuccessfullyLoaded(numPackagesSuccessfullyLoaded)
.setBzlLoadFunctionForInlining(bzlLoadFunctionForInliningPackageAndWorkspaceNodes)
.setPackageProgress(packageProgress)
.setActionOnIOExceptionReadingBuildFile(actionOnIOExceptionReadingBuildFile)
.setShouldUseRepoDotBazel(shouldUseRepoDotBazel)
.setGlobbingStrategy(getGlobbingStrategy())
.setThreadStateReceiverFactoryForMetrics(skyKeyStateReceiver::makeThreadStateReceiver)
.setCpuBoundSemaphore(cpuBoundSemaphore)
.build());
map.put(SkyFunctions.PACKAGE_ERROR, new PackageErrorFunction());
map.put(SkyFunctions.PACKAGE_ERROR_MESSAGE, new PackageErrorMessageFunction());
map.put(SkyFunctions.TARGET_PATTERN_ERROR, new TargetPatternErrorFunction());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
import com.google.common.eventbus.EventBus;
import com.google.common.hash.HashFunction;
import com.google.devtools.build.lib.actions.FileValue;
import com.google.devtools.build.lib.actions.ThreadStateReceiver;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.ServerDirectories;
Expand Down Expand Up @@ -107,8 +106,6 @@
import java.util.Map;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.Semaphore;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import javax.annotation.Nullable;
import net.starlark.java.eval.StarlarkSemantics;
Expand Down Expand Up @@ -337,8 +334,8 @@ public void inject(SkyKey key, Delta delta) {
}
PrecomputedValue.PATH_PACKAGE_LOCATOR.set(injectable, pkgLocator);
PrecomputedValue.DEFAULT_VISIBILITY.set(injectable, RuleVisibility.PRIVATE);
PrecomputedValue.CONFIG_SETTING_VISIBILITY_POLICY
.set(injectable, ConfigSettingVisibilityPolicy.LEGACY_OFF);
PrecomputedValue.CONFIG_SETTING_VISIBILITY_POLICY.set(
injectable, ConfigSettingVisibilityPolicy.LEGACY_OFF);
PrecomputedValue.STARLARK_SEMANTICS.set(injectable, starlarkSemantics);
return new ImmutableDiff(ImmutableList.of(), valuesToInject);
}
Expand Down Expand Up @@ -508,22 +505,18 @@ public String getBaseNameForLoadedPackage(PackageIdentifier packageName) {
.put(SkyFunctions.REPOSITORY_MAPPING, new RepositoryMappingFunction(ruleClassProvider))
.put(
SkyFunctions.PACKAGE,
new PackageFunction(
pkgFactory,
cachingPackageLocator,
/* showLoadingProgress= */ new AtomicBoolean(false),
/* numPackagesSuccessfullyLoaded= */ new AtomicInteger(0),
/* bzlLoadFunctionForInlining= */ null,
/* packageProgress= */ null,
getActionOnIOExceptionReadingBuildFile(),
shouldUseRepoDotBazel(),
// Tell PackageFunction to optimize for our use-case of no incrementality.
GlobbingStrategy.NON_SKYFRAME,
k -> ThreadStateReceiver.NULL_INSTANCE,
/* cpuBoundSemaphore= */ new AtomicReference<>(
cpuBoundSemaphoreTokenCount > 0
? new Semaphore(cpuBoundSemaphoreTokenCount)
: null)))
PackageFunction.newBuilder()
.setPackageFactory(pkgFactory)
.setPackageLocator(cachingPackageLocator)
.setActionOnIOExceptionReadingBuildFile(getActionOnIOExceptionReadingBuildFile())
.setShouldUseRepoDotBazel(shouldUseRepoDotBazel())
.setGlobbingStrategy(GlobbingStrategy.NON_SKYFRAME)
.setCpuBoundSemaphore(
new AtomicReference<>(
cpuBoundSemaphoreTokenCount > 0
? new Semaphore(cpuBoundSemaphoreTokenCount)
: null))
.build())
.putAll(extraSkyFunctions);
return builder.buildOrThrow();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
import com.google.common.collect.ImmutableSet;
import com.google.common.hash.HashFunction;
import com.google.devtools.build.lib.actions.FileValue;
import com.google.devtools.build.lib.actions.ThreadStateReceiver;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.ServerDirectories;
Expand Down Expand Up @@ -66,7 +65,6 @@
import com.google.devtools.build.lib.skyframe.IgnoredPackagePrefixesFunction;
import com.google.devtools.build.lib.skyframe.LocalRepositoryLookupFunction;
import com.google.devtools.build.lib.skyframe.PackageFunction;
import com.google.devtools.build.lib.skyframe.PackageFunction.GlobbingStrategy;
import com.google.devtools.build.lib.skyframe.PackageLookupFunction;
import com.google.devtools.build.lib.skyframe.PackageLookupFunction.CrossRepositoryLabelViolationStrategy;
import com.google.devtools.build.lib.skyframe.PackageValue;
Expand Down Expand Up @@ -98,7 +96,6 @@
import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import net.starlark.java.eval.StarlarkSemantics;
import org.junit.Before;
Expand Down Expand Up @@ -203,21 +200,7 @@ public void setup() throws Exception {
.put(
SkyFunctions.STARLARK_BUILTINS,
new StarlarkBuiltinsFunction(ruleClassProvider.getBazelStarlarkEnvironment()))
.put(
SkyFunctions.PACKAGE,
new PackageFunction(
/* packageFactory= */ null,
/* pkgLocator= */ null,
/* showLoadingProgress= */ null,
/* numPackagesSuccessfullyLoaded= */ new AtomicInteger(),
/* bzlLoadFunctionForInlining= */ null,
/* packageProgress= */ null,
PackageFunction.ActionOnIOExceptionReadingBuildFile.UseOriginalIOException
.INSTANCE,
/* shouldUseRepoDotBazel= */ true,
GlobbingStrategy.SKYFRAME_HYBRID,
ignored -> ThreadStateReceiver.NULL_INSTANCE,
/* cpuBoundSemaphore= */ new AtomicReference<>()))
.put(SkyFunctions.PACKAGE, PackageFunction.newBuilder().build())
.put(
SkyFunctions.PACKAGE_LOOKUP,
new PackageLookupFunction(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.actions.FileValue;
import com.google.devtools.build.lib.actions.ThreadStateReceiver;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.ServerDirectories;
import com.google.devtools.build.lib.analysis.util.AnalysisMock;
Expand All @@ -48,7 +47,6 @@
import com.google.devtools.build.lib.skyframe.FileStateFunction;
import com.google.devtools.build.lib.skyframe.LocalRepositoryLookupFunction;
import com.google.devtools.build.lib.skyframe.PackageFunction;
import com.google.devtools.build.lib.skyframe.PackageFunction.GlobbingStrategy;
import com.google.devtools.build.lib.skyframe.PackageLookupFunction;
import com.google.devtools.build.lib.skyframe.PackageLookupFunction.CrossRepositoryLabelViolationStrategy;
import com.google.devtools.build.lib.skyframe.PrecomputedValue;
Expand Down Expand Up @@ -80,7 +78,6 @@
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Stream;
import javax.annotation.Nullable;
Expand Down Expand Up @@ -159,20 +156,7 @@ public void createEnvironment() throws Exception {
.build(ruleClassProvider, fileSystem),
directories,
/*bzlLoadFunctionForInlining=*/ null));
skyFunctions.put(
SkyFunctions.PACKAGE,
new PackageFunction(
null,
null,
null,
/* numPackagesSuccessfullyLoaded= */ new AtomicInteger(),
null,
/* packageProgress= */ null,
PackageFunction.ActionOnIOExceptionReadingBuildFile.UseOriginalIOException.INSTANCE,
/* shouldUseRepoDotBazel= */ true,
GlobbingStrategy.SKYFRAME_HYBRID,
k -> ThreadStateReceiver.NULL_INSTANCE,
new AtomicReference<>()));
skyFunctions.put(SkyFunctions.PACKAGE, PackageFunction.newBuilder().build());
skyFunctions.put(
SkyFunctions.EXTERNAL_PACKAGE,
new ExternalPackageFunction(BazelSkyframeExecutorConstants.EXTERNAL_PACKAGE_HELPER));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
import com.google.common.collect.ImmutableSet;
import com.google.common.hash.HashFunction;
import com.google.devtools.build.lib.actions.FileValue;
import com.google.devtools.build.lib.actions.ThreadStateReceiver;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.ServerDirectories;
Expand Down Expand Up @@ -68,7 +67,6 @@
import com.google.devtools.build.lib.skyframe.IgnoredPackagePrefixesFunction;
import com.google.devtools.build.lib.skyframe.LocalRepositoryLookupFunction;
import com.google.devtools.build.lib.skyframe.PackageFunction;
import com.google.devtools.build.lib.skyframe.PackageFunction.GlobbingStrategy;
import com.google.devtools.build.lib.skyframe.PackageLookupFunction;
import com.google.devtools.build.lib.skyframe.PackageLookupFunction.CrossRepositoryLabelViolationStrategy;
import com.google.devtools.build.lib.skyframe.PrecomputedFunction;
Expand Down Expand Up @@ -189,21 +187,7 @@ public void setupDelegator() throws Exception {
externalFilesHelper))
.put(FileValue.FILE, new FileFunction(pkgLocator, directories))
.put(SkyFunctions.REPOSITORY_DIRECTORY, delegatorFunction)
.put(
SkyFunctions.PACKAGE,
new PackageFunction(
null,
null,
null,
null,
null,
/* packageProgress= */ null,
PackageFunction.ActionOnIOExceptionReadingBuildFile.UseOriginalIOException
.INSTANCE,
/* shouldUseRepoDotBazel= */ true,
GlobbingStrategy.SKYFRAME_HYBRID,
k -> ThreadStateReceiver.NULL_INSTANCE,
/* cpuBoundSemaphore= */ new AtomicReference<>()))
.put(SkyFunctions.PACKAGE, PackageFunction.newBuilder().build())
.put(
SkyFunctions.PACKAGE_LOOKUP,
new PackageLookupFunction(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,13 @@
import com.google.devtools.build.lib.actions.ActionLookupKey;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.FileValue;
import com.google.devtools.build.lib.actions.ThreadStateReceiver;
import com.google.devtools.build.lib.actions.util.InjectedActionLookupKey;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.ServerDirectories;
import com.google.devtools.build.lib.clock.BlazeClock;
import com.google.devtools.build.lib.packages.WorkspaceFileValue;
import com.google.devtools.build.lib.pkgcache.PathPackageLocator;
import com.google.devtools.build.lib.skyframe.ExternalFilesHelper.ExternalFileAction;
import com.google.devtools.build.lib.skyframe.PackageFunction.GlobbingStrategy;
import com.google.devtools.build.lib.skyframe.PackageLookupFunction.CrossRepositoryLabelViolationStrategy;
import com.google.devtools.build.lib.testutil.TestConstants;
import com.google.devtools.build.lib.testutil.TestPackageFactoryBuilderFactory;
Expand Down Expand Up @@ -114,21 +112,7 @@ public void baseSetUp() throws Exception {
new ArtifactFunction(
() -> true, MetadataConsumerForMetrics.NO_OP, SyscallCache.NO_CACHE))
.put(SkyFunctions.ACTION_EXECUTION, new SimpleActionExecutionFunction())
.put(
SkyFunctions.PACKAGE,
new PackageFunction(
null,
null,
null,
null,
null,
/* packageProgress= */ null,
PackageFunction.ActionOnIOExceptionReadingBuildFile.UseOriginalIOException
.INSTANCE,
/* shouldUseRepoDotBazel= */ true,
GlobbingStrategy.SKYFRAME_HYBRID,
k -> ThreadStateReceiver.NULL_INSTANCE,
new AtomicReference<>()))
.put(SkyFunctions.PACKAGE, PackageFunction.newBuilder().build())
.put(
SkyFunctions.PACKAGE_LOOKUP,
new PackageLookupFunction(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
import com.google.common.collect.ImmutableSet;
import com.google.common.testing.EqualsTester;
import com.google.devtools.build.lib.actions.FileValue;
import com.google.devtools.build.lib.actions.ThreadStateReceiver;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.ServerDirectories;
import com.google.devtools.build.lib.analysis.util.AnalysisMock;
Expand All @@ -41,7 +40,6 @@
import com.google.devtools.build.lib.skyframe.ContainingPackageLookupValue.ContainingPackage;
import com.google.devtools.build.lib.skyframe.ContainingPackageLookupValue.NoContainingPackage;
import com.google.devtools.build.lib.skyframe.ExternalFilesHelper.ExternalFileAction;
import com.google.devtools.build.lib.skyframe.PackageFunction.GlobbingStrategy;
import com.google.devtools.build.lib.skyframe.PackageLookupFunction.CrossRepositoryLabelViolationStrategy;
import com.google.devtools.build.lib.skyframe.PackageLookupValue.ErrorReason;
import com.google.devtools.build.lib.testutil.FoundationTestCase;
Expand Down Expand Up @@ -111,20 +109,7 @@ public final void setUp() throws Exception {
CrossRepositoryLabelViolationStrategy.ERROR,
BazelSkyframeExecutorConstants.BUILD_FILES_BY_PRIORITY,
BazelSkyframeExecutorConstants.EXTERNAL_PACKAGE_HELPER));
skyFunctions.put(
SkyFunctions.PACKAGE,
new PackageFunction(
null,
null,
null,
null,
null,
/* packageProgress= */ null,
PackageFunction.ActionOnIOExceptionReadingBuildFile.UseOriginalIOException.INSTANCE,
/* shouldUseRepoDotBazel= */ true,
GlobbingStrategy.SKYFRAME_HYBRID,
k -> ThreadStateReceiver.NULL_INSTANCE,
new AtomicReference<>()));
skyFunctions.put(SkyFunctions.PACKAGE, PackageFunction.newBuilder().build());
skyFunctions.put(
SkyFunctions.IGNORED_PACKAGE_PREFIXES,
new IgnoredPackagePrefixesFunction(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@
import com.google.devtools.build.lib.actions.FileValue.DifferentRealPathFileValueWithoutStoredChain;
import com.google.devtools.build.lib.actions.FileValue.SymlinkFileValueWithStoredChain;
import com.google.devtools.build.lib.actions.FileValue.SymlinkFileValueWithoutStoredChain;
import com.google.devtools.build.lib.actions.ThreadStateReceiver;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.ServerDirectories;
Expand All @@ -58,7 +57,6 @@
import com.google.devtools.build.lib.rules.repository.RepositoryDelegatorFunction;
import com.google.devtools.build.lib.rules.repository.RepositoryFunction;
import com.google.devtools.build.lib.skyframe.ExternalFilesHelper.ExternalFileAction;
import com.google.devtools.build.lib.skyframe.PackageFunction.GlobbingStrategy;
import com.google.devtools.build.lib.skyframe.PackageLookupFunction.CrossRepositoryLabelViolationStrategy;
import com.google.devtools.build.lib.skyframe.serialization.testutils.FsUtils;
import com.google.devtools.build.lib.skyframe.serialization.testutils.SerializationTester;
Expand Down Expand Up @@ -185,21 +183,7 @@ private MemoizingEvaluator makeEvaluator(ExternalFileAction externalFileAction)
FileSymlinkInfiniteExpansionUniquenessFunction.NAME,
new FileSymlinkInfiniteExpansionUniquenessFunction())
.put(FileValue.FILE, new FileFunction(pkgLocatorRef, directories))
.put(
SkyFunctions.PACKAGE,
new PackageFunction(
null,
null,
null,
null,
null,
/* packageProgress= */ null,
PackageFunction.ActionOnIOExceptionReadingBuildFile.UseOriginalIOException
.INSTANCE,
/* shouldUseRepoDotBazel= */ true,
GlobbingStrategy.SKYFRAME_HYBRID,
k -> ThreadStateReceiver.NULL_INSTANCE,
new AtomicReference<>()))
.put(SkyFunctions.PACKAGE, PackageFunction.newBuilder().build())
.put(
SkyFunctions.PACKAGE_LOOKUP,
new PackageLookupFunction(
Expand Down
Loading

0 comments on commit 9ae2cda

Please sign in to comment.