From 3d8fdd04dd26293f718342223861caf274db5c1e Mon Sep 17 00:00:00 2001 From: Lukas Bulwahn <lukas.bulwahn@bmw-carit.de> Date: Wed, 23 Jan 2013 15:11:15 +0100 Subject: [PATCH] adjusting the README; a first try for cross-compiling the cpp-common things; extending the install-fuerte script --- README | 102 +++++++++++-------- install-fuerte.sh | 2 +- install-groovy.sh | 3 + recipes-ros/catkin/catkin-native_0.5.58.bb | 24 +++++ recipes-ros/ros-cpp-common/ros-cpp-common.bb | 26 +++++ 5 files changed, 115 insertions(+), 42 deletions(-) create mode 100644 recipes-ros/catkin/catkin-native_0.5.58.bb create mode 100644 recipes-ros/ros-cpp-common/ros-cpp-common.bb diff --git a/README b/README index 0782aca..d6457cb 100644 --- a/README +++ b/README @@ -41,39 +41,86 @@ INSTALLATION: Add the meta-ros directory to your local bblayers.conf file. -USE for native compilation on the VM (milestone M1): +USE for native compilation of ROS-fuerte on the qemu VM: The commands source oe-init-build-env - bitbake core-image-ros + bitbake core-image-ros-fuerte builds our specifically configured linux image. - With `runqemu qemux86-64 qemuparams="-m 2048" core-image-ros` the linux image runs within a virtual machine with 2048 MB of memory. - We assumed that this is running on and compiled for an x86-64 architecture. For other architectures, some settings must be adjusted. + With `runqemu qemux86 qemuparams="-m 2048" core-image-ros-fuerte` the linux image runs within a virtual machine with 2048 MB of memory. + We assumed that this is running on and compiled for an x86 architecture. For other architectures, some settings must be adjusted. - On the host system, run fetch_ros.sh in a fresh directory, e.g. ~/ros-repos/. + On the host system, run fetch-ros-fuerte.sh in a fresh directory, e.g. ~/ros-repos/. It clones all ros repositories locally. After starting the virtual machine, copy the installation script from the host system to the home directory with scp. - scp lukas@192.168.7.1:/<location of repository>/install.sh . + scp lukas@192.168.7.1:/<location of repository>/install-fuerte.sh . - Adjust configuration in install.sh and then run + Adjust configuration in install-fuerte.sh and then run +c + sh ./install-fuerte.sh + + The installation script installs ros and starts roscore. + + +USE for native compilation of ROS-groovy on the qemu VM: + The commands + source oe-init-build-env + bitbake core-image-ros-groovy + builds our specifically configured linux image. + + With `runqemu qemux86 qemuparams="-m 2048" core-image-ros-groovy` the linux image runs within a virtual machine with 2048 MB of memory. + We assumed that this is running on and compiled for an x86 architecture. For other architectures, some settings must be adjusted. + + On the host system, run mk_src in some clean temporary directory. + It copies all ros sources from their URLs and puts them into one src.tar.gz archive. + After starting the virtual machine, copy the installation script from the host system to the home directory with scp. + + scp lukas@192.168.7.1:/<location of repository>/install-groovy.sh . - sh ./install.sh + Adjust configuration in install-groovy.sh and then run + + sh ./install-groovy.sh The installation script installs ros and starts roscore. -USE for cross-compilation (milestone M2): + +USE for cross-compilation of ROS-fuerte (in development): source oe-init-build-env bitbake ros - momentarily fails at some point (see CURRENT STATE) + momentarily fails at some point with: + +> CMake Error at catkin/cmake/find_program_required.cmake:5 (message): +> check_test_ran.py not found +> Call Stack (most recent call first): +> ../catkin/CMakeFiles/tests.cmake:31 (find_program_required) +> ../catkin/CMakeFiles/tests.cmake:41 (catkin_initialize_tests) +> catkin/cmake/all.cmake:54 (include) +> catkin/CMakeLists.txt:12 (include) +> +> +> +> -- Configuring incomplete, errors occurred! +> +> +> ERROR: Function failed: do_configure (see /home/lukas/NEW/poky-danny-8.0/build/tmp/work/i586-poky-linux/ros-1.0-r0/temp/log.do_configure.9702 for further information) +> ERROR: Logfile of failure stored in: /home/lukas/NEW/poky-danny-8.0/build/tmp/work/i586-poky-linux/ros-1.0-r0/temp/log.do_configure.9702 + + +USE for cross-compilation of ROS-groovy (in development): + + source oe-init-build-env + bitbake ros-cpp-common + + does not work because the catkin-native package does not install correctly yet. CONTENT of the repository: README this README file, which contains all important information - COPYING.MIT + COPYING.MIT MIT license conf/layer.conf configuration file for this layer install.sh installation script that runs within the virtual machine recipes-core/images/core-image-ros.bb recipe for our own core image (derived from core-image-minimal) @@ -99,13 +146,7 @@ CONTENT of the repository: classes/setuptools.bbclass adjustments for python setuptools -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 real-time and safety requirements - -RESOLVED ISSUES for M1: +RESOLVED ISSUES for native compilation: - 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--has been committed to oe-core. @@ -116,38 +157,17 @@ RESOLVED ISSUES for M1: - rospkg modules are not found when runnning python. RESOLVED by using the dist_utils argument to use traditional packaging mechanism and avoid .egg files at all (suggested by Ross Burton) -OPEN ISSUES for M1: +OPEN ISSUES for native compilation: - 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 -OPEN ISSUES for M2: +OPEN ISSUES for cross-compilation of ros-fuerte: - understand what rosinstall actually does - how fetch from multiple git repositories in one recipe? -CURRENT STATE: - -`bitbake ros` fails with: - -> CMake Error at catkin/cmake/find_program_required.cmake:5 (message): -> check_test_ran.py not found -> Call Stack (most recent call first): -> ../catkin/CMakeFiles/tests.cmake:31 (find_program_required) -> ../catkin/CMakeFiles/tests.cmake:41 (catkin_initialize_tests) -> catkin/cmake/all.cmake:54 (include) -> catkin/CMakeLists.txt:12 (include) -> -> -> -> -- Configuring incomplete, errors occurred! -> -> -> ERROR: Function failed: do_configure (see /home/lukas/NEW/poky-danny-8.0/build/tmp/work/i586-poky-linux/ros-1.0-r0/temp/log.do_configure.9702 for further information) -> ERROR: Logfile of failure stored in: /home/lukas/NEW/poky-danny-8.0/build/tmp/work/i586-poky-linux/ros-1.0-r0/temp/log.do_configure.9702 - - LICENSE All metadata is MIT licensed unless otherwise stated. Source code included diff --git a/install-fuerte.sh b/install-fuerte.sh index 2904252..0d9fea5 100644 --- a/install-fuerte.sh +++ b/install-fuerte.sh @@ -3,7 +3,7 @@ # copy it into the virtual machine with: # scp <user>@192.168.7.1:/<location of install.sh> . # and run it: -# sh ./install.sh +# sh ./install-fuerte.sh # # local setting (must be adjusted) USERNAME="lukas" diff --git a/install-groovy.sh b/install-groovy.sh index a37004c..c215af2 100644 --- a/install-groovy.sh +++ b/install-groovy.sh @@ -18,3 +18,6 @@ cd ros_catkin_ws tar -xzf ../src.tar.gz # compile, make and install catkin_make_isolated --install +# start roscore +. install_isolated/setup.sh +roscore diff --git a/recipes-ros/catkin/catkin-native_0.5.58.bb b/recipes-ros/catkin/catkin-native_0.5.58.bb new file mode 100644 index 0000000..0896782 --- /dev/null +++ b/recipes-ros/catkin/catkin-native_0.5.58.bb @@ -0,0 +1,24 @@ +DESCRIPTION = "Low-level build system macros and infrastructure for ROS" +SECTION = "devel" +# TODO: License of catkin unmentioned in the repository +LICENSE = "CLOSED" + +SRC_URI = "https://github.com/ros/catkin/archive/0.5.58.tar.gz \ + file://catkin-change_default_for_debsetuptools.patch" +SRC_URI[md5sum] = "e4df85e60dc792af9324334547cc76aa" +SRC_URI[sha256sum] = "dd99cc04eeaf16a13185dd0a2f576939fa997dfb16a40ba45068c4d2ebbcb44b" + +# DEPENDS = "python-setuptools" + +EXTRA_OECMAKE = "-DSETUPTOOLS_DEB_LAYOUT=OFF" + +inherit cmake pythonnative python-dir + +FILES_${PN} += "${libdir}/${PYTHON_DIR}/* ${PYTHON_SITEPACKAGES_DIR}/*" + +export BUILD_SYS +export HOST_SYS +export STAGING_LIBDIR +export STAGING_INCDIR + +BBCLASSEXTEND += "native" diff --git a/recipes-ros/ros-cpp-common/ros-cpp-common.bb b/recipes-ros/ros-cpp-common/ros-cpp-common.bb new file mode 100644 index 0000000..f29194b --- /dev/null +++ b/recipes-ros/ros-cpp-common/ros-cpp-common.bb @@ -0,0 +1,26 @@ +DESCRIPTION = "Low-level build system macros and infrastructure for ROS" +SECTION = "devel" +# TODO: License of cpp_common not mentioned in the file +LICENSE = "CLOSED" + +SRC_URI = "https://github.com/ros-gbp/roscpp_core-release/archive/release/cpp_common/0.3.11.tar.gz" +SRC_URI[md5sum] = "7bf32963b9e2c82911bf089531c18482" +SRC_URI[sha256sum] = "86018219aa77f109d3340d332e7a041a9e047fd48d3d0e03bf2a4bd9baa66bde" + +S = "${WORKDIR}/roscpp_core-release-release-cpp_common-0.3.11" + +DEPENDS = "catkin-native" + +## changed in catkinConfig.cmake +# set(catkin_EXTRAS_DIR "/usr/share/catkin/cmake") +# to +# set(catkin_EXTRAS_DIR "/home/lukas/poky-danny-8.0/build/tmp/sysroots/qemux86/usr/share/catkin/cmake") +## +# should somehow install catkin to know the right pathes. +# + +EXTRA_OECMAKE = "" + +inherit cmake pythonnative + + -- GitLab