Skip to content

Instantly share code, notes, and snippets.

@stertingen
Created May 10, 2020 21:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stertingen/ca18e1eb8cdfd53b67dd966be2300f48 to your computer and use it in GitHub Desktop.
Save stertingen/ca18e1eb8cdfd53b67dd966be2300f48 to your computer and use it in GitHub Desktop.
Generate topology order for ROS packages
#!/bin/bash
set -x
for target in ros ros_comm ros_core ros_base robot viz desktop perception simulators desktop_full; do
if ! [ -r $target/topology.txt ]; then
mkdir -p $target
pushd $target
mkdir -p src
rosinstall_generator $target --rosdistro melodic --deps --tar | vcs import src
colcon list -t -n > topology.txt
popd
fi
done
makepreq() {
target=$1/preq.txt
shift
echo > $target
for pre in "$@"; do
cat $pre/topology.txt >> $target
done
}
makepreq ros
makepreq ros_comm ros
makepreq ros_core ros_comm ros
makepreq ros_base ros_core ros_comm ros
makepreq robot ros_base ros_core ros_comm ros
makepreq viz robot ros_base ros_core ros_comm ros
makepreq desktop viz robot ros_base ros_core ros_comm ros
makepreq perception desktop viz robot ros_base ros_core ros_comm ros
makepreq simulators perception desktop viz robot ros_base ros_core ros_comm ros
makepreq desktop_full simulators perception desktop viz robot ros_base ros_core ros_comm ros
removelines() (
awk 'NR==FNR{a[$0];next} !($0 in a)' $2 $1 > $3
)
i=01
for target in ros ros_comm ros_core ros_base robot viz desktop perception simulators desktop_full; do
removelines $target/topology.txt $target/preq.txt $(printf "%02d" $i)_${target}
((i++))
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment