Rosanswers logo

I'm currently migrating to using roslisp under groovy. For compiling bigger projects I use roslisp_repl with slime (a.k.a. "the REPL"). I have the problem that the REPL does not find auto-generated roslisp messages from wet packages within my catkin workspace.

I did some digging into the code behind the REPL and learned that for compilation it searches all subdirectories of the ROS_PACKAGE_PATH and the ROSLISP_PACKAGE_DIRECTORIES for valid lisp-system (valid lisp-system are directories containing an asd-file).

My problem description:

  • catkin workspace at ~/ros/groovy/catkin_ws
  • .bashrc sources /opt/ros/groovy/source.bash and ~/ros/groovy/catkin_ws/devel/setup.bash
  • wet package test_msgs in src-workspace with some message defintions
  • catkin_make successfully builds messages and puts generated roslisp messages in ~/ros/groovy/catkin_ws/devel/share/common-lisp/ros/test_msgs.
  • ROS_PACKAGE_PATH does not contain this path
  • as a result the REPL complains that it cannot find the generated lisp-code

Here are my questions:

  • Has ROSLISP_PACKAGE_DIRECTORIES been intentionally deprecated in groovy?
  • If no, could it be used to contain /opt/ros/groovy/share/common-lisp/ros and all /devel/share/common-lisp/ros sub-directories of all overlays?
  • If yes, how can lisp-compilers find the generated lisp-code in the devel-section of my overlay?

Originally posted by Georg Bartels on ROS Answers with karma: 157 on 2013-06-18

Post score: 1

Original comments

Comment by Dirk Thomas on 2013-06-18:
You do not have to source two setup.bash files. The second one will effectively override everything from the first. So sourcing the file from your custom workspace is enough.

Comment by Dirk Thomas on 2013-06-18:
Regarding the fact that the ROS_PACKAGE_PATH does not contain the path: after compiling your workspace you have to source the setup.bash file from the subfolder devel. Than ~/ros/groovy/catkin_ws/devel should be part of tour ROS_PACKAGE_PATH.

Comment by Georg Bartels on 2013-06-18:
@Dirk: Thanks for clarifying that I need to source only one setup.bash-file. Regarding the ROS_PACKAGE_PATH: I just re-did the first catkin tutorial from ros.org (creating workspace). After sourcing devel/setup.bash after catkin_make ~/catkin_ws/devel is not part of the ROS_PACKAGE_PATH for me.

Comment by Georg Bartels on 2013-06-18:
@Dirk: With regards to ROSLISP_PACKAGE_DIRECTORIES, is this environment variable deprecated or can we use it to point to both /opt/ros//share/common-lisp/ros and ~//devel/share/common-lisp/ros?

Comment by William on 2013-06-18:
The ROS_PACKAGE_PATH is set by roslib so if that is not in your underlay or in your workspace it will not be set: https://github.com/ros/ros/blob/groovy-devel/core/roslib/env-hooks/10.ros.sh.em#L33

Comment by Dirk Thomas on 2013-06-18:
My previous comment was incorrect, the RPP only lists the source space - never devel. I don't know how ROSLISP_PACKAGE_DIRECTORIES is used and why at all. I have never used (ros)lisp. We should talk about that offline (via Google hangout/something else) to figure out how roslisp is supposed to work.

Comment by Georg Bartels on 2013-06-18:
@Dirk: Sure. I'll send you message with my gmail-account.


1 Answer 1


Rosanswers logo

Dirk has solved the issue by submitting a patch to roslisp:


Basically, the environment hook of roslisp was broken under groovy. As of roslisp version 1.9.13 the environment variable $ROSLISP_PACKAGE_DIRECTORIES is back and points to all devel/share/common-lisp sub-directories of all catkin workspaces. This makes sure that the roslisp buildsystem called ASDF can find the autogenerated roslisp messages from wet source packages: ASDF recursively crawls all sub-directories of $ROSLISP_PACKAGE_DIRECTORIES and $ROS_PACKAGE_PATH for lisp system definitions, e.g. files with extention *.asd.

Originally posted by Georg Bartels with karma: 157 on 2013-06-25

This answer was ACCEPTED on the original site

Post score: 0


Your Answer

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