85 lines
5.2 KiB
Plaintext
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
|