commit | 2768a642420cfd7a17f8c55784a35c7d3b6e9fcc | [log] [tgz] |
---|---|---|
author | wyv <wyv@google.com> | Wed Sep 15 05:42:01 2021 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Wed Sep 15 05:43:17 2021 -0700 |
tree | 4bd2aee216f4ea432155d80c45add641fdaa5888 | |
parent | 72caead7b428fd50164079956ec368fc54a9567c [diff] |
bzlmod: Module extension eval =================== (https://github.com/bazelbuild/bazel/issues/13316) * `ModuleExtensionResolutionFunction` (`MERF`) is responsible for triggering all module extension evaluations. * It's requested by `BzlmodRepoRuleFunction` (to fetch repos generated by module extensions) and `RepositoryMappingFunction` (to calculate repo mappings for such repos). * `SingleExtensionEvalFunction` (`SEEF`) is where the bulk of the logic happens. It loads the .bzl file where the module extension lives, and runs the implementation function of the module extension. * It stores a `ModuleExtensionEvalStarlarkThreadContext` into the evaluating Starlark thread. This context information is read during the evaluation of the implementation function, and causes the behavior of a repo rule call to differ from when it's called during WORKSPACE evaluation. * `SingleExtensionUsagesFunction` (`SEUF`) collects all the usage instances of a single module extension and stores it in a SkyValue. * It's requested by `SEEF`. The reason that `SEEF` can't request usage information directly from `BazelModuleResolutionValue` is that we don't want any unrelated change in the dependency graph to trigger a re-evaluation of all module extensions. By separating the inputs of each `SEEF` into a separate SkyValue, we utilize change pruning to minimize re-evaluation. PiperOrigin-RevId: 396814992
{Fast, Correct} - Choose two
Build and test software of any size, quickly and reliably.
Speed up your builds and tests: Bazel rebuilds only 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.
Follow our tutorials:
To report a security issue, please email security@bazel.build with a description of the issue, the steps you took to create the issue, affected versions, and, if known, mitigations for the issue. Our vulnerability management team will respond within 3 working days of your email. If the issue is confirmed as a vulnerability, we will open a Security Advisory. This project follows a 90 day disclosure timeline.
See CONTRIBUTING.md