Skip to content

jmloveyj/ros-bazel

 
 

Repository files navigation

Build ROS packages using Bazel

Bazel is the open-source version of Google's internal build system, featuring fast incremental compiles and remote caching for distributed builds.

It proved really fast on some of the benchmarks I ran, so I decided to try using it to build ROS packages.

How it works

First, we use catkin to build the base set of ROS packages we need for a simple node (roscpp, rospy, ..). Then, we can expose the resulting install space to Bazel using the new_local_repository repository rule in the WORKSPACE file. Bazel will then use the ros.BUILD file to understand the contents of the catkin install space. For now, we just declare all .so files as a single prebuilt C++ library, and all the Python code as a single Python package.

With this setup in place, Bazel-native binaries just need to depend on the C++ and Python libraries in the @ros repository. Two simple examples live in the src directory.

Testing

Get a shell in the docker environment:

docker-compose build && docker-compose run bazeler bash

Download and compile the ROS workspace using catkin:

./compile_ros_workspace.py

Build the Bazel workspace:

bazel build //... -s

About

Build ROS code with Bazel

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 79.4%
  • Dockerfile 11.5%
  • C++ 5.0%
  • Shell 4.1%