tree bbfe4c616db9686151eba50b74c2449911e1495b
parent bc884e14f16ab7d1f6729a0485dfc281239d16a5
author brandjon <brandjon@google.com> 1590169666 -0700
committer Copybara-Service <copybara-worker@google.com> 1590169744 -0700

Do .bzl load cycle detection by key instead of label

The inlining code path for StarlarkImportLookupFunction does its own cycle detection since it doesn't use Skyframe. This CL changes it to look for cycles over the graph of bzl key dependencies, instead of their projection onto their labels. This allows two distinct keys that happen to have the same label to not spuriously trigger cycle detection when inlining.

This is likely not a current problem in practice, because there doesn't seem to be a way to construct a non-cyclic path of load()s where any labels are repeated. Package bzl keys can't produce workspace keys and vice versa, even though the same .bzl file may be used for both. Likewise, I do not believe it's possible for the same label to be loaded in a cycle with distinct workspace chunking info, though I'm not 100% sure. When the new @builtins pseudo-repository is added, it may conflict with a proper external repo that happens to be named "@builtins", but even then the two shouldn't be able to load each other.

All the same, let's cycle check the proper object in case any of these assumptions change in the future. It also brings the inlining case's cycle check in-line (ha-ha) with ordinary Skyframe evaluation's cycle check.

This is refactoring work toward adding a new kind of .bzl loading context, for Bazel-internal .bzl files.

Work toward #11437.

RELNOTES: None
PiperOrigin-RevId: 312842293
