Skylark: Updated the locations of more error messages.

In the presence of a Skylark macro some error messages used to show the location of a bzl file for errors that actually happened in a BUILD file.

For the "crosses boundary of subpackage" case, we decided to always show the location of the BUILD file. This solution is not perfect since it misses some scenarios where the illegal label was actually specified in a bzl file, such as

def macro_skylark_rule(name, srcs=[]):
  skylark_rule(name = name, srcs = srcs + ['sub/package/illegal.h'])

However, the current design in regards to attribute errors does not allow us to provide two locations (BUILD and bzl), nor can we make a case-by-case choice whether we return the location in the BUILD file or in the bzl file. Consequently, we still get a wrong location in some cases. However, these cases should be rare.

--
MOS_MIGRATED_REVID=107044681
3 files changed
tree: 8907d275f0d43bb6be4332799710555cfad8f348
  1. examples/
  2. scripts/
  3. site/
  4. src/
  5. third_party/
  6. tools/
  7. .gitattributes
  8. .gitignore
  9. AUTHORS
  10. BUILD
  11. CHANGELOG.md
  12. compile.sh
  13. CONTRIBUTING.md
  14. CONTRIBUTORS
  15. LICENSE.txt
  16. README.md
  17. WORKSPACE
README.md

Bazel (Beta)

{Fast, Correct} - Choose two

Bazel is a build tool that builds code quickly and reliably. It is used to build the majority of Google‘s software, and thus it has been designed to handle build problems present in Google’s development environment, including:

  • A massive, shared code repository, in which all software is built from source. Bazel has been built for speed, using both caching and parallelism to achieve this. Bazel is critical to Google's ability to continue to scale its software development practices as the company grows.

  • An emphasis on automated testing and releases. Bazel has been built for correctness and reproducibility, meaning that a build performed on a continuous build machine or in a release pipeline will generate bitwise-identical outputs to those generated on a developer's machine.

  • Language and platform diversity. Bazel's architecture is general enough to support many different programming languages within Google, and can be used to build both client and server software targeting multiple architectures from the same underlying codebase.

Find more background about Bazel in our FAQ.

Getting Started

About the Bazel project: