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://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: - Yocto: 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. TEMPORARY SOLUTION NOW: we simply write the easy-install.pth file in the rootfs task of the image generation.