Building a Build System: Bazel Reaches Beta
google-opensource.blogspot.com
google-opensource.blogspot.com
It figure this out, I had to patch Bazel with printlns where tries to find all the tests.
A coworker found a similar issue with assumptions around the project layout, but I can't remember what it was. Being that Bazel is was Alpha at the time, now Beta, I am not going to write it off yet. If nothing else, better documentation about assumed layouts would be great.
Thankfully, it's a nightmare that can be fixed, and it behooves you to do so: Bazel's simple artifacts and build speedups are well worth the time you spend converting to it.
Also, apparently Bazel only contains like 10% of the build rules that Blaze has. Blaze being the internal version of Bazel. Some of those rules are Google specific, but I believe I read that some of them they would like to port (untangle from proprietary stuff) to Bazel, just haven't had the time to do so yet.
Blaze's support for building Go source code predates the existence of the 'go' tool and uses very different conventions for package naming, directory layout, testing, and project organization. As a result, most Google Go code cannot be built with 'go'. This can be a source of frustration at times.
Did you rewrite your internal tool as open-source? Is it a fork?
Bazel shares most of its code with the internal tool and its rules are used for millions of builds every day.
What's up with the word "Blaze" in the codebase?
This is an internal name for the tool. Please refer to Bazel as Bazel.
Kudos to the team! As someone who works at Google, I can only bow my head to the "bazel/blaze" team. After spending years with crude Makefiles, verbose .vcxproj/.sln files, and many other weird build systems I can say blaze works really good for me, and I hope to use for my pet projects outside.
A wall chart with all the directory conventions would be useful.
Bazel is open-sourcing of the build system used to build the majority of code within Google. Chrome (in part because it targeted Windows) didn't use the standard build system and instead has had its own series of custom replacements. gn is the latest iteration on that. As other commenters have mentioned, Bazel expects your code to be organized in the way Google code is, while gn likely makes similar assumptions related to how Chrome is organized.