meta-ros/README.meta_ros

85 lines
5.2 KiB
Plaintext

PURPOSE:
This document describes the installation, use and content of the git repository af_yocto.
INSTALLATION and USE:
The repository only contains our contributions to the existing yocto poky-danny-8.0 archive.
To obtain all files, unpack http://downloads.yoctoproject.org/releases/yocto/yocto-1.3/poky-danny-8.0.tar.bz2 into this repository.
The commands
source oe-init-build-env
bitbake core-image-bmw
builds our specifically configured linux image.
With `runqemu qemux86-64 qemuparams="-m 2048" core-image-bmw` the linux image runs within a virtual machine with 2048 MB of memory.
We assume that this is running on and compiled for an x86-64 architecture. For other architectures, some settings must be adjusted.
Extract ros_server.tar.gz somewhere, adjust pathes in fuerte-ros-base.rosinstall to the location where it has been extracted to.
After starting the virtual machine, copy the installation script from the guest system to the home directory with scp and execute it.
scp lukas@192.168.7.1:/<location of repository>/install.sh .
sh ./install.sh
WARNING:
When contributing repository, notice that the recipe for log4cxx was based on the recipe in the OpenEmbedded (Classic) Development
(cf. http://cgit.openembedded.org/openembedded/tree/recipes/log4cxx), which is licensed with the MIT Licence.
CONTENT of the repository:
.gitignore list of filenames of the poky-danny-8.0 release to ignore. Adjust file to track newly added recipes.
README.af_yocto this README file, which contains all important information
install.sh installation script that runs within the virtual machine
ros_server.tar.gz archive with all ros-base repositories and an adjusted .rosinstall file
build/conf/bblayers.conf setting file for building image
build/conf/local.conf setting file for building image
meta/recipes-core/images/core-image-bmw.bb recipe for our own core image (derived from core-image-minimal)
meta/recipes-devtools/python/python-pyyaml_3.10.bb recipe for pyyaml python library
meta/recipes-devtools/python/python-rospkg_1.0.15.bb recipe for rospkg tool
meta/recipes-devtools/python/python-empy_3.3.bb recipe for empy python library
meta/recipes-devtools/python/python-nose_1.2.1.bb recipe for nose python library
meta/recipes-devtools/python/python-rosinstall_0.6.21.bb recipe for rosinstall tool
meta/recipes-devtools/log4cxx recipes and patches for log4cxx (only 0.10.0 is used)
MILESTONES
M1: basic image with dev-tools (make, cmake, ...) and ROS compiles natively in the virtual machine
M2: Linux+ROS System can be built completely with bitbake (no compilation and installing in the virtual machine)
M3: Linux+ROS System with configured kernel (e.g. RT-Linux, System-D) that meets AF requirements
RESOLVED ISSUES for M1:
- recipes for python-pyyaml and python-rospkg create invalid shell scripts (header line refers to python-native instead of python.)
RESOLVED by patching distutils class--will be committed to yocto.
- recipe for log4cxx requires another patch.
RESOLVED by providing patch 0003 in recipe
- Compilation with make fails in the virtual machine because of insufficient memory during compilation.
RESOLVED by increasing memory.
OPEN ISSUES for M1:
- python-setuptools requires some python-modules at run-time.
TEMPORARILY RESOLVED by adding all python-modules in the image
SHOULD BE RESOLVED by creating an appropriate patch for python-setuptools and contributing to openembedded-core
- rospkg modules are not found when runnning python.
TEMPORARILY RESOLVED by installing natively in the virtual machine
CAUSE of PROBLEM: must add /usr/lib/python2.7/site-packages/rospkg-1.0.15-py2.7.egg to PYTHON_PATH (sys.path)
In the usual setting, this is done by adding rospkg-1.0.15-py2.7.egg to the easy-install.pth
However, the distutils class removes the created easy-install.pth before packaging.
Modifying the class, to not remove the easy-install.pth does not solve the issue, because
also the python-setuptools must add an entry to easy-install.pth
This can be only solved by providing a general merge mechanism for the easy-install.pth file.
Implementing this should not be difficult because the format of this file is very easy, and
the pathes can be simply accumulated.
FIRST TEMPORARY SOLUTION: we simply write the easy-install.pth file in the rootfs task of the image generation.
SECOND SOLUTION: implemented behavior described above
THIRD SOLUTION: uses the dist_utils argument to use traditional packaging mechanism and avoid .egg files at all (suggested by Ross Burton)
OPEN ISSUES for M2:
- understand what rosinstall actually does
- how fetch from multiple git repositories?
OPEN ISSUES for PUBLICATION:
- Explain how to/write a script to obtain the files in ros_server
- Maybe remove build/conf/ from repository.
- make a proper layer