Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rostest catkin/meta-ros dependency #404

Closed
jeffeb3 opened this issue Jun 27, 2016 · 1 comment · Fixed by #480
Closed

Rostest catkin/meta-ros dependency #404

jeffeb3 opened this issue Jun 27, 2016 · 1 comment · Fixed by #480

Comments

@jeffeb3
Copy link

jeffeb3 commented Jun 27, 2016

While building core-image-ros-roscore, from scratch, I get a catkin error.

TL;DR: The error is that catkin can't find the 'rostest' package and one of the packages (in this case 'base-local-planner').

Error:

ERROR: Function failed: do_configure (log file is located at /opt/yocto/yocto_fsl/build/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/base-local-planner/1.12.10-r0/temp/log.do_configure.31782)
ERROR: Logfile of failure stored in: /opt/yocto/yocto_fsl/build/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/base-local-planner/1.12.10-r0/temp/log.do_configure.31782
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 python function autotools_copy_aclocals
| DEBUG: Python function autotools_copy_aclocals finished
| DEBUG: Executing shell function do_configure
| NOTE: cmake.bbclass no longer uses OECMAKE_BUILDPATH.  The default behaviour is now out-of-tree builds with B=WORKDIR/build.
| -- The C compiler identification is GNU 4.9.1
| -- The CXX compiler identification is GNU 4.9.1
| -- Check for working C compiler: /opt/yocto/yocto_fsl/build/tmp/sysroots/x86_64-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc
| -- Check for working C compiler: /opt/yocto/yocto_fsl/build/tmp/sysroots/x86_64-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc -- works
| -- Detecting C compiler ABI info
| -- Detecting C compiler ABI info - done
| -- Check for working CXX compiler: /opt/yocto/yocto_fsl/build/tmp/sysroots/x86_64-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++
| -- Check for working CXX compiler: /opt/yocto/yocto_fsl/build/tmp/sysroots/x86_64-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++ -- works
| -- Detecting CXX compiler ABI info
| -- Detecting CXX compiler ABI info - done
| -- Using CATKIN_DEVEL_PREFIX: /opt/yocto/yocto_fsl/build/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/base-local-planner/1.12.10-r0/build/devel
| -- Using CMAKE_PREFIX_PATH: /opt/yocto/yocto_fsl/build/tmp/sysroots/phyflex-imx6-1/opt/ros/indigo;/opt/yocto/yocto_fsl/build/tmp/sysroots/phyflex-imx6-1/usr;/opt/yocto/yocto_fsl/build/tmp/sysroots/x86_64-linux/opt/ros/indigo;/opt/yocto/yocto_fsl/build/tmp/sysroots/x86_64-linux/usr
| -- This workspace overlays: /opt/yocto/yocto_fsl/build/tmp/sysroots/phyflex-imx6-1/opt/ros/indigo;/opt/yocto/yocto_fsl/build/tmp/sysroots/phyflex-imx6-1/usr;/opt/yocto/yocto_fsl/build/tmp/sysroots/x86_64-linux/opt/ros/indigo;/opt/yocto/yocto_fsl/build/tmp/sysroots/x86_64-linux/usr
| -- Found PythonInterp: /opt/yocto/yocto_fsl/build/tmp/sysroots/x86_64-linux/usr/bin/python-native/python (found version "2.7.3")
| -- Using PYTHON_EXECUTABLE: /opt/yocto/yocto_fsl/build/tmp/sysroots/x86_64-linux/usr/bin/python-native/python
| -- Using default Python package layout
| -- Found PY_em: /opt/yocto/yocto_fsl/build/tmp/sysroots/x86_64-linux/usr/lib/python2.7/site-packages/em.pyc
| -- Using empy: /opt/yocto/yocto_fsl/build/tmp/sysroots/x86_64-linux/usr/lib/python2.7/site-packages/em.pyc
| -- Using CATKIN_ENABLE_TESTING: 0
| -- catkin 0.6.18
| -- Using these message generators: gencpp;genlisp;genpy
| CMake Warning at /opt/yocto/yocto_fsl/build/tmp/sysroots/x86_64-linux/opt/ros/indigo/share/catkin/cmake/catkinConfig.cmake:76 (find_package):
|   Could not find a package configuration file provided by "rostest" with any
|   of the following names:
|
|     rostestConfig.cmake
|     rostest-config.cmake
|
|   Add the installation prefix of "rostest" to CMAKE_PREFIX_PATH or set
|   "rostest_DIR" to a directory containing one of the above files.  If
|   "rostest" provides a separate development package or SDK, be sure it has
|   been installed.
| Call Stack (most recent call first):
|   CMakeLists.txt:4 (find_package)
|
|
| -- Could not find the required component 'rostest'. The following CMake error indicates that you either need to install the package with the same name or change your environment so that it can be found.
| CMake Error at /opt/yocto/yocto_fsl/build/tmp/sysroots/x86_64-linux/opt/ros/indigo/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
|   Could not find a package configuration file provided by "rostest" with any
|   of the following names:
|
|     rostestConfig.cmake
|     rostest-config.cmake
|
|   Add the installation prefix of "rostest" to CMAKE_PREFIX_PATH or set
|   "rostest_DIR" to a directory containing one of the above files.  If
|   "rostest" provides a separate development package or SDK, be sure it has
|   been installed.
| Call Stack (most recent call first):
|   CMakeLists.txt:4 (find_package)
|
|
| -- Configuring incomplete, errors occurred!
| See also "/opt/yocto/yocto_fsl/build/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/base-local-planner/1.12.10-r0/build/CMakeFiles/CMakeOutput.log".
| WARNING: /opt/yocto/yocto_fsl/build/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/base-local-planner/1.12.10-r0/temp/run.do_configure.31782:1 exit 1 from
|   cmake ${OECMAKE_SITEFILE} /opt/yocto/yocto_fsl/build/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/base-local-planner/1.12.10-r0/navigation-1.12.10/base_local_planner -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_INSTALL_BINDIR:PATH=/usr/bin -DCMAKE_INSTALL_SBINDIR:PATH=/usr/sbin -DCMAKE_INSTALL_LIBEXECDIR:PATH=/usr/lib/base-local-planner -DCMAKE_INSTALL_SYSCONFDIR:PATH=/etc -DCMAKE_INSTALL_SHAREDSTATEDIR:PATH=/com -DCMAKE_INSTALL_LOCALSTATEDIR:PATH=/var -DCMAKE_INSTALL_LIBDIR:PATH=/usr/lib -DCMAKE_INSTALL_INCLUDEDIR:PATH=/usr/include -DCMAKE_INSTALL_DATAROOTDIR:PATH=/usr/share -DCMAKE_INSTALL_SO_NO_EXE=0 -DCMAKE_TOOLCHAIN_FILE=/opt/yocto/yocto_fsl/build/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/base-local-planner/1.12.10-r0/toolchain.cmake -DCMAKE_VERBOSE_MAKEFILE=1 -DCMAKE_PREFIX_PATH='/opt/yocto/yocto_fsl/build/tmp/sysroots/phyflex-imx6-1/opt/ros/indigo;/opt/yocto/yocto_fsl/build/tmp/sysroots/phyflex-imx6-1/usr;/opt/yocto/yocto_fsl/build/tmp/sysroots/x86_64-linux/opt/ros/indigo;/opt/yocto/yocto_fsl/build/tmp/sysroots/x86_64-linux/usr' -DCMAKE_INSTALL_PREFIX:PATH='/opt/ros/indigo' -DCATKIN_BUILD_BINARY_PACKAGE=ON -DSETUPTOOLS_DEB_LAYOUT=OFF -DCATKIN_ENABLE_TESTING=0 -Wno-dev
| ERROR: Function failed: do_configure (log file is located at /opt/yocto/yocto_fsl/build/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/base-local-planner/1.12.10-r0/temp/log.do_configure.31782)
NOTE: recipe base-local-planner-1.12.10-r0: task do_configure: Failed

Some more of my thoughts:

The rostest dependency must be listed in the package.xml and CMakeLists.txt for base-local-planner, but not in the recipe for base-local-planner. There is some strange stuff going on with rostest, I think, so I didn't look into it further. Doing this does "fix" the problem, but I defer to an expert because I don't think this is what you actually want to do:

echo "DEPENDS += "rostest"" >> $FSL_DIR/sources/meta-ros/recipes-ros/navigation/base-local-planner_1.12.10.bb

I don't know anything about the rostest package, but I think it's special somehow. I also get the impression that if I was building a different set of features, a different package might fail here instead of the base-local-planner, so just adding it to that recipe is probably not the fix. Hopefully, someone recognizes this, and has a good solution.

@bulwahn
Copy link
Contributor

bulwahn commented Jun 28, 2016

The issue you reported is well-known for two years now, it has been thoroughly discussed with the ROS core developers, and there is an commonly agreed solution to it.

If you look into the meta-ros git history, you will find these two interesting sets of changes:

Commit 9879db in pull request #161 [2] shows how we patch the ROS packages with CATKIN_ENABLE_TESTING to make rostest optional.

Pull request #239 [1] includes some more commits where we address the issue of making rostest dependencies optional. In fact, most patches (maybe even all) were provided back to the upstream repositories and merged into their development. Hence, meta-ros only contains the patches for those ROS packages that have not released new versions and recipes that have not been updated---which are only some very few by now.

You can also find the discussion on this topic with Dirk Thomas, catkin's main developer, in the rosdistro issue tracker ros/rosdistro#3010 [3].

With all that information at hand, I hope that you can produce a patch that resolves the issue just as it was discussed and resolved in the past. We are happy to review any pull request on this matter.

[1] #239
[2] 9879db3
[3] ros/rosdistro#3010

P.S.: I am on vacation, travelling through Europe and only have limited internet access; so I will not get much involved in lengthy technical discussions. Also I do not have access to any build server to check or confirm the functionality of any patch, and hence will rely on others confirming that patches work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants