ros / meta-ros

OpenEmbedded Layers for ROS 1 and ROS 2
MIT License
390 stars 254 forks source link

Include ros-control recipes from beagle-ros repository #143

Closed bulwahn closed 11 years ago

bulwahn commented 11 years ago

In https://github.com/vmayoral/beagle-ros/tree/ros-control, Victor has written some recipes for recipes of some ros-control packages. These should be included in the meta-ros layer, once they are considered finished.

At a first scan, I think we should add:

https://github.com/vmayoral/beagle-ros/blob/ros-control/recipes/cmake-modules/cmake-modules_0.1.0.bb https://github.com/vmayoral/beagle-ros/blob/ros-control/recipes/control-msgs/control-msgs_1.2.0.bb https://github.com/vmayoral/beagle-ros/tree/ros-control/recipes/control-toolbox https://github.com/vmayoral/beagle-ros/blob/ros-control/recipes/realtime-tools/realtime-tools_1.8.1.bb https://github.com/vmayoral/beagle-ros/tree/ros-control/recipes/robot-model https://github.com/vmayoral/beagle-ros/tree/ros-control/recipes/ros-control https://github.com/vmayoral/beagle-ros/tree/ros-control/recipes/ros-controllers https://github.com/vmayoral/beagle-ros/tree/ros-control/recipes/rosconsole-bridge

@vmayoral Please provide the recipes that you consider stable and have tested as commits to the meta-ros layer. We then review and merge them. On a first look, they all look very good to me.

vmayoral commented 11 years ago

Most of it is already working but i'm having some issues with tinyxml at the urdfdom recipe:

| -- urdfdom version 0.2.8
| -- Looking for tinyxml/tinyxml.hpp or tinyxml/tinyxml.h - not found.
| -- Found PkgConfig: /home/victor/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/sysroots/i686-linux/usr/bin/pkg-config (found version "0.25")
| Missing: tinyxml
| -- Boost version: 1.53.0
| -- Found the following Boost libraries:
| --   thread
| -- Configuration successful. Type make to compile urdfdom
| CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
| Please set them or make sure they are set and tested correctly in the CMake files:
| tinyxml_include_dirs
|    used as include directory in directory /home/victor/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/urdfdom-0.2.8-r0/urdfdom-0.2.8/urdf_parser
|    used as include directory in directory /home/victor/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/urdfdom-0.2.8-r0/urdfdom-0.2.8/urdf_parser
|    used as include directory in directory /home/victor/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/urdfdom-0.2.8-r0/urdfdom-0.2.8/urdf_parser
|    used as include directory in directory /home/victor/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/urdfdom-0.2.8-r0/urdfdom-0.2.8/urdf_parser
|    used as include directory in directory /home/victor/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/urdfdom-0.2.8-r0/urdfdom-0.2.8/urdf_parser
|    used as include directory in directory /home/victor/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/urdfdom-0.2.8-r0/urdfdom-0.2.8/urdf_parser
|    used as include directory in directory /home/victor/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/urdfdom-0.2.8-r0/urdfdom-0.2.8/urdf_parser
| 
| -- Configuring incomplete, errors occurred!
| ERROR: Function failed: do_configure (see /home/victor/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/urdfdom-0.2.8-r0/temp/log.do_configure.16538 for further information)
ERROR: Task 6 (/home/victor/setup-scripts/sources/beagle-ros/recipes/urdfdom/urdfdom_0.2.8.bb, do_configure) failed with exit code '1'
NOTE: Tasks Summary: Attempted 1244 tasks of which 1238 didn't need to be rerun and 1 failed.
No currently running tasks (1244 of 1253)

I believe this error is being raised at this point which seems to be caused by tinyxml. However cmake_modules should provide this as explained here and here, right?

bulwahn commented 11 years ago

@vmayoral I believe you simply must add libtinyxml as dependency in the udrfdom recipe. The libtinyxml recipe is provided with the meta-oe layer (cf. http://layers.openembedded.org/layerindex/recipe/1073/). I think it is part of Angstrom as well.

vmayoral commented 11 years ago

Since urdfdom didn't have a package.xml i was already suspecting that it was not a catking package and after reading this i decided to comment the inherit catkinline. The recipe cross-compiles this way.

I found a conflict with the boost_1.53.0.bb recipe (when bitbaking urdf recipe):

bitbake boost

...
| gcc.compile.c++ bin.v2/libs/iostreams/build/gcc-4.3.1/release/threading-multi/zlib.o
| libs/iostreams/src/zlib.cpp:20:76: fatal error: zlib.h: No such file or directory
| compilation terminated.
| 
|     "g++"  -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -pthread -fPIC  -DBOOST_ALL_NO_LIB=1 -DBOOST_IOSTREAMS_DYN_LINK=1 -DBOOST_IOSTREAMS_USE_DEPRECATED -DNDEBUG  -I"." -c -o "bin.v2/libs/iostreams/build/gcc-4.3.1/release/threading-multi/zlib.o" "libs/iostreams/src/zlib.cpp"
| 
| ...failed gcc.compile.c++ bin.v2/libs/iostreams/build/gcc-4.3.1/release/threading-multi/zlib.o...
| ...skipped <pbin.v2/libs/iostreams/build/gcc-4.3.1/release/threading-multi>libboost_iostreams.so.1.53.0 for lack of <pbin.v2/libs/iostreams/build/gcc-4.3.1/release/threading-multi>zlib.o...
| ...skipped <pstage/lib>libboost_iostreams.so.1.53.0 for lack of <pbin.v2/libs/iostreams/build/gcc-4.3.1/release/threading-multi>libboost_iostreams.so.1.53.0...
| ...skipped <pstage/lib>libboost_iostreams.so for lack of <pstage/lib>libboost_iostreams.so.1.53.0...
| gcc.compile.c++ bin.v2/libs/iostreams/build/gcc-4.3.1/release/link-static/threading-multi/zlib.o
| libs/iostreams/src/zlib.cpp:20:76: fatal error: zlib.h: No such file or directory
| compilation terminated.
| 
|     "g++"  -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -pthread  -DBOOST_ALL_NO_LIB=1 -DBOOST_IOSTREAMS_USE_DEPRECATED -DNDEBUG  -I"." -c -o "bin.v2/libs/iostreams/build/gcc-4.3.1/release/link-static/threading-multi/zlib.o" "libs/iostreams/src/zlib.cpp"
| 
| ...failed gcc.compile.c++ bin.v2/libs/iostreams/build/gcc-4.3.1/release/link-static/threading-multi/zlib.o...
| ...skipped <pbin.v2/libs/iostreams/build/gcc-4.3.1/release/link-static/threading-multi>libboost_iostreams.a(clean) for lack of <pbin.v2/libs/iostreams/build/gcc-4.3.1/release/link-static/threading-multi>zlib.o...
| ...skipped <pbin.v2/libs/iostreams/build/gcc-4.3.1/release/link-static/threading-multi>libboost_iostreams.a for lack of <pbin.v2/libs/iostreams/build/gcc-4.3.1/release/link-static/threading-multi>zlib.o...
| ...skipped <pstage/lib>libboost_iostreams.a for lack of <pbin.v2/libs/iostreams/build/gcc-4.3.1/release/link-static/threading-multi>libboost_iostreams.a...
| ...failed updating 2 targets...
| ...skipped 6 targets...
| ERROR: Function failed: do_compile (see /home/victor/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/i686-linux/boost-native-1.53.0-r1/temp/log.do_compile.2901 for further information)
ERROR: Task 7 (virtual:native:/home/victor/setup-scripts/sources/openembedded-core/meta/recipes-support/boost/boost_1.53.0.bb, do_compile) failed with exit code '1'

I reported this issue to the Angstrom-distro-level mailing list.

bulwahn commented 11 years ago

The recipe should simply inherit cmake, also you will need the dependencies. Just have a look at https://github.com/ros/urdfdom/blob/master/CMakeLists.txt --- there it looks for some package with find_package.

bulwahn commented 11 years ago

I hope you can solve the boost issue on the Angstrom mailing list.

vmayoral commented 11 years ago

All right after some progress, most of the _roscontrol recipes seem to cross-compile. Take a look at the state of them here.

I've had some trouble with the urdfdom recipe but after following @bulwahn's advice and applying some patches i managed to cross-compile it.

However when i try to cross-compile the urdf recipe i get:

ERROR: QA Issue: urdf rdepends on urdfdom-dev
ERROR: QA run found fatal errors. Please consider fixing them.
ERROR: Function failed: do_package_qa
ERROR: Logfile of failure stored in: /home/victor/Escritorio/GSOC/setup-scripts/build/tmp-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/urdf-1.10.14-r0/temp/log.do_package.17549
ERROR: Task 9 (/home/victor/Escritorio/GSOC/setup-scripts/sources/beagle-ros/recipes/robot-model/urdf_1.10.14.bb, do_package) failed with exit code '1'
NOTE: Tasks Summary: Attempted 2189 tasks of which 2188 didn't need to be rerun and 1 failed.
No currently running tasks (2188 of 2194)

No clue where this urdfdom-dev comes from.

bulwahn commented 11 years ago

I tried the recipes on my machine with poky and I did not run into the the problem with the urdf recipe. It seems like a temporary problem because your build directory is dirty.

I see that the recipes for collada-dom, wxpython and orocos-kdl are missing. For wxpython, I found a recipe at https://github.com/MinnowBoard/meta-robotarm-opencv-demo/blob/master/recipes-robot-opencv-demo/python/python-wxpython_2.8.12.1.bb For the other two software packages, I did not find any recipe.

bulwahn commented 11 years ago

Two further minor issues:

I corrected the LIC_FILES_CHKSUM in control-msgs:

-LIC_FILES_CHKSUM = "file://package.xml;beginline=16;endline=16;md5=40e3d865780ec900fda526e6c2aef395" +LIC_FILES_CHKSUM = "file://package.xml;beginline=12;endline=12;md5=d566ef916e9dedc494f5f793a6690ba5"

and I replaced tinyxml by libtinyxml in control-toolbox.

DEPENDS = "rosconsole tf roscpp angles message-generation \ -dynamic-reconfigure tinyxml realtime-tools message-filters" +dynamic-reconfigure libtinyxml realtime-tools message-filters"

bulwahn commented 11 years ago

Also, it would be good to improve and clean up the patches and provide them to the upstream repositories. Especially, the "check for CATKIN_ENABLE_TESTING" patches should be easy to integrate in the upstream repositories.

vmayoral commented 11 years ago

@bulwahn thanks for the recipe fixes.

I'm taking the dirty build directory quite seriously and everytime something looks odd i'm cleaning everything related to a recipe with bitbake -c cleanall <whatever-recipe>

Since it worked for you I removed my whole build directory, created a new one and bitbaked the urdf recipe once again. I get the same:

ERROR: QA Issue: urdf rdepends on urdfdom-dev
ERROR: QA run found fatal errors. Please consider fixing them.
ERROR: Function failed: do_package_qa
ERROR: Logfile of failure stored in: /home/victor/Escritorio/GSOC/setup-scripts/build/tmp-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/urdf-1.10.14-r0/temp/log.do_package.16261
ERROR: Task 9 (/home/victor/Escritorio/GSOC/setup-scripts/sources/beagle-ros/recipes/robot-model/urdf_1.10.14.bb, do_package) failed with exit code '1'

Maybe it's some Angstrom related issue?

koenkooi commented 11 years ago

Angstrom actually cares about using the build output instead of being just a way to build stuff like Poky, so more QA warnings are treated as errors.

In this case urdfdom-dev contains a shared library instead of the symlink to it. This is a severe packaging error, since the -dev will drag in all other -dev packages as well.

bulwahn commented 11 years ago

So, the FILES of urdfdom must be set accordingly in the urdfdom recipe, and we are all set.

vmayoral commented 11 years ago

@bulwahn I don't know what you mean by that. I'm still wondering

No clue where this urdfdom-dev comes from.

bulwahn commented 11 years ago

In the do_package task, the installed files are split into different packages, urdfdom, urdfdom-dev, urdfdom-dbg, depending for what they are needed for. There is a reasonable default setup, but this can be extended or overwritten by setting the FILES variable in the recipe. Following Koen's suggestion, you must ensure that the symlink to the shared library is in the -dev package, and the library itself is in the urdfdom package.

koenkooi commented 11 years ago

What I suspect is happening is that urdfdom has unversioned libraries instead of versioned ones. Have a look at http://dominion.thruhere.net/koen/cms/the-testlab-strikes-again

5 year old blog post, still relevant :)

vmayoral commented 11 years ago

Thanks @koenkooi @bulwahn and @kraj for your comments. I spent some time reading more about the FILES and PACKAGES and I gave it a try:

The .so libraries are in urdfdom-dev (and not in the urdfdom) within my build-tree:

urdfdom-dev
└── usr
    ├── include
    │   └── urdf_parser
    │       └── urdf_parser.h
    └── lib
        ├── liburdfdom_model.so
        ├── liburdfdom_model_state.so
        ├── liburdfdom_sensor.so
        ├── liburdfdom_world.so
        └── pkgconfig
            └── urdfdom.pc
urdfdom
└── usr
    └── share
        └── urdfdom
            └── cmake
                └── urdfdom-config.cmake

I modified the recipe https://github.com/vmayoral/beagle-ros/blob/master/recipes-ros/urdfdom/urdfdom_0.2.8.bb#L17 however if i "bitbake urdfdom" (after cleaning with "bitbake -c cleanall urdfdom") again the result is the same the libs remain under urdfdom-dev.

I could use some help here.

herbrechtsmeier commented 11 years ago

@vmayoral Take a look at the ros.bbclass. You have to clear the FILES_SOLIBSDEV variable. The best is you inherit the ros class.

koenkooi commented 11 years ago

Packages get populated according to the order specified in bitbake.conf, for 'danny' that is:

PACKAGES = "${PN}-dbg ${PN}-staticdev ${PN}-dev ${PN}-doc ${PN}-locale ${PACKAGE_BEFORE_PN} ${PN}"

You can fix this problem by adding:

FILES_${PN}-dev = "${includedir} ${datadir}/${BPN}/cmake"

koenkooi commented 11 years ago

Of course fixing urdfdom to use proper SOVERSIONs for its libs would be even better :)

herbrechtsmeier commented 11 years ago

@vmayoral The ros.class also defines some additional variables. You should use ROS_BPN instead of the BPN as it always contains the real ros name (with underscore instead of hyphen in the name). Additionally ROS_SPN and ROS_SP contain the ros name of the source package. This leads to a common SRC_URI and S line. The ROS_SP should be manual set for ros packages which use one source package. You can find an example in the last version of ros-comm.inc.

vmayoral commented 11 years ago

I'll share some of the updates regarding this issue working with Angstrom:


After fixing the issue with the urdf recipe, there're some dependencies missing as @bulwahn pointed out:

ERROR: Legacy staging found for /home/victor/Escritorio/GSOC/setup-scripts/sources/beagle-ros/recipes-ros/wxwidgets/wxwidgets_2.9.0.bb as it has a do_stage function. This will need conversion to a do_install or often simply removal to work with OE-core
....

So i just commented the do_stage function and added a LIC_FILES_CHKSUM however the errors when cross-compiling doesn't look good to me:

| DEBUG: SITE files ['endian-little', 'bit-32', 'arm-common', 'common-linux', 'common-glibc', 'arm-linux', 'arm-linux-gnueabi', 'common']
| DEBUG: Executing shell function do_compile
| NOTE: make -j2
| arm-angstrom-linux-gnueabi-g++  -march=armv7-a     -mthumb-interwork -mfloat-abi=softfp -mfpu=neon -mtune=cortex-a8 --sysroot=/home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/sysroots/beaglebone -shared  -o /home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/wxwidgets-2.9.0-r0.0/wxWidgets-2.9.0/lib/libwx_baseu-2.9.so.0.0.0  basedll_appbase.o basedll_arcall.o basedll_arcfind.o basedll_archive.o basedll_arrstr.o basedll_base64.o basedll_clntdata.o basedll_cmdline.o basedll_config.o basedll_convauto.o basedll_datetime.o basedll_datetimefmt.o basedll_datstrm.o basedll_dircmn.o basedll_dynarray.o basedll_dynlib.o basedll_dynload.o basedll_encconv.o basedll_evtloopcmn.o basedll_extended.o basedll_ffile.o basedll_file.o basedll_fileback.o basedll_fileconf.o basedll_filefn.o basedll_filename.o basedll_filesys.o basedll_filtall.o basedll_filtfind.o basedll_fmapbase.o basedll_fs_arc.o basedll_fs_filter.o basedll_hash.o basedll_hashmap.o basedll_init.o basedll_intl.o basedll_ipcbase.o basedll_list.o basedll_log.o basedll_longlong.o basedll_memory.o basedll_mimecmn.o basedll_module.o basedll_mstream.o basedll_object.o basedll_platinfo.o basedll_powercmn.o basedll_process.o basedll_regex.o basedll_stdpbase.o basedll_sstream.o basedll_stopwatch.o basedll_strconv.o basedll_stream.o basedll_string.o basedll_stringimpl.o basedll_stringops.o basedll_strvararg.o basedll_sysopt.o basedll_tarstrm.o basedll_textbuf.o basedll_textfile.o basedll_timercmn.o basedll_timerimpl.o basedll_tokenzr.o basedll_txtstrm.o basedll_unichar.o basedll_uri.o basedll_ustring.o basedll_variant.o basedll_wfstream.o basedll_wxcrt.o basedll_wxprintf.o basedll_xlocale.o basedll_xti.o basedll_xtistrm.o basedll_zipstrm.o basedll_zstream.o basedll_fdiodispatcher.o basedll_selectdispatcher.o basedll_appunix.o basedll_unix_dir.o basedll_dlunix.o basedll_epolldispatcher.o basedll_evtloopunix.o basedll_fdiounix.o basedll_unix_snglinst.o basedll_unix_stackwalk.o basedll_unix_stdpaths.o basedll_timerunx.o basedll_threadpsx.o basedll_utilsunx.o basedll_unix_mimetype.o basedll_event.o basedll_fs_mem.o basedll_msgout.o basedll_utilscmn.o      -L/home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/wxwidgets-2.9.0-r0.0/wxWidgets-2.9.0/lib   -Wl,-soname,libwx_baseu-2.9.so.0  -pthread -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed    -lwxregexu-2.9-arm-angstrom-linux-gnueabi  -pthread -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,--version-script,/home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/wxwidgets-2.9.0-r0.0/wxWidgets-2.9.0/version-script -lz -ldl -lm  -lz -ldl -lm
| /home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/sysroots/i686-linux/usr/libexec/armv7a-vfp-neon-angstrom-linux-gnueabi/gcc/arm-angstrom-linux-gnueabi/4.7.3/ld: basedll_appbase.o: relocation R_ARM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC
| basedll_appbase.o: could not read symbols: Bad value
| collect2: error: ld returned 1 exit status
| make: *** [/home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/wxwidgets-2.9.0-r0.0/wxWidgets-2.9.0/lib/libwx_baseu-2.9.so.0.0.0] Error 1
| ERROR: oe_runmake failed

(refer to https://github.com/vmayoral/beagle-ros/commit/18888862479a910151769aa69c3cf0b89818e08d)

bulwahn commented 11 years ago

After taking Stefan Herbrechtsmeier's suggestions about ROS_BPN, ROS_SP and ROS_SPN into account, you are welcome to provide pull requests for the stable recipes. Probably best in this order: cmake-modules, rosconsole-bridge, urdfdom, urdfdom-header, control-msgs, control-toolbox, realtime-tools, ros-control, ros-controllers (then every commit keeps the repository consistent, e.g., there are no dangling dependencies in between)

kraj commented 11 years ago

There seem to be couple of issues

  1. -fPIC is not passed to CFLAGS/CXXFLAGS
  2. do_stage is not needed anymore it should be folder into do_install
kraj commented 11 years ago

@herbrechtsmeier its not a good practice to put FILES_SOLIBSDEV override in a class. Doing it per recipe bases is better in hope that upstream will fix naming the shared objects to .so.X and leave .so to be a symlink or linker stub as it is in most case.

herbrechtsmeier commented 11 years ago

@kraj To my knowledge the missing so version is a generic problem of ROS and there was a discussion about this issue but no decision. As long as this is a common ros issue I don't see any advantage in moving FILES_SOLIBSDEV to the single packages. As soon as there is a decision we can remove the FILES_SOLIBSDEV from the class and can try to fix the remaining issues upstream.

vmayoral commented 11 years ago

I've had some progress with the issues i mentioned above. I also corrected the recipes according to @bulwahn and @herbrechtsmeier comments.

I'm hoping soon to make the pull requests.

vmayoral commented 11 years ago

Most of ros_controls recipes compiling already at this point https://github.com/vmayoral/beagle-ros/commit/0855e72062088168037a4fed123e394e739da7b9

Still fighting with these two:

Log data follows:
| DEBUG: SITE files ['endian-little', 'bit-32', 'arm-common', 'common-linux', 'common-glibc', 'arm-linux', 'arm-linux-gnueabi', 'common']
| DEBUG: Executing shell function do_compile
| NOTE: make -j2
| /home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/sysroots/i686-linux/usr/bin/cmake -H/home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/collada-urdf-1.10.14-r0/robot_model-1.10.14/collada_urdf -B/home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/collada-urdf-1.10.14-r0/robot_model-1.10.14/collada_urdf/build --check-build-system CMakeFiles/Makefile.cmake 0
| /home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/sysroots/i686-linux/usr/bin/cmake -E cmake_progress_start /home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/collada-urdf-1.10.14-r0/robot_model-1.10.14/collada_urdf/build/CMakeFiles /home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/collada-urdf-1.10.14-r0/robot_model-1.10.14/collada_urdf/build/CMakeFiles/progress.marks
| make -f CMakeFiles/Makefile2 all
| make[1]: Entering directory `/home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/collada-urdf-1.10.14-r0/robot_model-1.10.14/collada_urdf/build'
| make -f CMakeFiles/collada_urdf.dir/build.make CMakeFiles/collada_urdf.dir/depend
| make[2]: Entering directory `/home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/collada-urdf-1.10.14-r0/robot_model-1.10.14/collada_urdf/build'
| cd /home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/collada-urdf-1.10.14-r0/robot_model-1.10.14/collada_urdf/build && /home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/sysroots/i686-linux/usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/collada-urdf-1.10.14-r0/robot_model-1.10.14/collada_urdf /home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/collada-urdf-1.10.14-r0/robot_model-1.10.14/collada_urdf /home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/collada-urdf-1.10.14-r0/robot_model-1.10.14/collada_urdf/build /home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/collada-urdf-1.10.14-r0/robot_model-1.10.14/collada_urdf/build /home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/collada-urdf-1.10.14-r0/robot_model-1.10.14/collada_urdf/build/CMakeFiles/collada_urdf.dir/DependInfo.cmake --color=
| make[2]: Leaving directory `/home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/collada-urdf-1.10.14-r0/robot_model-1.10.14/collada_urdf/build'
| make -f CMakeFiles/collada_urdf.dir/build.make CMakeFiles/collada_urdf.dir/build
| make[2]: Entering directory `/home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/collada-urdf-1.10.14-r0/robot_model-1.10.14/collada_urdf/build'
| make[2]: *** No rule to make target `/usr/lib/liboctomap.so', needed by `devel/lib/libcollada_urdf.so'.  Stop.
| make[2]: Leaving directory `/home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/collada-urdf-1.10.14-r0/robot_model-1.10.14/collada_urdf/build'
| make[1]: *** [CMakeFiles/collada_urdf.dir/all] Error 2
| make[1]: Leaving directory `/home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/collada-urdf-1.10.14-r0/robot_model-1.10.14/collada_urdf/build'
| make: *** [all] Error 2
| ERROR: oe_runmake failed
| ERROR: Function failed: do_compile (see /home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/collada-urdf-1.10.14-r0/temp/log.do_compile.29702 for further information)
ERROR: Task 7 (/home/victor/Escritorio/GSOC/setup-scripts/sources/beagle-ros/recipes-ros/robot-model/collada-urdf_1.10.14.bb, do_compile) failed with exit code '1'

I checked my buildtree to figure out something from No rule to make target/usr/lib/liboctomap.so', needed by devel/lib/libcollada_urdf.so'. Stop. but no clue so far.

Log data follows:
| DEBUG: Executing python function sysroot_cleansstate
| DEBUG: Python function sysroot_cleansstate finished
| DEBUG: SITE files ['endian-little', 'bit-32', 'arm-common', 'common-linux', 'common-glibc', 'arm-linux', 'arm-linux-gnueabi', 'common']
| DEBUG: Executing shell function autotools_preconfigure
| DEBUG: Shell function autotools_preconfigure finished
| DEBUG: Executing shell function do_configure
| -- Using CATKIN_DEVEL_PREFIX: /home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/kdl-parser-1.10.14-r0/robot_model-1.10.14/kdl_parser/build/devel
| -- Using CMAKE_PREFIX_PATH: /home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/sysroots/beaglebone/usr;/home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/sysroots/i686-linux/usr
| -- This workspace overlays: /home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/sysroots/beaglebone/usr;/home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/sysroots/i686-linux/usr
| -- Using default Python package layout
| -- Using CATKIN_ENABLE_TESTING: 0
| -- catkin 0.5.73
| CMake Error at /home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/sysroots/beaglebone/usr/share/orocos_kdl/orocos_kdl-config.cmake:39 (MESSAGE):
|   Can't find KDL without pkgconfig !
| Call Stack (most recent call first):
|   CMakeLists.txt:13 (find_package)
| 
| 
| -- Configuring incomplete, errors occurred!
| ERROR: Function failed: do_configure (see /home/victor/Escritorio/GSOC/setup-scripts/build/tmp-angstrom_v2012_12-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/kdl-parser-1.10.14-r0/temp/log.do_configure.30501 for further information)
ERROR: Task 6 (/home/victor/Escritorio/GSOC/setup-scripts/sources/beagle-ros/recipes-ros/robot-model/kdl-parser_1.10.14.bb, do_configure) failed with exit code '1'
NOTE: Tasks Summary: Attempted 2213 tasks of which 2212 didn't need to be rerun and 1 failed.
No currently running tasks (2212 of 2222)

Summary: 1 task failed:

@koenkooi suggested to take a look at sysroots/beaglebone/usr/share/orocos_kdl/orocos_kdl-config.cmake:

# Locate KDL install directory

# This module defines
# orocos_kdl_INSTALL where to find include, lib, bin, etc.
# orocos_kdl_FOUND, is set to true

INCLUDE (FindPkgConfig)

IF ( PKG_CONFIG_FOUND )

  # set flag for whether items are required or not
  SET(IS_REQUIRED)
  IF (orocos_kdl_FIND_REQUIRED)
    SET(IS_REQUIRED "REQUIRED")
  ENDIF (orocos_kdl_FIND_REQUIRED)

  # find KDL itself
  set(ENV{PKG_CONFIG_PATH} "/usr/lib/pkgconfig/")
  message( "Looking for KDL in: /usr")
  pkg_search_module(orocos_kdl ${IS_REQUIRED} orocos_kdl)

  IF( orocos_kdl_FOUND )
    IF(NOT orocos_kdl_FIND_QUIETLY)
      message("   Includes in: ${orocos_kdl_INCLUDE_DIRS}")
      message(    "Compiler flags: ${orocos_kdl_CFLAGS}")  
      message("   Libraries: ${orocos_kdl_LIBRARIES}")
      message("   Libraries in: ${orocos_kdl_LIBRARY_DIRS}")
      message("   Linker flags : ${orocos_kdl_LD_FLAGS}")
      message("   Defines: ${orocos_kdl_DEFINES}")
    ENDIF(NOT orocos_kdl_FIND_QUIETLY)

  ELSE(orocos_kdl_FOUND)  
    IF(orocos_kdl_FIND_REQUIRED)
      MESSAGE(FATAL_ERROR "Could not find KDL")
    ENDIF(orocos_kdl_FIND_REQUIRED)
  ENDIF ( orocos_kdl_FOUND )
ELSE  ( PKG_CONFIG_FOUND )

  MESSAGE( FATAL_ERROR "Can't find KDL without pkgconfig !")

ENDIF ( PKG_CONFIG_FOUND )

Not saying much to me. Does it for you? Maybe it's something related to the recipe orocos-kdl (which already cross-compiles)?

herbrechtsmeier commented 11 years ago

@vmayoral The first package use a wrong path (/usr/lib) for liboctomap.so and for the second package you have to check the FindPkgConfig.cmake file. It fails to find the pkg-config executable.

bulwahn commented 11 years ago

collada-urdf needs a dependency on octomap, and for kdl-parser you can try inherit pkgconfig

vmayoral commented 11 years ago

Tried inheriting from pkgconfig on kdl-parser and adding octomap as a dependency for collada-urdf. Same errors.

bulwahn commented 11 years ago

Most ros_control recipes were added with #159. The further discussion about orocos-kdl etc. can be continued in a new issue discussion.