|
|
|
|
|
by whytevuhuni
251 days ago
|
|
> where Bazel's fine-grained target definitions are pushed as "best practice" and everybody ends up hating the results, for good reasons. What are some of those good reasons (assuming they differ from GP's)? I don't have much experience with Bazel aside from setting up a simple local workspace and following the tutorial. |
|
* The build files are unreadable. If targets don't mean anything to a human, updates to build files become pure toil (and is when devs ask for build files to be auto-generated from source).
* IDE integrations (particularly via the IntelliJ Bazel plugin) become slower because generating metadata for those targets takes time.
* Binary debugging is slower because the C/C++ rules generate one intermediate .so file per target and GDB/LLDB take a long time to load those dependencies vs. a smaller set of deps.
* Certain Java operations can be slower. In the case of Java, the rules generate one intermediate JAR file per target, which has a direct impact on CLASSPATH length and that may matter when you do introspection. This tends to matter for tests (not so much for prod where you use a deploy JAR which collapses all intermediate JARs into just one).