Skip to content

Commit bdcee13

Browse files
Wyveraldcopybara-github
authored andcommitted
Automated rollback of commit 4ccc21f.
*** Reason for rollback *** #15728 and #14852 have been fixed *** Original change description *** Automated rollback of commit 5de967b. *** Reason for rollback *** Temporarily rolling back until #14852 is fixed. *** Original change description *** Use the proper main repo mapping where appropriate Use the main repo mapping (instead of ALWAYS_FALLBACK) to a) process .bzl load labels in the WORKSPACE file, and b) to process any labels passed to repo rules in either the WORKSPACE file or WORKSPACE-loaded macros. This change... *** PiperOrigin-RevId: 460471895 Change-Id: I60be60120aff003ebdb0d8d44ef82d412d81af92
1 parent b212c54 commit bdcee13

File tree

8 files changed

+47
-31
lines changed

8 files changed

+47
-31
lines changed

src/main/java/com/google/devtools/build/lib/packages/Package.java

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -317,16 +317,7 @@ public ImmutableMap<String, RepositoryName> getRepositoryMapping(RepositoryName
317317
throw new UnsupportedOperationException("Can only access the external package repository"
318318
+ "mappings from the //external package");
319319
}
320-
321-
// We are passed a repository name as seen from the main repository, not necessarily
322-
// a canonical repository name. So, we first have to find the canonical name for the
323-
// repository in question before we can look up the mapping for it.
324-
RepositoryName actualRepositoryName =
325-
externalPackageRepositoryMappings
326-
.getOrDefault(RepositoryName.MAIN, ImmutableMap.of())
327-
.getOrDefault(repository.getName(), repository);
328-
329-
return externalPackageRepositoryMappings.getOrDefault(actualRepositoryName, ImmutableMap.of());
320+
return externalPackageRepositoryMappings.getOrDefault(repository, ImmutableMap.of());
330321
}
331322

332323
/** Get the repository mapping for this package. */
@@ -874,13 +865,14 @@ public static Builder newExternalPackageBuilder(
874865
PackageSettings helper,
875866
RootedPath workspacePath,
876867
String workspaceName,
868+
RepositoryMapping mainRepoMapping,
877869
StarlarkSemantics starlarkSemantics) {
878870
return new Builder(
879871
helper,
880872
LabelConstants.EXTERNAL_PACKAGE_IDENTIFIER,
881873
workspaceName,
882874
starlarkSemantics.getBool(BuildLanguageOptions.INCOMPATIBLE_NO_IMPLICIT_FILE_EXPORT),
883-
RepositoryMapping.ALWAYS_FALLBACK)
875+
mainRepoMapping)
884876
.setFilename(workspacePath);
885877
}
886878

src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -449,9 +449,12 @@ public boolean isImmutable() {
449449
}
450450

451451
public Package.Builder newExternalPackageBuilder(
452-
RootedPath workspacePath, String workspaceName, StarlarkSemantics starlarkSemantics) {
452+
RootedPath workspacePath,
453+
String workspaceName,
454+
RepositoryMapping mainRepoMapping,
455+
StarlarkSemantics starlarkSemantics) {
453456
return Package.newExternalPackageBuilder(
454-
packageSettings, workspacePath, workspaceName, starlarkSemantics);
457+
packageSettings, workspacePath, workspaceName, mainRepoMapping, starlarkSemantics);
455458
}
456459

457460
// This function is public only for the benefit of skyframe.PackageFunction,

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

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import com.google.devtools.build.lib.cmdline.LabelConstants;
3131
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
3232
import com.google.devtools.build.lib.cmdline.RepositoryMapping;
33+
import com.google.devtools.build.lib.cmdline.RepositoryName;
3334
import com.google.devtools.build.lib.events.Event;
3435
import com.google.devtools.build.lib.events.ExtendedEventHandler.Postable;
3536
import com.google.devtools.build.lib.packages.BuildFileContainsErrorsException;
@@ -240,21 +241,6 @@ public SkyValue compute(SkyKey skyKey, Environment env)
240241
// -- start of historical WorkspaceFileFunction --
241242
// TODO(adonovan): reorganize and simplify.
242243

243-
Package.Builder builder =
244-
packageFactory.newExternalPackageBuilder(
245-
workspaceFile, ruleClassProvider.getRunfilesPrefix(), starlarkSemantics);
246-
247-
if (chunks.isEmpty()) {
248-
return new WorkspaceFileValue(
249-
buildAndReportEvents(builder, env),
250-
/* loadedModules = */ ImmutableMap.<String, Module>of(),
251-
/* loadToChunkMap = */ ImmutableMap.<String, Integer>of(),
252-
/* bindings = */ ImmutableMap.<String, Object>of(),
253-
workspaceFile,
254-
/* idx = */ 0, // first fragment
255-
/* hasNext = */ false);
256-
}
257-
258244
// Get the state at the end of the previous chunk.
259245
WorkspaceFileValue prevValue = null;
260246
if (key.getIndex() > 0) {
@@ -268,15 +254,39 @@ public SkyValue compute(SkyKey skyKey, Environment env)
268254
return prevValue;
269255
}
270256
}
257+
RepositoryMapping repoMapping;
258+
if (prevValue == null) {
259+
repoMapping = RepositoryMapping.ALWAYS_FALLBACK;
260+
} else {
261+
repoMapping =
262+
RepositoryMapping.createAllowingFallback(
263+
prevValue
264+
.getRepositoryMapping()
265+
.getOrDefault(RepositoryName.MAIN, ImmutableMap.of()));
266+
}
267+
268+
Package.Builder builder =
269+
packageFactory.newExternalPackageBuilder(
270+
workspaceFile, ruleClassProvider.getRunfilesPrefix(), repoMapping, starlarkSemantics);
271+
272+
if (chunks.isEmpty()) {
273+
return new WorkspaceFileValue(
274+
buildAndReportEvents(builder, env),
275+
/* loadedModules = */ ImmutableMap.<String, Module>of(),
276+
/* loadToChunkMap = */ ImmutableMap.<String, Integer>of(),
277+
/* bindings = */ ImmutableMap.<String, Object>of(),
278+
workspaceFile,
279+
/* idx = */ 0, // first fragment
280+
/* hasNext = */ false);
281+
}
271282

272283
List<StarlarkFile> chunk = chunks.get(key.getIndex());
273284

274285
// Parse the labels in the chunk's load statements.
275286
ImmutableList<Pair<String, Location>> programLoads =
276287
BzlLoadFunction.getLoadsFromStarlarkFiles(chunk);
277288
ImmutableList<Label> loadLabels =
278-
BzlLoadFunction.getLoadLabels(
279-
env.getListener(), programLoads, rootPackage, RepositoryMapping.ALWAYS_FALLBACK);
289+
BzlLoadFunction.getLoadLabels(env.getListener(), programLoads, rootPackage, repoMapping);
280290
if (loadLabels == null) {
281291
NoSuchPackageException e =
282292
PackageFunction.PackageFunctionException.builder()

src/test/java/com/google/devtools/build/lib/bazel/repository/starlark/BUILD

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ java_library(
2222
"//src/main/java/com/google/devtools/build/lib/analysis:blaze_directories",
2323
"//src/main/java/com/google/devtools/build/lib/bazel/repository/downloader",
2424
"//src/main/java/com/google/devtools/build/lib/bazel/repository/starlark",
25+
"//src/main/java/com/google/devtools/build/lib/cmdline:cmdline-primitives",
2526
"//src/main/java/com/google/devtools/build/lib/events",
2627
"//src/main/java/com/google/devtools/build/lib/packages",
2728
"//src/main/java/com/google/devtools/build/lib/packages/semantics",
@@ -67,6 +68,7 @@ java_test(
6768
"//src/main/java/com/google/devtools/build/lib/analysis:blaze_directories",
6869
"//src/main/java/com/google/devtools/build/lib/bazel/repository/downloader",
6970
"//src/main/java/com/google/devtools/build/lib/bazel/repository/starlark",
71+
"//src/main/java/com/google/devtools/build/lib/cmdline:cmdline-primitives",
7072
"//src/main/java/com/google/devtools/build/lib/events",
7173
"//src/main/java/com/google/devtools/build/lib/packages",
7274
"//src/main/java/com/google/devtools/build/lib/packages/semantics",

src/test/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryContextTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import com.google.common.collect.ImmutableSortedMap;
2727
import com.google.common.io.CharStreams;
2828
import com.google.devtools.build.lib.bazel.repository.downloader.DownloadManager;
29+
import com.google.devtools.build.lib.cmdline.RepositoryMapping;
2930
import com.google.devtools.build.lib.events.ExtendedEventHandler;
3031
import com.google.devtools.build.lib.packages.Attribute;
3132
import com.google.devtools.build.lib.packages.Package;
@@ -139,6 +140,7 @@ protected void setUpContextForRule(
139140
DefaultPackageSettings.INSTANCE,
140141
RootedPath.toRootedPath(root, workspaceFile),
141142
"runfiles",
143+
RepositoryMapping.ALWAYS_FALLBACK,
142144
starlarkSemantics);
143145
ExtendedEventHandler listener = Mockito.mock(ExtendedEventHandler.class);
144146
Rule rule =

src/test/java/com/google/devtools/build/lib/packages/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ java_library(
2020
name = "PackageTestsUtil",
2121
srcs = ["WorkspaceFactoryTestHelper.java"],
2222
deps = [
23+
"//src/main/java/com/google/devtools/build/lib/cmdline:cmdline-primitives",
2324
"//src/main/java/com/google/devtools/build/lib/events",
2425
"//src/main/java/com/google/devtools/build/lib/packages",
2526
"//src/main/java/com/google/devtools/build/lib/vfs",

src/test/java/com/google/devtools/build/lib/packages/RuleFactoryTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,10 @@ public void testCreateWorkspaceRule() throws Exception {
122122
Path myPkgPath = scratch.resolve("/workspace/WORKSPACE");
123123
Package.Builder pkgBuilder =
124124
packageFactory.newExternalPackageBuilder(
125-
RootedPath.toRootedPath(root, myPkgPath), "TESTING", StarlarkSemantics.DEFAULT);
125+
RootedPath.toRootedPath(root, myPkgPath),
126+
"TESTING",
127+
RepositoryMapping.ALWAYS_FALLBACK,
128+
StarlarkSemantics.DEFAULT);
126129

127130
Map<String, Object> attributeValues = new HashMap<>();
128131
attributeValues.put("name", "foo");

src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTestHelper.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.google.common.base.Joiner;
2121
import com.google.common.collect.ImmutableList;
2222
import com.google.common.collect.ImmutableMap;
23+
import com.google.devtools.build.lib.cmdline.RepositoryMapping;
2324
import com.google.devtools.build.lib.events.Event;
2425
import com.google.devtools.build.lib.packages.Package.Builder.DefaultPackageSettings;
2526
import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
@@ -35,6 +36,7 @@
3536
/** Parses a WORKSPACE file with the given content. */
3637
// TODO(adonovan): delete this junk class.
3738
final class WorkspaceFactoryTestHelper {
39+
3840
private final Root root;
3941
private Package.Builder builder;
4042
private StarlarkSemantics starlarkSemantics;
@@ -67,6 +69,7 @@ void parse(String... args) {
6769
DefaultPackageSettings.INSTANCE,
6870
RootedPath.toRootedPath(root, workspaceFilePath),
6971
"",
72+
RepositoryMapping.ALWAYS_FALLBACK,
7073
StarlarkSemantics.DEFAULT);
7174
WorkspaceFactory factory =
7275
new WorkspaceFactory(

0 commit comments

Comments
 (0)