# Why is the directory layout of Diamondback different when compiling from source?

I have installed ROS Diamondback from source, following the guidelines here: http://www.ros.org/wiki/diamondback/Installation/Arch. Now, for Ubuntu installations I created a rosinstall file that contains (besides other stuff) the following entries

other: { local-name: /opt/ros/diamondback/ros }
other: { local-name: /opt/ros/diamondback/stacks }


When compiling from source (Desktop-Full) on archlinux, there is no stacks directory. When installing Diamondback via aptitude on Ubuntu, there is a stacks directory. This is both puzzling because I expect the final result of compilation from source to be the same as when installed with some package manager. Also, this breaks the rosinstall file.

Why is the layout different? (maybe also: how to fix the rosinstall file?)

edit retag close merge delete

Sort by » oldest newest most voted

Source trees and binaries installations frequently vary in layout for various reasons. rosinstall is designed to give you a developer tree, whereas the binary installations are meant to be closer to a legal 'install' layout and support shared usage. Different use cases result in differing layouts.

more

The exact layout does not need to be the same as long as your ROS_PACKAGE_PATH is set appropriately to find the packages you want to use.
( 2011-09-03 04:32:14 -0600 )edit

The install instructions for Arch linux show how to get a user-local installation of ros in the directory ~/ros with all stacks being direct subdirectories of it.

If you have several users on the same computer, you might want to consider doing a shared installation with the same directory layout as the debian packages. Unfortunately there is no tutorial on this anymore. In short, you need to download the rosinstall file of the variant you want to use, adjust it to have all stacks in the subdir stacks and execute the rosinstall command (as root) with destination /opt/ros/<distro>. Then, again as root, execute

rosmake -a -i --rosdep-install


to build all packages and mark them as compiled in order to make them usable for users.

If you have only one user, you can use the arch installation and just add your stacks. Change your own rosinstall file to not contain the two lines you mentioned in your question and do:

rosinstall ~/ros your-file.rosinstall


This is basically the solution you pointed out already.

more

I came to the conclusion that it is preferable not to include the ROS distribution in the rosinstall file but specify it as a command-line argument to rosinstall, e.g.

rosinstall . my.rosinstall /opt/ros/diamondback


such avoiding the problem and also being more flexible. It's still an open question why the source install and the package install differ in directory layout.

more