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