Report workspace cycles via SkylarkImportLookupKeys

A cycle in the workspace file usually means that the definition of a
repository was forgotten or comes to late in the workspace file. In
this case, we try to also report the file that was attempted to be
loaded, to help the user identify where the problem occured. So far,
we did this looking for a skykey of type AST_FILE_LOOKUP, as a Skylark
import would look for the AST. This assumption, however is invalidated
by the --incompatible_disallow_load_labels_to_cross_package_boundaries
option that first looks for the containing package of that file
(and hence produces a dependency cycle without an AST_FILE_LOOKUP).
Restore the old behaviour by obtaining the label directly from the
SKYLARK_IMPORTS_LOOKUP key in the cycle.

Closes #7826

Change-Id: Idd747caa5d8ae3bed4c3c44762c1d04717161b9b
PiperOrigin-RevId: 240771237
4 files changed
tree: 1e28c08f801388b6cc2b037b76b1a8eb0dfa25b3
  1. .bazelci/
  2. examples/
  3. scripts/
  4. site/
  5. src/
  6. third_party/
  7. tools/
  8. .gitattributes
  9. .gitignore
  10. AUTHORS
  11. BUILD
  12. CHANGELOG.md
  13. CODEOWNERS
  14. combine_distfiles.py
  15. combine_distfiles_to_tar.sh
  16. compile.sh
  17. CONTRIBUTING.md
  18. CONTRIBUTORS
  19. distdir.bzl
  20. ISSUE_TEMPLATE.md
  21. LICENSE
  22. README.md
  23. WORKSPACE
README.md

Bazel

{Fast, Correct} - Choose two

Build and test software of any size, quickly and reliably.

  • Speed up your builds and tests: Bazel only rebuilds what is necessary. With advanced local and distributed caching, optimized dependency analysis and parallel execution, you get fast and incremental builds.

  • One tool, multiple languages: Build and test Java, C++, Android, iOS, Go, and a wide variety of other language platforms. Bazel runs on Windows, macOS, and Linux.

  • Scalable: Bazel helps you scale your organization, codebase, and continuous integration solution. It handles codebases of any size, in multiple repositories or a huge monorepo.

  • Extensible to your needs: Easily add support for new languages and platforms with Bazel's familiar extension language. Share and re-use language rules written by the growing Bazel community.

Getting Started

Documentation

Contributing to Bazel

See CONTRIBUTING.md

Build status

Bazel is released in ‘Beta’. See the product roadmap to learn about the path toward a stable 1.0 release.