0
$\begingroup$

Rosanswers logo

I am developing on a BeagleBone Black, running Debian Wheezy, using ROS Indigo. All the packages I need to use need to be compiled, which is no big deal.

But, right now when I need to compile a single package, all the packages are re-built. Currently I'm up to about 78 packages that I am building every time I add a new one, and that takes about 2 hours.

The steps I am using to build are (these are steps listed here http://wiki.ros.org/indigo/Installation/Debian section 3) :

rosinstall_generator ros_comm ros_control joystick_drivers --rosdistro indigo --deps --wet-only --exclude roslisp --tar > indigo-custom_ros.rosinstall

(add my new package to the list above step)

wstool merge -t src indigo-custom_ros.rosinstall
wstool update -t src

rosdep install --from-paths src --ignore-src --rosdistro indigo -y -r --os=debian:wheezy

sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/indigo

in the last step, can I add the --pkg <name> command somewhere in there so I can only compile that one package? Like this?

sudo ./src/catkin/bin/catkin_make_isolated ***--pkg name***  --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/indigo

Is there another way? Is anything going to break if I do this?

Thanks!


Originally posted by MarkG on ROS Answers with karma: 30 on 2015-11-16

Post score: 0


Original comments

Comment by gvdhoorn on 2015-11-17:
Are you saying that all packages get rebuilt (so compiler, linker, etc), even if nothing has changed to those already built? Or just that catkin iterates over all pkgs in your workspace, and that takes a long time?

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

You've already found the matching option. This is the right way of doing it. I'm not sure what other/easier way there should be besides specifying the package name.

There is another way that you might want to go, which is more setup work for now, but should be better in the long run. This is under the assumption that your new package is a development package by you and that there are no packages dependent on that in the others (i.e., yours is on the bottom of the dependency chain).

Just setup a new catkin workspace (in your home) and source your install workspace's setup.sh before. This is the "normal" way, when using a system installed ROS and besides that you compiled from source there is no difference to that.


Originally posted by dornhege with karma: 31395 on 2015-11-17

This answer was ACCEPTED on the original site

Post score: 1


Original comments

Comment by MarkG on 2015-11-17:
Thanks dornhege, that's what I was hoping. I'll give it a try today. I normally have a separate workspace for custom packages, but I am trying to keep the released ROS packages and my packages separate.

@gvdhoorn - a combination of both. There are some packages that recompile/link every time (camera_calibration_parsers is an example), while others just check to see if anything changed. All the messages are rebuilt everytime. And yes it takes that long. I'm compiling on the BeagleBone, from a SDcard, so I have to look into the speed there.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.