| commit | 82512519f34fa5b8b031b5feb4396273ec3a13b4 | [log] [tgz] |
|---|---|---|
| author | Janak <janak@janak.org> | Mon Jul 13 14:35:14 2015 +0000 |
| committer | Florian Weikert <fwe@google.com> | Mon Jul 13 15:16:15 2015 +0000 |
| tree | 635b16af33bc46f023c912003f28e2ffa31ad986 | |
| parent | d83e848312f000764a12513887d0cfd10b7d2ea8 [diff] |
Make two Skyframe nodes with the same events and values equal. We do this by implementing equality for TaggedEvents (and all objects it transitively includes). Before this change, if a Skyframe node re-evaluated to the same value as in the previous build, but had (transitive) events, change pruning would not cut off the evaluation of its parents. This is not a big issue in practice because most nodes that would re-evaluate to the same value (like FileValues or GlobValues) never emit events, and others (like ActionExecutionValues) have secondary caches that mask this effect. Also do a drive-by fix where we were using the hash code of a nested set instead of the shallow hash code (didn't have any bad effects in practice because we never hash these values). (Minor formatting clean-ups from https://bazel-review.googlesource.com/1610 ) -- Change-Id: I751a8479627f0456993c5ec8834528aeb593d736 Reviewed-on: https://bazel-review.googlesource.com/1610 MOS_MIGRATED_REVID=98115908
{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.
How to install Bazel
How to get started using Bazel
The Bazel command line is documented in the user manual
The rule reference documentation is in the build encyclopedia
How to use the query command
How to extend Bazel
The test environment is described in the test encyclopedia
About the Bazel project: