Go to file
Lukas Bulwahn b1066e884a a first iteration at creating the correct easyinstall.pth file 2012-12-20 14:23:01 +01:00
meta a first iteration at creating the correct easyinstall.pth file 2012-12-20 14:23:01 +01:00
README.af_yocto setting the hosts file through the image recipe 2012-12-20 14:21:25 +01:00
install.sh no need to install rospkg natively anymore 2012-12-20 14:22:34 +01:00

README.af_yocto

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:

  - 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.