Replies: 3 comments 1 reply
-
This class of issue is more straightforward to solve with Remote Build Execution(RBE) than using local execution. With an RBE (such as BuildBuddy, where I work), you could configure a dedicated pool of machines to execute a specific set of actions. For example, we often have customers with a limited number of dedicated bare-metal hardware shared among X engineers. Then using Bazel configuration, you could modify a build target to use this pool cc_binary(
...
exec_properties = {
"Pool": "special-hardware-pool",
},
) If you need to configure the pool on the rule's action level (more fine grain than Bazel's target level), then you could set up each action in a separate execution group that is mapped to |
Beta Was this translation helpful? Give feedback.
-
Another option is to use |
Beta Was this translation helpful? Give feedback.
-
Thank you for your answers, both are interesting ideas to look into. The BuildBuddy pool suggestion would not fix the whole issue (as we want to run simulations locally while developing the test bench code), but at least it will solve the "daily build rush hour". Currently we ensure these test runs are done with I also tried the Although sharing 4 licenses with 50 engineers (and a large number of build servers) sounds cumbersome, in reality the problem is not that big. Queuing in itself is not an issue since each run takes a limited amount of time. Wait times are rarely more than a few tens of seconds. Most issues occur during nightly builds when many build servers claim licenses at once. But it seems this can be completely solved with a sophisticated RBE solution. Thanks again for your insights! |
Beta Was this translation helpful? Give feedback.
-
Hello,
We are using Bazel extensively for FPGA builds. These differ from software builds in that there are no rules (so we built everything ourselves) and one specific issue we run into is tool licenses.
Some tools in the build flow have a limited number of licenses (four or less) which are shared among a team of some 50 engineers. These licenses are required in test targets but also in build targets.
This poses two issues:
The issues can be mostly solved for test targets by running tests with --jobs 1. For build targets this is more problematic. Ideally there should be a way to limit parallelism for specific target types (rules).
Does anyone know whether this is solvable within Bazel, without invoking builds for different target types with different settings?
Thanks a lot!
Beta Was this translation helpful? Give feedback.
All reactions