# catkin_make_isolated does not create env.sh

Heyho,

I am trying to release a package containing a custom library for which we also use our custom build environment (which does add some convenient macros just as catkin would do). As it is all CMAKE I created a "wrapper" catkin package which will handle catkin dependencies and provide stuff like the package.xml (see https://github.com/fzi-forschungszent... ).

This works really well as long as I use catkin_make to build my workspace. All sources get build and installed correctly and subsequent projects can list this as dependency and so on. When I tried to release it however jenkins failed during presumably trying to execute the code? Here is the output:

[ 82%] Built target test_icl_core_config
[ 83%] Built target test_icl_core_logging
[ 91%] Built target ts_icl_core
[ 93%] Built target ts_icl_core_config
Install the project...
-- Install configuration: "Debug"
-- Installing: /tmp/catkin_workspace/install_isolated/share/tinyxml/tinyxml-config.cmake
-- Installing: /tmp/catkin_workspace/install_isolated/lib/libtinyxml.so
< many many more lines of installing...>
-- Removed runtime path from "/tmp/catkin_workspace/install_isolated/bin/ts_icl_core"
-- Installing: /tmp/catkin_workspace/install_isolated/bin/ts_icl_core_config
-- Removed runtime path from "/tmp/catkin_workspace/install_isolated/bin/ts_icl_core_config"
-- Removed runtime path from "/tmp/catkin_workspace/install_isolated/bin/ts_icl_core_thread"
Unhandled exception of type 'RuntimeError':
Traceback (most recent call last):
File "/opt/ros/indigo/lib/python2.7/dist-packages/catkin/builder.py", line 965, in build_workspace_isolated
number=index + 1, of=len(ordered_packages)
File "/opt/ros/indigo/lib/python2.7/dist-packages/catkin/builder.py", line 670, in build_package
"'\n  This sometimes occurs when a non-catkin package is "
RuntimeError: No env.sh file generated at: '/tmp/catkin_workspace/install_isolated/env.sh'
This sometimes occurs when a non-catkin package is interpreted as a catkin package.
This can also occur when the cmake cache is stale, try --force-cmake.
<== Failed to process package 'fzi_icl_core':
No env.sh file generated at: '/tmp/catkin_workspace/install_isolated/env.sh'
This sometimes occurs when a non-catkin package is interpreted as a catkin package.
This can also occur when the cmake cache is stale, try --force-cmake.
Command failed, exiting.
# END SUBSECTION
Build step 'Execute shell' marked build as failure
[WARNINGS]Skipping publisher since build result is FAILURE


Full output can be found here ( http://build.ros.org/job/Idev__fzi_ic... ). I get the same error when I build the package locally with the command

catkin_make_isolated


The suggested --force-cmake does not change anything in this regard.

So I see two solutions, both of which I have no idea how to implement:

1. Don't execute catkin_make_isolated (on the buildfarm)
2. Ensure that the env.sh file is correctly created

I guess that I have mixed something without declaring it correctly or something like that but I can not find specific documentation about this (other than the REP for catkin_make_isolated http://www.ros.org/reps/rep-0134.html which does not seem to answer my problem) . Can somebody give me any pointers as to what I am missing?

Thanks!

edit retag close merge delete

Sort by » oldest newest most voted

Since your CMake code does not call catkin_package() anywhere it is not really a catkin package. Hence the message:

This sometimes occurs when a non-catkin package is interpreted as a catkin package.

You might want to read REP 136. It might be sufficient if you declare the correct build type in your package manifest:

<export>
<build_type>cmake</build_type>
</export>

more

The Problem with setting the build type to plain cmake I experienced was that I could not use it within a catkin workspace. I would always have to build it with the catkin_make_isolated command which I did not want. But when I use the build Type as you suggested the isolated build works. Thanks

( 2016-04-11 13:40:27 -0600 )edit

Just remove the

if(NOT CATKIN_ENABLE_TESTING)

return()

endif()

from the CMakeLists.txt file and it would work like a normal catkin_make file. Then you can smoothly run catkin_make_isolated.

more