Three changes: @AutoCodec some GlobalFrames I saw in test debugging; roll back unused unknown commit;
PiperOrigin-RevId: 209138584
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java
index 00311c3..96204c8 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java
@@ -856,6 +856,10 @@
return globals.getTransitiveBindings();
}
+ public Object getGlobalsForConstantRegistration() {
+ return globals;
+ }
+
/** Returns all registered {@link BuildConfiguration.Fragment} classes. */
public ImmutableSortedSet<Class<? extends BuildConfiguration.Fragment>> getAllFragments() {
ImmutableSortedSet.Builder<Class<? extends BuildConfiguration.Fragment>> fragmentsBuilder =
diff --git a/src/main/java/com/google/devtools/build/lib/packages/BazelLibrary.java b/src/main/java/com/google/devtools/build/lib/packages/BazelLibrary.java
index fa697c0..44fa1be 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/BazelLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/BazelLibrary.java
@@ -15,6 +15,7 @@
package com.google.devtools.build.lib.packages;
import com.google.common.collect.ImmutableMap;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.syntax.Environment.GlobalFrame;
import com.google.devtools.build.lib.syntax.MethodLibrary;
import com.google.devtools.build.lib.syntax.Runtime;
@@ -25,7 +26,7 @@
public class BazelLibrary {
/** A global frame containing pure Skylark builtins and some Bazel builtins. */
- public static final GlobalFrame GLOBALS = createGlobals();
+ @AutoCodec public static final GlobalFrame GLOBALS = createGlobals();
private static GlobalFrame createGlobals() {
ImmutableMap.Builder<String, Object> builder = ImmutableMap.builder();
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeModule.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeModule.java
index 806ca40..cb2b81e 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeModule.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeModule.java
@@ -28,7 +28,6 @@
import com.google.devtools.build.lib.packages.NoSuchThingException;
import com.google.devtools.build.lib.packages.Package;
import com.google.devtools.build.lib.packages.PackageFactory;
-import com.google.devtools.build.lib.packages.RuleClassProvider;
import com.google.devtools.build.lib.skyframe.PrecomputedValue;
import com.google.devtools.build.lib.util.AbruptExitException;
import com.google.devtools.build.lib.util.io.OutErr;
@@ -264,7 +263,8 @@
* does not provide any helper, it should return null. Note that only one helper per Bazel/Blaze
* runtime is allowed.
*/
- public Package.Builder.Helper getPackageBuilderHelper(RuleClassProvider ruleClassProvider) {
+ public Package.Builder.Helper getPackageBuilderHelper(
+ ConfiguredRuleClassProvider ruleClassProvider) {
return null;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
index 50aef61..de25b59 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
@@ -291,7 +291,7 @@
private final ImmutableSet<PathFragment> hardcodedBlacklistedPackagePrefixes;
private final PathFragment additionalBlacklistedPackagePrefixesFile;
- private final RuleClassProvider ruleClassProvider;
+ private final ConfiguredRuleClassProvider ruleClassProvider;
private final CrossRepositoryLabelViolationStrategy crossRepositoryLabelViolationStrategy;
@@ -391,7 +391,7 @@
this.hardcodedBlacklistedPackagePrefixes = hardcodedBlacklistedPackagePrefixes;
this.additionalBlacklistedPackagePrefixesFile = additionalBlacklistedPackagePrefixesFile;
- this.ruleClassProvider = pkgFactory.getRuleClassProvider();
+ this.ruleClassProvider = (ConfiguredRuleClassProvider) pkgFactory.getRuleClassProvider();
this.defaultBuildOptions = defaultBuildOptions;
this.skyframeBuildView =
new SkyframeBuildView(
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 7c85b57..1e05dd04 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
@@ -26,6 +26,7 @@
import com.google.devtools.build.lib.actions.FileStateValue;
import com.google.devtools.build.lib.actions.FileValue;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
+import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.ServerDirectories;
import com.google.devtools.build.lib.clock.BlazeClock;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
@@ -40,7 +41,6 @@
import com.google.devtools.build.lib.packages.Package;
import com.google.devtools.build.lib.packages.PackageFactory;
import com.google.devtools.build.lib.packages.PackageFactory.EnvironmentExtension;
-import com.google.devtools.build.lib.packages.RuleClassProvider;
import com.google.devtools.build.lib.pkgcache.PathPackageLocator;
import com.google.devtools.build.lib.skyframe.ASTFileLookupFunction;
import com.google.devtools.build.lib.skyframe.BazelSkyframeExecutorConstants;
@@ -120,7 +120,8 @@
}
};
private final Reporter reporter;
- protected final RuleClassProvider ruleClassProvider;
+ protected final ConfiguredRuleClassProvider ruleClassProvider;
+ private final PackageFactory pkgFactory;
protected SkylarkSemantics skylarkSemantics;
protected final ImmutableMap<SkyFunctionName, SkyFunction> extraSkyFunctions;
private final AtomicReference<PathPackageLocator> pkgLocatorRef;
@@ -136,7 +137,7 @@
protected final PathPackageLocator pkgLocator;
final AtomicReference<PathPackageLocator> pkgLocatorRef;
protected final ExternalFilesHelper externalFilesHelper;
- protected RuleClassProvider ruleClassProvider = getDefaultRuleClassProvider();
+ protected ConfiguredRuleClassProvider ruleClassProvider = getDefaultRuleClassProvider();
protected SkylarkSemantics skylarkSemantics;
protected Reporter reporter = new Reporter(new EventBus());
protected Map<SkyFunctionName, SkyFunction> extraSkyFunctions = new HashMap<>();
@@ -167,7 +168,7 @@
directories);
}
- public Builder setRuleClassProvider(RuleClassProvider ruleClassProvider) {
+ public Builder setRuleClassProvider(ConfiguredRuleClassProvider ruleClassProvider) {
this.ruleClassProvider = ruleClassProvider;
return this;
}
@@ -228,7 +229,7 @@
protected abstract PackageLoader buildImpl();
- protected abstract RuleClassProvider getDefaultRuleClassProvider();
+ protected abstract ConfiguredRuleClassProvider getDefaultRuleClassProvider();
}
AbstractPackageLoader(Builder builder) {
@@ -248,6 +249,13 @@
skylarkSemantics,
builder.pkgLocator,
ImmutableList.copyOf(builder.extraPrecomputedValues));
+ pkgFactory =
+ new PackageFactory(
+ ruleClassProvider,
+ AttributeContainer::new,
+ getEnvironmentExtensions(),
+ "PackageLoader",
+ Package.Builder.DefaultHelper.INSTANCE);
}
private static ImmutableDiff makePreinjectedDiff(
@@ -310,6 +318,14 @@
return result.build();
}
+ public ConfiguredRuleClassProvider getRuleClassProvider() {
+ return ruleClassProvider;
+ }
+
+ public PackageFactory getPackageFactory() {
+ return pkgFactory;
+ }
+
private static NoSuchPackageException exceptionFromErrorInfo(
ErrorInfo error, PackageIdentifier pkgId) {
if (!Iterables.isEmpty(error.getCycleInfo())) {
@@ -340,11 +356,6 @@
/*keepEdges=*/ false));
}
- /**
- * Version is the string BazelPackageLoader reports in native.bazel_version to be used by Skylark.
- */
- protected abstract String getVersion();
-
protected abstract ImmutableList<EnvironmentExtension> getEnvironmentExtensions();
protected abstract CrossRepositoryLabelViolationStrategy
@@ -363,13 +374,6 @@
AtomicReference<PerBuildSyscallCache> syscallCacheRef =
new AtomicReference<>(
PerBuildSyscallCache.newBuilder().setConcurrencyLevel(legacyGlobbingThreads).build());
- PackageFactory pkgFactory =
- new PackageFactory(
- ruleClassProvider,
- AttributeContainer::new,
- getEnvironmentExtensions(),
- getVersion(),
- Package.Builder.DefaultHelper.INSTANCE);
pkgFactory.setGlobbingThreads(legacyGlobbingThreads);
pkgFactory.setSyscalls(syscallCacheRef);
pkgFactory.setMaxDirectoriesToEagerlyVisitInGlobbing(
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 bb3de55..d299418 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
@@ -26,7 +26,6 @@
import com.google.devtools.build.lib.bazel.rules.BazelRulesModule;
import com.google.devtools.build.lib.packages.BuildFileName;
import com.google.devtools.build.lib.packages.PackageFactory.EnvironmentExtension;
-import com.google.devtools.build.lib.packages.RuleClassProvider;
import com.google.devtools.build.lib.rules.repository.RepositoryDelegatorFunction;
import com.google.devtools.build.lib.rules.repository.RepositoryFunction;
import com.google.devtools.build.lib.rules.repository.RepositoryLoaderFunction;
@@ -51,12 +50,6 @@
* caching or incrementality.
*/
public class BazelPackageLoader extends AbstractPackageLoader {
-
- /**
- * Version is the string BazelPackageLoader reports in native.bazel_version to be used by Skylark.
- */
- private final String version;
-
/** Returns a fresh {@link Builder} instance. */
public static Builder builder(Path workspaceDir, Path installBase, Path outputBase) {
// Prevent PackageLoader from fetching any remote repositories; these should only be fetched by
@@ -115,8 +108,6 @@
private final AtomicBoolean isFetch;
- private String version = "";
-
private static ConfiguredRuleClassProvider createRuleClassProvider() {
ConfiguredRuleClassProvider.Builder classProvider = new ConfiguredRuleClassProvider.Builder();
new BazelRepositoryModule().initializeRuleClasses(classProvider);
@@ -131,37 +122,22 @@
@Override
public BazelPackageLoader buildImpl() {
- return new BazelPackageLoader(this, version);
+ return new BazelPackageLoader(this);
}
@Override
- protected RuleClassProvider getDefaultRuleClassProvider() {
+ protected ConfiguredRuleClassProvider getDefaultRuleClassProvider() {
return DEFAULT_RULE_CLASS_PROVIDER;
}
- /**
- * Version is the string BazelPackageLoader reports in native.bazel_version to be used by
- * Skylark.
- */
- public Builder setVersion(String version) {
- this.version = version;
- return this;
- }
-
Builder setFetchForTesting() {
this.isFetch.set(true);
return this;
}
}
- private BazelPackageLoader(Builder builder, String version) {
+ private BazelPackageLoader(Builder builder) {
super(builder);
- this.version = version;
- }
-
- @Override
- protected String getVersion() {
- return version;
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Environment.java b/src/main/java/com/google/devtools/build/lib/syntax/Environment.java
index 3f752df..e32b545 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Environment.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Environment.java
@@ -1337,13 +1337,12 @@
}
/** A read-only {@link Environment.GlobalFrame} with False/True/None constants only. */
- static final GlobalFrame CONSTANTS_ONLY = createConstantsGlobals();
+ @AutoCodec static final GlobalFrame CONSTANTS_ONLY = createConstantsGlobals();
/**
- * A read-only {@link Environment.GlobalFrame} with initial globals as defined in
- * MethodLibrary.
+ * A read-only {@link Environment.GlobalFrame} with initial globals as defined in MethodLibrary.
*/
- public static final GlobalFrame DEFAULT_GLOBALS = createDefaultGlobals();
+ @AutoCodec public static final GlobalFrame DEFAULT_GLOBALS = createDefaultGlobals();
/** To be removed when all call-sites are updated. */
public static final GlobalFrame SKYLARK = DEFAULT_GLOBALS;