I think that there are a lot of use cases, where using Bazel to provide completely controlled, traceable, and reproducible builds would have a lot of benefits, especially when trying to build safety-critical systems.
Luckily, I am not the only one, who thinks so. There are at least 2 publicly available projects to provide Bazel rules to build ROS2 and ROS2-based apps.
Apex.AI just announced theirs in a great presentation at ROSCon:
Bazel and ROS 2 – building large scale safety applications on Vimeo
Their in-progress code is here: GitHub - ApexAI/rules_ros: ROS 2 rules for Bazel
There is also an alternative ROS2 Bazel implementation: GitHub - mvukov/rules_ros2: Build ROS2 with Bazel
I opened this topic to see if there would be interest in having an official Bazel build implementation in the next release of ROS2.
I also would like to understand what are the steps to get to this point (apart from doing the actual implementation. I assume a REP needs to be created and accepted by the TSC.
Some clarifications / summary based on the discussion below:
- Adding Bazel build files to every ROS package repository
- Requiring package maintainers (or anyone else) to implement Bazel support, even if they are not interested / have no resources to do so.
- Create a separate repository under the ROS umbrella to host Bazel build rules for ROS packages and their external dependencies.
- Create a community-run working group to organize activities, like
- Unify the different efforts of providing Bazel build rules for ROS2 and reduce the fragmentation of resources.
- Provide a way for projects/teams with low DevOps budgets to implement a Bazel-based build system with limited investment.
- Release the Bazel build rules together with a ROS2 release as a development component: the build rules are tagged together with the release and made available for download, but no binary releases are provided that are built using these build rules.
Looking forward to your comments and support!