0
$\begingroup$

Rosanswers logo

This question is related to http://answers.ros.org/question/64702/overlaying-multiple-catkin-devel-spaces-at-the-same-time/ but it seemed better to ask separately than to hijack that thread.

I'm using catkin as a build tool from source. Basically, I want to have a base workspace that just contains catkin so that I can chain workspaces from there by using the setup.bash file. However, every catkin package (including catkin itself) depends on catkin_pkg. Since we are using catkin_pkg from source as well, I was hoping to be able to manually point to the catkin_pkg python files while configuring the catkin workspace, and have those files available in chained workspaces as well. I tried the following to "build" catkin:

export PYTHONPATH=/path_to_custom_install_dir_for/catkin_pkg/src:$PYTHONPATH
cmake .. (with appropriate build and install dirs set)
make

But, when I source the setup.bash file that is created, the PYTHONPATH only has catkin, not my custom path to catkin_pkg.

Am I misunderstanding what about "the environment in which it was created" is pulled in when sourcing the setup file? Or, is there a smarter way to set up catkin + catkin_pkg from source in user-space? (I don't want to install it via apt-get or pip).

EDIT based on comments below: Say I have workspaces A, B, C.
Now I:

  • add catkin_pkg to my PYTHONPATH
  • source ws_A/devel/setup.bash (PYTHONPATH now has both catkin_pkg and the ws_A stuff)
  • build ws_B.
  • In a new terminal, I source ws_B/devel/setup.bash, and then try to build ws_C.

Should I expect to see catkin_pkg on the PYTHONPATH in the new terminal? I think that's what I'm doing now, but the catkin_pkg that was on the PYTHONPATH when building B doesn't get passed along through the setup.bash. It's fine if the answer is "that doesn't work", I just want to be sure before I pick a different design.


Originally posted by aleeper on ROS Answers with karma: 573 on 2014-03-10

Post score: 0


Original comments

Comment by William on 2014-03-10:
That is the case, the PYTHONPATH will not be preserved by the setup file. The setup file will add any underlaid workspaces in your environment to your PYTHONPATH, but if catkin_pkg is not installed into one of these "underlays" then it will not get set by the generated setup files.

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

I think the "the environment in which it was created" mainly refers to CMAKE_PREFIX_PATH, which is recorded. I'm not 100% sure what other aspects of the environment are saved, but certainly not all environment variables. Have you considered installing catkin_pkg with pip in user space? There is the --user flag for pip install, and alternatively you can use virtualenv to achieve this.


Originally posted by demmeln with karma: 4306 on 2014-03-10

This answer was ACCEPTED on the original site

Post score: 0


Original comments

Comment by tfoote on 2014-03-10:
It only persists the build variables not your entire environment. It will update things like the PYTHONPATH, but not wipe out modifications you already had. So if you add a PYTHONPATH before the setup.bash it will persist. So the answer to your question is to add catkin_pkg to your PYTHONPATH before you used the devel/install space.

Comment by aleeper on 2014-03-10:
I ran out of characters so I edited the original question :)

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.