Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ninja for builds (as a tactic to reduce build times) #2093

Open
tylerjw opened this issue May 18, 2020 · 3 comments
Open

Ninja for builds (as a tactic to reduce build times) #2093

tylerjw opened this issue May 18, 2020 · 3 comments

Comments

@tylerjw
Copy link
Member

tylerjw commented May 18, 2020

The ninja build system (https://ninja-build.org/manual.html) is a language like make that cmake can generate for. catkin_tools does not support his build system, however, catkin_make does (with the --use-ninja flag). Locally I got about a 4min speedup that was invariant to the state of my build-cache by building using catkin_make with the ninja flag as opposed to building moveit with catkin_tools or catkin_make without the flag.

colcon does support ninja through the argument --cmake-args " -GNinja". If you try this with catkin_tools it doesn't work as catkin is not pure cmake and doesn't account for any other generator than make.

For moveit2 we can easily just use ninja. If we want to reduce the build times of moveit we could consider contributing ninja support to catkin or convert moveit1 to colcon. I'm not sure how much work either of those options are.

@henningkayser
Copy link
Member

henningkayser commented May 18, 2020

Colcon supposedly supports (isolated) catkin workspaces https://colcon.readthedocs.io/en/released/user/quick-start.html#build-ros-1-packages. I've never tried this but for CI this might actually be an option. Catkin/colcon mapping seems to be pretty straight forward https://colcon.readthedocs.io/en/released/migration/catkin_make_isolated.html

@v4hn
Copy link
Contributor

v4hn commented May 18, 2020 via email

@tylerjw
Copy link
Member Author

tylerjw commented May 18, 2020

It looks like there is a problem with how ninja output is processed with colcon that hasn't been addressed yet, so sadly we might not be able to use it with ROS2 ci systems yet either: colcon/colcon-cmake#67

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants