138 lines
4.2 KiB
Bash
138 lines
4.2 KiB
Bash
|
# generated from colcon_core/shell/template/prefix.sh.em
|
||
|
|
||
|
# This script extends the environment with all packages contained in this
|
||
|
# prefix path.
|
||
|
|
||
|
# since a plain shell script can't determine its own path when being sourced
|
||
|
# either use the provided COLCON_CURRENT_PREFIX
|
||
|
# or fall back to the build time prefix (if it exists)
|
||
|
_colcon_prefix_sh_COLCON_CURRENT_PREFIX="/home/caixiang/ros2_ws2/install"
|
||
|
if [ -z "$COLCON_CURRENT_PREFIX" ]; then
|
||
|
if [ ! -d "$_colcon_prefix_sh_COLCON_CURRENT_PREFIX" ]; then
|
||
|
echo "The build time path \"$_colcon_prefix_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2
|
||
|
unset _colcon_prefix_sh_COLCON_CURRENT_PREFIX
|
||
|
return 1
|
||
|
fi
|
||
|
else
|
||
|
_colcon_prefix_sh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX"
|
||
|
fi
|
||
|
|
||
|
# function to prepend a value to a variable
|
||
|
# which uses colons as separators
|
||
|
# duplicates as well as trailing separators are avoided
|
||
|
# first argument: the name of the result variable
|
||
|
# second argument: the value to be prepended
|
||
|
_colcon_prefix_sh_prepend_unique_value() {
|
||
|
# arguments
|
||
|
_listname="$1"
|
||
|
_value="$2"
|
||
|
|
||
|
# get values from variable
|
||
|
eval _values=\"\$$_listname\"
|
||
|
# backup the field separator
|
||
|
_colcon_prefix_sh_prepend_unique_value_IFS="$IFS"
|
||
|
IFS=":"
|
||
|
# start with the new value
|
||
|
_all_values="$_value"
|
||
|
_contained_value=""
|
||
|
# iterate over existing values in the variable
|
||
|
for _item in $_values; do
|
||
|
# ignore empty strings
|
||
|
if [ -z "$_item" ]; then
|
||
|
continue
|
||
|
fi
|
||
|
# ignore duplicates of _value
|
||
|
if [ "$_item" = "$_value" ]; then
|
||
|
_contained_value=1
|
||
|
continue
|
||
|
fi
|
||
|
# keep non-duplicate values
|
||
|
_all_values="$_all_values:$_item"
|
||
|
done
|
||
|
unset _item
|
||
|
if [ -z "$_contained_value" ]; then
|
||
|
if [ -n "$COLCON_TRACE" ]; then
|
||
|
if [ "$_all_values" = "$_value" ]; then
|
||
|
echo "export $_listname=$_value"
|
||
|
else
|
||
|
echo "export $_listname=$_value:\$$_listname"
|
||
|
fi
|
||
|
fi
|
||
|
fi
|
||
|
unset _contained_value
|
||
|
# restore the field separator
|
||
|
IFS="$_colcon_prefix_sh_prepend_unique_value_IFS"
|
||
|
unset _colcon_prefix_sh_prepend_unique_value_IFS
|
||
|
# export the updated variable
|
||
|
eval export $_listname=\"$_all_values\"
|
||
|
unset _all_values
|
||
|
unset _values
|
||
|
|
||
|
unset _value
|
||
|
unset _listname
|
||
|
}
|
||
|
|
||
|
# add this prefix to the COLCON_PREFIX_PATH
|
||
|
_colcon_prefix_sh_prepend_unique_value COLCON_PREFIX_PATH "$_colcon_prefix_sh_COLCON_CURRENT_PREFIX"
|
||
|
unset _colcon_prefix_sh_prepend_unique_value
|
||
|
|
||
|
# check environment variable for custom Python executable
|
||
|
if [ -n "$COLCON_PYTHON_EXECUTABLE" ]; then
|
||
|
if [ ! -f "$COLCON_PYTHON_EXECUTABLE" ]; then
|
||
|
echo "error: COLCON_PYTHON_EXECUTABLE '$COLCON_PYTHON_EXECUTABLE' doesn't exist"
|
||
|
return 1
|
||
|
fi
|
||
|
_colcon_python_executable="$COLCON_PYTHON_EXECUTABLE"
|
||
|
else
|
||
|
# try the Python executable known at configure time
|
||
|
_colcon_python_executable="/usr/bin/python3"
|
||
|
# if it doesn't exist try a fall back
|
||
|
if [ ! -f "$_colcon_python_executable" ]; then
|
||
|
if ! /usr/bin/env python3 --version > /dev/null 2> /dev/null; then
|
||
|
echo "error: unable to find python3 executable"
|
||
|
return 1
|
||
|
fi
|
||
|
_colcon_python_executable=`/usr/bin/env python3 -c "import sys; print(sys.executable)"`
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
# function to source another script with conditional trace output
|
||
|
# first argument: the path of the script
|
||
|
_colcon_prefix_sh_source_script() {
|
||
|
if [ -f "$1" ]; then
|
||
|
if [ -n "$COLCON_TRACE" ]; then
|
||
|
echo "# . \"$1\""
|
||
|
fi
|
||
|
. "$1"
|
||
|
else
|
||
|
echo "not found: \"$1\"" 1>&2
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
# get all commands in topological order
|
||
|
_colcon_ordered_commands="$($_colcon_python_executable "$_colcon_prefix_sh_COLCON_CURRENT_PREFIX/_local_setup_util_sh.py" sh)"
|
||
|
unset _colcon_python_executable
|
||
|
if [ -n "$COLCON_TRACE" ]; then
|
||
|
echo "_colcon_prefix_sh_source_script() {
|
||
|
if [ -f \"\$1\" ]; then
|
||
|
if [ -n \"\$COLCON_TRACE\" ]; then
|
||
|
echo \"# . \\\"\$1\\\"\"
|
||
|
fi
|
||
|
. \"\$1\"
|
||
|
else
|
||
|
echo \"not found: \\\"\$1\\\"\" 1>&2
|
||
|
fi
|
||
|
}"
|
||
|
echo "# Execute generated script:"
|
||
|
echo "# <<<"
|
||
|
echo "${_colcon_ordered_commands}"
|
||
|
echo "# >>>"
|
||
|
echo "unset _colcon_prefix_sh_source_script"
|
||
|
fi
|
||
|
eval "${_colcon_ordered_commands}"
|
||
|
unset _colcon_ordered_commands
|
||
|
|
||
|
unset _colcon_prefix_sh_source_script
|
||
|
|
||
|
unset _colcon_prefix_sh_COLCON_CURRENT_PREFIX
|