I'm posting a copy of my post at answers.ros.org, as I'm not sure whether the ROS community or the Linaro community is more likely to be able to answer. Let me know if you have any questions. The most important thing to note in the text below is
"Detected ros_comm bootstrapping it too. Could not detect OS. platform detection will not work"
I'm trying to get a working installation of ROS on my Gumstix Overo Tide. I've tried the gumros/ubuntu installation method using rootstock, but there's an issue with that because the Overo Tide lacks NAND storage, everything is on the SD card (the tradeoff is 512MB of RAM as opposed to 256). In any case, I found the Linaro project, which is truly excellent for creating bootable images for Gumstix, simply requiring a couple of downloads and a single command. In any case, I have a working Linaro installation, and I'm following the from source installation instructions for Ubuntu. This should work, as the Linaro OS is Ubuntu. However, when I run the command
sudo rosinstall ~/ros "http://packages.ros.org/cgi-bin/gen_rosinstall.py?rosdistro=diamondback&..."
I get (after a number of SVN downloads)
Bootstrapping ROS build Detected ros_comm bootstrapping it too. Could not detect OS. platform detection will not work [ rosmake ] Packages requested are: ['ros', 'ros_comm'] [ rosmake ] Logging to directory/home/gumros/.ros/rosmake/rosmake_output-20110607-003053 [ rosmake ] Expanded args ['ros', 'ros_comm'] to: ['rosmake', 'rosbash', 'rosboost_cfg', 'rospack', 'rosdep', 'rosemacs', 'rosclean', 'rosunit', 'roscreate', 'test_roslib', 'test_roscreate', 'test_rospack', 'test_rosdep', 'test_rosmake', 'rosbuild', 'roslib', 'roslang', 'mk', 'rospy', 'roslisp', 'roscpp_serialization', 'roscpp_traits', 'roscpp', 'roscore_migration_rules', 'rostest', 'rosservice', 'rosconsole', 'rosmsg', 'rosbagmigration', 'rosrecord', 'rosbag', 'roslaunch', 'topic_tools', 'rosout', 'rosgraph', 'rosnode', 'rostopic', 'rosparam', 'rosmaster', 'rosgraph_msgs', 'std_msgs', 'std_srvs', 'test_rosmaster', 'test_roslib_comm', 'test_rosparam', 'test_roscpp_serialization', 'test_ros', 'test_roslaunch', 'test_rostopic', 'test_rosbag', 'test_topic_tools', 'test_roscpp', 'test_roscpp_serialization_perf', 'test_rosservice', 'test_rospy', 'test_roswtf', 'test_rosnode', 'test_rosgraph', 'test_rostest', 'test_rostime', 'test_rosmsg', 'perf_roscpp', 'test_crosspackage', 'roswtf', 'xmlrpcpp', 'rostime', 'message_filters', 'cpp_common'] [ rosmake ] Generating Install Script using rosdep then executing. This may take a minute, you will be prompted for permissions. . . [ rosmake ] rosdep install failed: Could not detect OS, tried ['rosdep_test_os', 'debian', 'ubuntu', 'ubuntu', 'opensuse', 'fedora', 'rhel', 'arch', 'macports', 'gentoo', 'cygwin', 'freebsd'] Traceback (most recent call last): File "/usr/local/bin/rosinstall", line 5, in <module> pkg_resources.run_script('rosinstall==0.5.16', 'rosinstall') File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 467, in run_script self.require(requires)[0].run_script(script_name, ns) File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 1200, in run_script execfile(script_filename, namespace, namespace) File "/usr/local/lib/python2.7/dist-packages/rosinstall-0.5.16-py2.7.egg/EGG-INFO/scripts/rosinstall", line 556, in <module> sys.exit(not rosinstall_main(sys.argv)) File "/usr/local/lib/python2.7/dist-packages/rosinstall-0.5.16-py2.7.egg/EGG-INFO/scripts/rosinstall", line 547, in rosinstall_main subprocess.check_call("source %s && rosmake ros%s --rosdep-install%s" % (os.path.join(options.path, 'setup.sh'), ros_comm_insert, rosdep_yes_insert), shell=True, executable='/bin/bash') File "/usr/lib/python2.7/subprocess.py", line 504, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command 'source /home/gumros/ros/setup.sh && rosmake ros ros_comm --rosdep-install' returned non-zero exit status 1
This indicates that ROS can't determine the OS. I suspect that this is because Linaro calls itself Linaro, not Ubuntu (which is what the image is). Any ideas on how to get Linaro to call itself Ubuntu, or to get ROS to understand that Linaro means Ubuntu?
Thanks, Bradley Powers
On Tue, Jun 07, 2011, Bradley Powers wrote:
This indicates that ROS can't determine the OS. I suspect that this is because Linaro calls itself Linaro, not Ubuntu (which is what the image is). Any ideas on how to get Linaro to call itself Ubuntu, or to get ROS to understand that Linaro means Ubuntu?
Linaro images include a modified base-files package which sets up lsb-release configs with "Linaro" instead of "Ubuntu". You're likely seeing the effect of lsb_release output being Linaro according to /etc/lsb-release instead of Ubuntu.
One way this could be handled by ROS (or any ISV really) is to use the new "dpkg-vendor" tool to check whether the current distro has a known distro as a parent.
For instance "dpkg-vendor --derives-from Debian" succeeds under Ubuntu, and "dpkg-vendor --derives-from Ubuntu" or dpkg-vendor --derives-from Debian" should succeed under a Linaro image.
Unfortunately, dpkg-vendor is in dpkg-dev, so maybe one nee to parse /etc/dpkg/origins/* manually instead.
In the mean time, you can downgrade base-files or edit its conffiles locally.
Cheers,