blob: 835ab889fb61d6eac3ac5154769f741576bd59f1 [file] [log] [blame]
set -eux
if [[ $(dirname "$(dirname "$(realpath "$SYSREPO_REPOSITORY_PATH")")") != "@CMAKE_CURRENT_BINARY_DIR@" ]]; then
echo "\$SYSREPO_REPOSITORY_PATH is not inside the build dir! Aborting. ($SYSREPO_REPOSITORY_PATH)"
exit 1
fi
if [[ -z "$SYSREPO_SHM_PREFIX" ]]; then
echo '$SYSREPO_SHM_PREFIX is empty! Aborting.'
exit 1
fi
BACKEND="$1"
shift
if [[ "$BACKEND" = "netconf" ]]; then
# The `-f` argument is neccessary so that pkill matches the whole command
# line, including stuff set by `exec -a`. Otherwise it matches the name in
# /proc/{pid}/stat and that is usually limited to 15 characters, so
# netopeer2-server appears as netopeer2-serve
NETOPEER_PID="$(pgrep -f "${SYSREPO_SHM_PREFIX}_netopeer2-server")"
pkill -f "${SYSREPO_SHM_PREFIX}_netopeer2-server"
# Wait until netopeer actually exits, because I don't want to remove its repository/shm files while it is still
# running.
#
# One would think, that this is a job for the `wait` command, but that one unfortunately only works for child
# processes of the current shell. The `tail` command does implement this mechanism, so I can use that.
# https://stackoverflow.com/a/41613532
tail --pid="$NETOPEER_PID" -f /dev/null
rm "$NETOPEER_SOCKET"
fi
rm -r "$SYSREPO_REPOSITORY_PATH"
rm "/dev/shm/$SYSREPO_SHM_PREFIX"*