isAmentPackage() { [ -d "$1/share/ament_index" ] } declare -gA _amentPackagesSeen _findAmentPackages() { local pkg="$1" # Deduplicate the packages if [ -z "${_amentPackagesSeen["$pkg"]:-}" ] \ && isAmentPackage "$pkg" \ && [ -n "$(shopt -s nullglob; echo $pkg/share/*/local_setup.sh)" ] then # ROS scripts use unbound variables set +u for setup in "$pkg"/share/*/local_setup.sh; do AMENT_CURRENT_PREFIX=$pkg source "$setup" done set -u fi _amentPackagesSeen["$pkg"]=1 } addEnvHooks "$targetOffset" _findAmentPackages _amentCmakeCorePreConfigureHook() { # Don't create share/ament_index/resource_index/parent_prefix_path resource # that contains references to all dependencies. This file isn't used with Nix # and just bloats the closure. cmakeFlags+=" -DAMENT_CMAKE_ENVIRONMENT_PARENT_PREFIX_PATH_GENERATION:BOOL=OFF" # Point CMake at build platform Python so it can run it at build time cmakeFlags+=" -DPython3_EXECUTABLE:FILEPATH=@python_executable@" } preConfigureHooks+=(_amentCmakeCorePreConfigureHook)