Skip to content

Commit 30d033c

Browse files
meteorcloudycopybara-github
authored andcommitted
Flip --enable_bzlmod to true
Bazel tests status: - Bzlmod disabled: - AnalysisTestCase: to be migrated - ConfigurationTestCase: to be migrated - ConfigCommandTest: to be migrated, probably blocked by a bug - Bzlmod enabled: - BuildViewTestCase: migrated at d51144c - Java integration tests migrated at 8d04711 - Shell integration tests migrated at 175a18d (Bzlmod disabled in some tests) - Python integration tests migrated at 50c8375 (Bzlmod disabled in some tests) - BuildIntegrationTestCase: migrated in this change - Other Java unit tests migrated in this change Issues identified: - cc_shared_library doesn't work well with Bzlmod: #19822 - `bazel config` doesn't work well with Bzlmod: #19823 Fixes #18958 Tracking migration of remaining test cases in #19824 RELNOTES[INC]: Bzlmod is enabled by default, please consider migrating your external dependencies from WORKSPACE to MODULE.bazel. Find more details at #18958 PiperOrigin-RevId: 573827480 Change-Id: I097b4bd7caafc996b034284ee688b8f3d2bca1f7
1 parent 659d7b2 commit 30d033c

33 files changed

+323
-136
lines changed

src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java

Lines changed: 42 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
package com.google.devtools.build.lib.bazel;
1717

18+
import com.google.common.annotations.VisibleForTesting;
1819
import com.google.common.base.Preconditions;
1920
import com.google.common.base.Strings;
2021
import com.google.common.base.Supplier;
@@ -162,11 +163,19 @@ public class BazelRepositoryModule extends BlazeModule {
162163

163164
@Nullable private CredentialModule credentialModule;
164165

166+
private ImmutableMap<String, NonRegistryOverride> builtinModules = null;
167+
165168
public BazelRepositoryModule() {
166169
this.starlarkRepositoryFunction = new StarlarkRepositoryFunction(downloadManager);
167170
this.repositoryHandlers = repositoryRules();
168171
}
169172

173+
@VisibleForTesting
174+
public BazelRepositoryModule(ImmutableMap<String, NonRegistryOverride> builtinModules) {
175+
this();
176+
this.builtinModules = builtinModules;
177+
}
178+
170179
private static DetailedExitCode detailedExitCode(String message, ExternalRepository.Code code) {
171180
return DetailedExitCode.of(
172181
FailureDetail.newBuilder()
@@ -234,37 +243,39 @@ public void workspaceInit(
234243
singleExtensionEvalFunction =
235244
new SingleExtensionEvalFunction(directories, clientEnvironmentSupplier, downloadManager);
236245

237-
ImmutableMap<String, NonRegistryOverride> builtinModules =
238-
ImmutableMap.of(
239-
// @bazel_tools is a special repo that we pull from the extracted install dir.
240-
"bazel_tools",
241-
LocalPathOverride.create(
242-
directories.getEmbeddedBinariesRoot().getChild("embedded_tools").getPathString()),
243-
// @local_config_platform is currently generated by the native repo rule
244-
// local_config_platform
245-
// It has to be a special repo for now because:
246-
// - It's embedded in local_config_platform.WORKSPACE and depended on by many
247-
// toolchains.
248-
// - The canonical name "local_config_platform" is hardcoded in Bazel code.
249-
// See {@link PlatformOptions}
250-
"local_config_platform",
251-
new NonRegistryOverride() {
252-
@Override
253-
public RepoSpec getRepoSpec(RepositoryName repoName) {
254-
return RepoSpec.builder()
255-
.setRuleClassName("local_config_platform")
256-
.setAttributes(
257-
AttributeValues.create(ImmutableMap.of("name", repoName.getName())))
258-
.build();
259-
}
260-
261-
@Override
262-
public ResolutionReason getResolutionReason() {
263-
// NOTE: It is not exactly a LOCAL_PATH_OVERRIDE, but there is no inspection
264-
// ResolutionReason for builtin modules
265-
return ResolutionReason.LOCAL_PATH_OVERRIDE;
266-
}
267-
});
246+
if (builtinModules == null) {
247+
builtinModules =
248+
ImmutableMap.of(
249+
// @bazel_tools is a special repo that we pull from the extracted install dir.
250+
"bazel_tools",
251+
LocalPathOverride.create(
252+
directories.getEmbeddedBinariesRoot().getChild("embedded_tools").getPathString()),
253+
// @local_config_platform is currently generated by the native repo rule
254+
// local_config_platform
255+
// It has to be a special repo for now because:
256+
// - It's embedded in local_config_platform.WORKSPACE and depended on by many
257+
// toolchains.
258+
// - The canonical name "local_config_platform" is hardcoded in Bazel code.
259+
// See {@link PlatformOptions}
260+
"local_config_platform",
261+
new NonRegistryOverride() {
262+
@Override
263+
public RepoSpec getRepoSpec(RepositoryName repoName) {
264+
return RepoSpec.builder()
265+
.setRuleClassName("local_config_platform")
266+
.setAttributes(
267+
AttributeValues.create(ImmutableMap.of("name", repoName.getName())))
268+
.build();
269+
}
270+
271+
@Override
272+
public ResolutionReason getResolutionReason() {
273+
// NOTE: It is not exactly a LOCAL_PATH_OVERRIDE, but there is no inspection
274+
// ResolutionReason for builtin modules
275+
return ResolutionReason.LOCAL_PATH_OVERRIDE;
276+
}
277+
});
278+
}
268279

269280
builder
270281
.addSkyFunction(SkyFunctions.REPOSITORY_DIRECTORY, repositoryDelegatorFunction)

src/main/java/com/google/devtools/build/lib/bazel/bzlmod/BazelDepGraphValue.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515

1616
package com.google.devtools.build.lib.bazel.bzlmod;
1717

18+
import static com.google.common.collect.ImmutableMap.toImmutableMap;
19+
1820
import com.google.auto.value.AutoValue;
1921
import com.google.common.collect.ImmutableList;
2022
import com.google.common.collect.ImmutableMap;
@@ -49,6 +51,32 @@ public static BazelDepGraphValue create(
4951
extensionUniqueNames);
5052
}
5153

54+
public static BazelDepGraphValue createEmptyDepGraph() {
55+
Module root =
56+
Module.builder()
57+
.setName("")
58+
.setVersion(Version.EMPTY)
59+
.setRepoName("")
60+
.setKey(ModuleKey.ROOT)
61+
.setExtensionUsages(ImmutableList.of())
62+
.setExecutionPlatformsToRegister(ImmutableList.of())
63+
.setToolchainsToRegister(ImmutableList.of())
64+
.build();
65+
66+
ImmutableMap<ModuleKey, Module> emptyDepGraph = ImmutableMap.of(ModuleKey.ROOT, root);
67+
68+
ImmutableMap<RepositoryName, ModuleKey> canonicalRepoNameLookup =
69+
emptyDepGraph.keySet().stream()
70+
.collect(toImmutableMap(ModuleKey::getCanonicalRepoName, key -> key));
71+
72+
return BazelDepGraphValue.create(
73+
emptyDepGraph,
74+
canonicalRepoNameLookup,
75+
ImmutableList.of(),
76+
ImmutableTable.of(),
77+
ImmutableMap.of());
78+
}
79+
5280
/**
5381
* The post-selection dep graph. Must have BFS iteration order, starting from the root module. For
5482
* any KEY in the returned map, it's guaranteed that {@code depGraph[KEY].getKey() == KEY}.

src/main/java/com/google/devtools/build/lib/packages/semantics/BuildLanguageOptions.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ public final class BuildLanguageOptions extends OptionsBase {
197197
@Option(
198198
name = "enable_bzlmod",
199199
oldName = "experimental_enable_bzlmod",
200-
defaultValue = "false",
200+
defaultValue = "true",
201201
documentationCategory = OptionDocumentationCategory.STARLARK_SEMANTICS,
202202
effectTags = OptionEffectTag.LOADING_AND_ANALYSIS,
203203
help =
@@ -821,7 +821,7 @@ public StarlarkSemantics toStarlarkSemantics() {
821821
public static final String EXPERIMENTAL_ENABLE_ANDROID_MIGRATION_APIS =
822822
"-experimental_enable_android_migration_apis";
823823
public static final String EXPERIMENTAL_ENABLE_SCL_DIALECT = "-experimental_enable_scl_dialect";
824-
public static final String ENABLE_BZLMOD = "-enable_bzlmod";
824+
public static final String ENABLE_BZLMOD = "+enable_bzlmod";
825825
public static final String EXPERIMENTAL_ISOLATED_EXTENSION_USAGES =
826826
"-experimental_isolated_extension_usages";
827827
public static final String INCOMPATIBLE_EXISTING_RULES_IMMUTABLE_VIEW =

src/main/java/com/google/devtools/build/lib/skyframe/RepositoryMappingFunction.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@ public SkyValue compute(SkyKey skyKey, Environment env)
6060

6161
if (enableBzlmod) {
6262
if (StarlarkBuiltinsValue.isBuiltinsRepo(repositoryName)) {
63+
// If tools repo is not set, repo mapping for @_builtins should be always fallback.
64+
if (ruleClassProvider.getToolsRepository() == null) {
65+
return RepositoryMappingValue.createForWorkspaceRepo(RepositoryMapping.ALWAYS_FALLBACK);
66+
}
6367
// Builtins .bzl files should use the repo mapping of @bazel_tools, to get access to repos
6468
// such as @platforms.
6569
RepositoryMappingValue bazelToolsMapping =

src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@
9999
import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
100100
import com.google.devtools.build.lib.analysis.constraints.RuleContextConstraintSemantics;
101101
import com.google.devtools.build.lib.analysis.producers.ConfiguredTargetAndDataProducer;
102+
import com.google.devtools.build.lib.bazel.bzlmod.BazelDepGraphValue;
102103
import com.google.devtools.build.lib.bazel.bzlmod.BzlmodRepoRuleValue;
103104
import com.google.devtools.build.lib.bazel.repository.RepositoryOptions;
104105
import com.google.devtools.build.lib.bugreport.BugReporter;
@@ -672,6 +673,16 @@ private ImmutableMap<SkyFunctionName, SkyFunction> skyFunctions() {
672673
throw new IllegalStateException("supposed to be unused");
673674
});
674675
map.put(SkyFunctions.EXTERNAL_PACKAGE, new ExternalPackageFunction(externalPackageHelper));
676+
// Inject an empty default BAZEL_DEP_GRAPH SkyFunction for Blaze, it'll be overridden by
677+
// BazelRepositoryModule in Bazel
678+
map.put(
679+
SkyFunctions.BAZEL_DEP_GRAPH,
680+
new SkyFunction() {
681+
@Override
682+
public SkyValue compute(SkyKey skyKey, Environment env) {
683+
return BazelDepGraphValue.createEmptyDepGraph();
684+
}
685+
});
675686
map.put(
676687
BzlmodRepoRuleValue.BZLMOD_REPO_RULE,
677688
new BzlmodRepoRuleFunction(ruleClassProvider, directories));

src/main/java/com/google/devtools/build/lib/skyframe/packages/BUILD

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ java_library(
8080
":AbstractPackageLoader",
8181
"//src/main/java/com/google/devtools/build/lib/analysis:analysis_cluster",
8282
"//src/main/java/com/google/devtools/build/lib/bazel:repository_module",
83+
"//src/main/java/com/google/devtools/build/lib/bazel/bzlmod:registry",
84+
"//src/main/java/com/google/devtools/build/lib/bazel/bzlmod:resolution_impl",
85+
"//src/main/java/com/google/devtools/build/lib/bazel/repository:repository_options",
8386
"//src/main/java/com/google/devtools/build/lib/bazel/repository/cache",
8487
"//src/main/java/com/google/devtools/build/lib/bazel/repository/downloader",
8588
"//src/main/java/com/google/devtools/build/lib/bazel/repository/starlark",

src/main/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoader.java

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,14 @@
1818
import com.google.common.collect.ImmutableMap;
1919
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
2020
import com.google.devtools.build.lib.bazel.BazelRepositoryModule;
21+
import com.google.devtools.build.lib.bazel.bzlmod.BazelDepGraphFunction;
22+
import com.google.devtools.build.lib.bazel.bzlmod.BazelLockFileFunction;
23+
import com.google.devtools.build.lib.bazel.bzlmod.BazelModuleResolutionFunction;
24+
import com.google.devtools.build.lib.bazel.bzlmod.ModuleFileFunction;
25+
import com.google.devtools.build.lib.bazel.bzlmod.RegistryFactory;
26+
import com.google.devtools.build.lib.bazel.bzlmod.RegistryFactoryImpl;
27+
import com.google.devtools.build.lib.bazel.bzlmod.YankedVersionsUtil;
28+
import com.google.devtools.build.lib.bazel.repository.RepositoryOptions;
2129
import com.google.devtools.build.lib.bazel.repository.cache.RepositoryCache;
2230
import com.google.devtools.build.lib.bazel.repository.downloader.DownloadManager;
2331
import com.google.devtools.build.lib.bazel.repository.downloader.HttpDownloader;
@@ -98,7 +106,23 @@ private Builder(Root workspaceDir, Path installBase, Path outputBase, AtomicBool
98106
RepositoryDelegatorFunction.RESOLVED_FILE_INSTEAD_OF_WORKSPACE, Optional.empty()),
99107
PrecomputedValue.injected(
100108
RepositoryDelegatorFunction.DEPENDENCY_FOR_UNCONDITIONAL_FETCHING,
101-
RepositoryDelegatorFunction.DONT_FETCH_UNCONDITIONALLY));
109+
RepositoryDelegatorFunction.DONT_FETCH_UNCONDITIONALLY),
110+
PrecomputedValue.injected(ModuleFileFunction.MODULE_OVERRIDES, ImmutableMap.of()),
111+
PrecomputedValue.injected(
112+
RepositoryDelegatorFunction.DEPENDENCY_FOR_UNCONDITIONAL_CONFIGURING,
113+
RepositoryDelegatorFunction.DONT_FETCH_UNCONDITIONALLY),
114+
PrecomputedValue.injected(ModuleFileFunction.REGISTRIES, ImmutableList.of()),
115+
PrecomputedValue.injected(ModuleFileFunction.IGNORE_DEV_DEPS, false),
116+
PrecomputedValue.injected(
117+
BazelModuleResolutionFunction.CHECK_DIRECT_DEPENDENCIES,
118+
RepositoryOptions.CheckDirectDepsMode.OFF),
119+
PrecomputedValue.injected(
120+
BazelModuleResolutionFunction.BAZEL_COMPATIBILITY_MODE,
121+
RepositoryOptions.BazelCompatibilityMode.OFF),
122+
PrecomputedValue.injected(
123+
BazelLockFileFunction.LOCKFILE_MODE, RepositoryOptions.LockfileMode.OFF),
124+
PrecomputedValue.injected(
125+
YankedVersionsUtil.ALLOWED_YANKED_VERSIONS, ImmutableList.of()));
102126
}
103127

104128
@Override
@@ -107,6 +131,19 @@ public BazelPackageLoader buildImpl() {
107131
RepositoryCache repositoryCache = new RepositoryCache();
108132
HttpDownloader httpDownloader = new HttpDownloader();
109133
DownloadManager downloadManager = new DownloadManager(repositoryCache, httpDownloader);
134+
RegistryFactory registryFactory =
135+
new RegistryFactoryImpl(
136+
directories.getWorkspace(), downloadManager, Suppliers.ofInstance(ImmutableMap.of()));
137+
138+
// Allow tests to override SkyFunctions.MODULE_FILE to use fake registry
139+
if (!this.extraSkyFunctions.containsKey(SkyFunctions.MODULE_FILE)) {
140+
addExtraSkyFunctions(
141+
ImmutableMap.of(
142+
SkyFunctions.MODULE_FILE,
143+
new ModuleFileFunction(
144+
registryFactory, directories.getWorkspace(), ImmutableMap.of())));
145+
}
146+
110147
addExtraSkyFunctions(
111148
ImmutableMap.<SkyFunctionName, SkyFunction>builder()
112149
.put(
@@ -129,7 +166,9 @@ public BazelPackageLoader buildImpl() {
129166
ImmutableMap::of,
130167
directories,
131168
EXTERNAL_PACKAGE_HELPER))
132-
.build());
169+
.put(SkyFunctions.BAZEL_DEP_GRAPH, new BazelDepGraphFunction())
170+
.put(SkyFunctions.BAZEL_MODULE_RESOLUTION, new BazelModuleResolutionFunction())
171+
.buildOrThrow());
133172

134173
return new BazelPackageLoader(this);
135174
}

src/main/starlark/tests/builtins_bzl/cc_builtin_tests.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ msys*)
5252
esac
5353

5454
# TODO: cc_shared_library doesn't work well with Bzlmod.
55+
# https://github.com/bazelbuild/bazel/issues/19822
5556
disable_bzlmod
5657

5758
function test_starlark_cc() {

src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ public void setupMockClient(MockToolsConfig config, List<String> workspaceConten
139139
config.create("protobuf_workspace/WORKSPACE");
140140
config.create("protobuf_workspace/MODULE.bazel", "module(name='com_google_protobuf')");
141141
config.overwrite("WORKSPACE", workspaceContents.toArray(new String[0]));
142+
config.overwrite("MODULE.bazel");
142143
/* The rest of platforms is initialized in {@link MockPlatformSupport}. */
143144
config.create("platforms_workspace/WORKSPACE", "workspace(name = 'platforms')");
144145
config.create("platforms_workspace/MODULE.bazel", "module(name = 'platforms')");

src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@
2727
import com.google.devtools.build.lib.bazel.bzlmod.RepoSpecFunction;
2828
import com.google.devtools.build.lib.bazel.bzlmod.SingleExtensionEvalFunction;
2929
import com.google.devtools.build.lib.bazel.bzlmod.SingleExtensionUsagesFunction;
30+
import com.google.devtools.build.lib.bazel.bzlmod.YankedVersionsUtil;
31+
import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.BazelCompatibilityMode;
32+
import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.CheckDirectDepsMode;
33+
import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.LockfileMode;
3034
import com.google.devtools.build.lib.bazel.repository.downloader.DownloadManager;
3135
import com.google.devtools.build.lib.bazel.repository.starlark.StarlarkRepositoryFunction;
3236
import com.google.devtools.build.lib.bazel.rules.android.AndroidNdkRepositoryFunction;
@@ -43,6 +47,7 @@
4347
import com.google.devtools.build.lib.rules.repository.RepositoryFunction;
4448
import com.google.devtools.build.lib.skyframe.BazelSkyframeExecutorConstants;
4549
import com.google.devtools.build.lib.skyframe.ClientEnvironmentFunction;
50+
import com.google.devtools.build.lib.skyframe.PrecomputedValue;
4651
import com.google.devtools.build.lib.skyframe.SkyFunctions;
4752
import com.google.devtools.build.lib.skyframe.packages.PackageFactoryBuilderWithSkyframeForTesting;
4853
import com.google.devtools.build.lib.testutil.TestConstants;
@@ -52,6 +57,7 @@
5257
import java.io.IOException;
5358
import java.lang.reflect.Field;
5459
import java.util.List;
60+
import java.util.Optional;
5561
import java.util.concurrent.atomic.AtomicBoolean;
5662
import java.util.concurrent.atomic.AtomicReference;
5763
import org.mockito.Mockito;
@@ -69,6 +75,16 @@ public static AnalysisMock get() {
6975
}
7076
}
7177

78+
public static AnalysisMock getAnalysisMockWithoutBuiltinModules() {
79+
return new AnalysisMock.Delegate(AnalysisMock.get()) {
80+
@Override
81+
public ImmutableMap<String, NonRegistryOverride> getBuiltinModules(
82+
BlazeDirectories directories) {
83+
return ImmutableMap.of();
84+
}
85+
};
86+
}
87+
7288
@Override
7389
public String getProductName() {
7490
return TestConstants.PRODUCT_NAME;
@@ -82,15 +98,16 @@ public ImmutableList<String> getEmbeddedTools() {
8298
public PackageFactoryBuilderWithSkyframeForTesting getPackageFactoryBuilderForTesting(
8399
BlazeDirectories directories) {
84100
return super.getPackageFactoryBuilderForTesting(directories)
85-
.setExtraSkyFunctions(getSkyFunctions(directories));
101+
.setExtraSkyFunctions(getSkyFunctions(directories))
102+
.setExtraPrecomputeValues(getPrecomputedValues());
86103
}
87104

88105
/**
89106
* This is called from test setup to create the mock directory layout needed to create the
90107
* configuration.
91108
*/
92109
public void setupMockClient(MockToolsConfig mockToolsConfig) throws IOException {
93-
List<String> workspaceContents = getWorkspaceContents(mockToolsConfig);
110+
ImmutableList<String> workspaceContents = getWorkspaceContents(mockToolsConfig);
94111
setupMockClient(mockToolsConfig, workspaceContents);
95112
}
96113

@@ -165,6 +182,29 @@ public ImmutableMap<SkyFunctionName, SkyFunction> getSkyFunctions(BlazeDirectori
165182
.buildOrThrow();
166183
}
167184

185+
public ImmutableList<PrecomputedValue.Injected> getPrecomputedValues() {
186+
// PrecomputedValues required by SkyFunctions in getSkyFunctions()
187+
return ImmutableList.of(
188+
PrecomputedValue.injected(PrecomputedValue.REPO_ENV, ImmutableMap.of()),
189+
PrecomputedValue.injected(ModuleFileFunction.MODULE_OVERRIDES, ImmutableMap.of()),
190+
PrecomputedValue.injected(
191+
RepositoryDelegatorFunction.REPOSITORY_OVERRIDES, ImmutableMap.of()),
192+
PrecomputedValue.injected(
193+
RepositoryDelegatorFunction.RESOLVED_FILE_INSTEAD_OF_WORKSPACE, Optional.empty()),
194+
PrecomputedValue.injected(
195+
RepositoryDelegatorFunction.DEPENDENCY_FOR_UNCONDITIONAL_FETCHING,
196+
RepositoryDelegatorFunction.DONT_FETCH_UNCONDITIONALLY),
197+
PrecomputedValue.injected(ModuleFileFunction.REGISTRIES, ImmutableList.of()),
198+
PrecomputedValue.injected(ModuleFileFunction.IGNORE_DEV_DEPS, false),
199+
PrecomputedValue.injected(ModuleFileFunction.MODULE_OVERRIDES, ImmutableMap.of()),
200+
PrecomputedValue.injected(YankedVersionsUtil.ALLOWED_YANKED_VERSIONS, ImmutableList.of()),
201+
PrecomputedValue.injected(
202+
BazelModuleResolutionFunction.CHECK_DIRECT_DEPENDENCIES, CheckDirectDepsMode.WARNING),
203+
PrecomputedValue.injected(
204+
BazelModuleResolutionFunction.BAZEL_COMPATIBILITY_MODE, BazelCompatibilityMode.ERROR),
205+
PrecomputedValue.injected(BazelLockFileFunction.LOCKFILE_MODE, LockfileMode.UPDATE));
206+
}
207+
168208
// Allow subclasses to add extra repository functions.
169209
public abstract void addExtraRepositoryFunctions(
170210
ImmutableMap.Builder<String, RepositoryFunction> repositoryHandlers);

0 commit comments

Comments
 (0)