diff options
3 files changed, 24 insertions, 14 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BazelSkyframeExecutorConstants.java b/src/main/java/com/google/devtools/build/lib/skyframe/BazelSkyframeExecutorConstants.java index 198c10fb74..9fb17e97d8 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/BazelSkyframeExecutorConstants.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/BazelSkyframeExecutorConstants.java @@ -17,13 +17,14 @@ import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.skyframe.PackageLookupFunction.CrossRepositoryLabelViolationStrategy; import com.google.devtools.build.lib.skyframe.PackageLookupValue.BuildFileName; -class BazelSkyframeExecutorConstants { +/** Hardcoded constants describing bazel-on-skyframe behavior. */ +public class BazelSkyframeExecutorConstants { private BazelSkyframeExecutorConstants() { } - static final CrossRepositoryLabelViolationStrategy CROSS_REPOSITORY_LABEL_VIOLATION_STRATEGY = - CrossRepositoryLabelViolationStrategy.ERROR; + public static final CrossRepositoryLabelViolationStrategy + CROSS_REPOSITORY_LABEL_VIOLATION_STRATEGY = CrossRepositoryLabelViolationStrategy.ERROR; - static final ImmutableList<BuildFileName> BUILD_FILES_BY_PRIORITY = + public static final ImmutableList<BuildFileName> BUILD_FILES_BY_PRIORITY = ImmutableList.of(BuildFileName.BUILD_DOT_BAZEL, BuildFileName.BUILD); } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java b/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java index 953c828f04..9d5a1b0634 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java @@ -52,6 +52,8 @@ import com.google.devtools.build.lib.skyframe.GlobFunction; import com.google.devtools.build.lib.skyframe.PackageFunction; import com.google.devtools.build.lib.skyframe.PackageFunction.CacheEntryWithGlobDeps; import com.google.devtools.build.lib.skyframe.PackageLookupFunction; +import com.google.devtools.build.lib.skyframe.PackageLookupFunction.CrossRepositoryLabelViolationStrategy; +import com.google.devtools.build.lib.skyframe.PackageLookupValue.BuildFileName; import com.google.devtools.build.lib.skyframe.PackageValue; import com.google.devtools.build.lib.skyframe.PrecomputedFunction; import com.google.devtools.build.lib.skyframe.PrecomputedValue; @@ -108,8 +110,6 @@ public abstract class AbstractPackageLoader implements PackageLoader { protected final ImmutableMap<SkyFunctionName, SkyFunction> extraSkyFunctions; protected final AtomicReference<PathPackageLocator> pkgLocatorRef; protected final ExternalFilesHelper externalFilesHelper; - protected final AtomicReference<ImmutableSet<PackageIdentifier>> deletedPackagesRef = - new AtomicReference<>(ImmutableSet.<PackageIdentifier>of()); protected final CachingPackageLocator packageManager; protected final BlazeDirectories directories; private final int legacyGlobbingThreads; @@ -307,7 +307,9 @@ public abstract class AbstractPackageLoader implements PackageLoader { protected abstract String getName(); protected abstract ImmutableList<EnvironmentExtension> getEnvironmentExtensions(); - protected abstract PackageLookupFunction makePackageLookupFunction(); + protected abstract CrossRepositoryLabelViolationStrategy + getCrossRepositoryLabelViolationStrategy(); + protected abstract ImmutableList<BuildFileName> getBuildFilesByPriority(); protected abstract ImmutableMap<SkyFunctionName, SkyFunction> getExtraExtraSkyFunctions(); protected final ImmutableMap<SkyFunctionName, SkyFunction> makeFreshSkyFunctions() { @@ -338,7 +340,12 @@ public abstract class AbstractPackageLoader implements PackageLoader { new FileSymlinkInfiniteExpansionUniquenessFunction()) .put(SkyFunctions.FILE, new FileFunction(pkgLocatorRef)) .put(SkyFunctions.DIRECTORY_LISTING, new DirectoryListingFunction()) - .put(SkyFunctions.PACKAGE_LOOKUP, makePackageLookupFunction()) + .put( + SkyFunctions.PACKAGE_LOOKUP, + new PackageLookupFunction( + /*deletedPackagesRef=*/ new AtomicReference<>(ImmutableSet.<PackageIdentifier>of()), + getCrossRepositoryLabelViolationStrategy(), + getBuildFilesByPriority())) .put(SkyFunctions.BLACKLISTED_PACKAGE_PREFIXES, new BlacklistedPackagePrefixesFunction()) .put(SkyFunctions.CONTAINING_PACKAGE_LOOKUP, new ContainingPackageLookupFunction()) .put(SkyFunctions.AST_FILE_LOOKUP, new ASTFileLookupFunction(ruleClassProvider)) diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoader.java b/src/main/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoader.java index 62335dd0d4..aa88fd59dc 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoader.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoader.java @@ -19,8 +19,8 @@ import com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider; import com.google.devtools.build.lib.packages.PackageFactory.EnvironmentExtension; import com.google.devtools.build.lib.packages.RuleClassProvider; import com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy; +import com.google.devtools.build.lib.skyframe.BazelSkyframeExecutorConstants; import com.google.devtools.build.lib.skyframe.LocalRepositoryLookupFunction; -import com.google.devtools.build.lib.skyframe.PackageLookupFunction; import com.google.devtools.build.lib.skyframe.PackageLookupFunction.CrossRepositoryLabelViolationStrategy; import com.google.devtools.build.lib.skyframe.PackageLookupValue.BuildFileName; import com.google.devtools.build.lib.skyframe.SkyFunctions; @@ -76,11 +76,13 @@ public class BazelPackageLoader extends AbstractPackageLoader { } @Override - protected PackageLookupFunction makePackageLookupFunction() { - return new PackageLookupFunction( - deletedPackagesRef, - CrossRepositoryLabelViolationStrategy.ERROR, - ImmutableList.of(BuildFileName.BUILD_DOT_BAZEL, BuildFileName.BUILD)); + protected CrossRepositoryLabelViolationStrategy getCrossRepositoryLabelViolationStrategy() { + return BazelSkyframeExecutorConstants.CROSS_REPOSITORY_LABEL_VIOLATION_STRATEGY; + } + + @Override + protected ImmutableList<BuildFileName> getBuildFilesByPriority() { + return BazelSkyframeExecutorConstants.BUILD_FILES_BY_PRIORITY; } @Override |