[ros-dev] CMake migration of Trunk_x86_GCCLin Debug Buildslave

Cameron Gutman aicommander at gmail.com
Tue Oct 4 16:08:03 UTC 2011

On Oct 4, 2011, at 10:06 AM, caemyr at myopera.com wrote:

> I could also add intl.cpl not working in 2nd stage setup. Still, those regressions, apart from the KVM one are meaningless, compared to the profits CMake brings. Changing build system/buildchain is ALWAYS dramatic and troublesome. We cannot stop it, as supporting CMake and rbuild at once is purely a waste of resources. There is no going back to rbuild, Cameron.

But why is changing a build system "ALWAYS dramatic"? Why do we have issues like this? We're not changing the compiler, linker, assembler, or any source (in theory, but not really). The real build tools (GCC, LD, GAS, etc) should be receiving the same parameters for the build in the end whether via the CMake frontend or the rbuild frontend. So either the new debugging symbol stuff is exposing/creating bugs in the code, or CMake is not passing the same parameters to the build chain as rbuild is. The reason we're having trouble is because we tried to do too much with this change at one time. It's the same reason Intel does the tick-tock release cycle. We've changed our build system, changed the type of symbols in our binaries, and made CMake-specific modifications to our code (to read the symbols). This should have been done at least in 2 steps, not in one giant mess as we have done. We absolutely cannot have bugs introduced due to our build system. All the build system provides is a nicer way to talk to the core build tools. That shouldn't be causing a problem unless something is wrong in the CMake configuration files. In which case, that must be corrected before CMake is adopted.

The mere fact that we have to deal with this only detracts from the development of real code. I took a good hour trying figure out why the hell I couldn't boot trunk when I was trying to test my ACPI fixes. The the Vbox testbot was doing fine, yet I couldn't boot my builds on Vbox. Only after reverting commits on rbuild and downloading the latest CMake build did I realize that only CMake builds would actually boot HEAD source code. I know I'm going to get "Well you should have used CMake, then it would've been fine," but CMake can't even properly do multithreaded compilation. My CPU usage using CMake is about 45%, while CPU usage while using rbuild is close to 100% for the majority of the build, and the build times reflect this. I look forward to adopting CMake but only when it's ready, and from the looks of the slowness and regressions, it's definitely not ready.


More information about the Ros-dev mailing list