diff --git a/cmake/templates/_setup_util.py.in b/cmake/templates/_setup_util.py.in index e7e57ee35..0d3c86a18 100755 --- a/cmake/templates/_setup_util.py.in +++ b/cmake/templates/_setup_util.py.in @@ -41,13 +41,6 @@ import os import platform import sys -# environment at generation time -CMAKE_PREFIX_PATH = '@CMAKE_PREFIX_PATH_AS_IS@'.split(';') -setup_dir = '@SETUP_DIR@' -if setup_dir and setup_dir not in CMAKE_PREFIX_PATH: - CMAKE_PREFIX_PATH.insert(0, setup_dir) -CMAKE_PREFIX_PATH = os.pathsep.join(CMAKE_PREFIX_PATH) - CATKIN_MARKER_FILE = '.catkin' system = platform.system() @@ -256,6 +249,14 @@ if __name__ == '__main__': print(e, file=sys.stderr) exit(1) + # environment at generation time + CMAKE_PREFIX_PATH = '@CMAKE_PREFIX_PATH_AS_IS@'.split(';') + # prepend current workspace if not already part of CPP + base_path = os.path.dirname(__file__) + if base_path not in CMAKE_PREFIX_PATH: + CMAKE_PREFIX_PATH.insert(0, base_path) + CMAKE_PREFIX_PATH = os.pathsep.join(CMAKE_PREFIX_PATH) + environ = dict(os.environ) lines = [] if not args.extend: diff --git a/cmake/templates/env.sh.in b/cmake/templates/env.sh.in index 5d04650d8..ad259eaa2 100755 --- a/cmake/templates/env.sh.in +++ b/cmake/templates/env.sh.in @@ -5,7 +5,9 @@ if [ $# -eq 0 ] ; then /bin/echo "Usage: env.sh COMMANDS" /bin/echo "Calling env.sh without arguments is not supported anymore. Instead spawn a subshell and source a setup file manually." exit 1 -else - . "@SETUP_DIR@/@SETUP_FILENAME@.sh" - exec "$@" fi + +# source @SETUP_FILENAME@.sh from same directory as this file +CATKIN_SETUP_DIR=$(cd `dirname $0`;pwd) +. "$CATKIN_SETUP_DIR/@SETUP_FILENAME@.sh" +exec "$@" diff --git a/cmake/templates/setup.bash.in b/cmake/templates/setup.bash.in index 078fd13f0..97e9e706b 100644 --- a/cmake/templates/setup.bash.in +++ b/cmake/templates/setup.bash.in @@ -2,4 +2,7 @@ # generated from catkin/cmake/templates/setup.bash.in CATKIN_SHELL=bash -. "@SETUP_DIR@/setup.sh" + +# source setup.sh from same directory as this file +CATKIN_SETUP_DIR=$(cd `dirname ${BASH_SOURCE[0]}`;pwd) +. "$CATKIN_SETUP_DIR/setup.sh" diff --git a/cmake/templates/setup.sh.in b/cmake/templates/setup.sh.in index fa28dfbba..66b91cab9 100644 --- a/cmake/templates/setup.sh.in +++ b/cmake/templates/setup.sh.in @@ -6,7 +6,10 @@ # Supported command line options: # --extend: skips the undoing of changes from a previously sourced setup file -_SETUP_UTIL="@SETUP_DIR@/_setup_util.py" +# since this file is sourced either use the provided CATKIN_SETUP_DIR +# or fall back to the destination set at configure time +: ${CATKIN_SETUP_DIR:=@SETUP_DIR@} +_SETUP_UTIL="$CATKIN_SETUP_DIR/_setup_util.py" if [ ! -f "$_SETUP_UTIL" ]; then echo "Missing Python script: $_SETUP_UTIL" diff --git a/cmake/templates/setup.zsh.in b/cmake/templates/setup.zsh.in index 220d1fbde..5e681e404 100644 --- a/cmake/templates/setup.zsh.in +++ b/cmake/templates/setup.zsh.in @@ -2,6 +2,7 @@ # generated from catkin/cmake/templates/setup.zsh.in CATKIN_SHELL=zsh +CATKIN_SETUP_DIR=$(cd `dirname $0`;pwd) emulate sh # emulate POSIX -. "@SETUP_DIR@/setup.sh" +. "$CATKIN_SETUP_DIR/setup.sh" emulate zsh # back to zsh mode