#!/usr/bin/env bash set -e DEBUG=false for arg; do case "$arg" in --debug) DEBUG=true shift ;; *) break ;; esac done if $DEBUG; then echo "[DEBUG] Running in debug mode" >&2 fi CUR_VER=$(<"$APPDIR/version.txt") $DEBUG && echo "[DEBUG] PX4_VERSION = $CUR_VER" >&2 # figure out a stable logs directory STATE_HOME="${XDG_STATE_HOME:-$HOME/.local/state}" DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}" ROMFS_DIR="$DATA_HOME/px4/romfs" mkdir -p "$DATA_HOME/px4" "$STATE_HOME/px4" $DEBUG && echo "[DEBUG] STATE_HOME = $STATE_HOME" >&2 $DEBUG && echo "[DEBUG] DATA_HOME = $STATE_HOME" >&2 # Read last unpacked version LAST_VER_FILE="$STATE_HOME/px4/version" LAST_VER="" [ -f "$LAST_VER_FILE" ] && LAST_VER=$(<"$LAST_VER_FILE") # if versions differ, refresh the payload if [ "$CUR_VER" != "$LAST_VER" ]; then $DEBUG && echo "[DEBUG] Version changed ($LAST_VER → $CUR_VER); updating ROMFS..." >&2 rm -fr "$ROMFS_DIR" mkdir -p "$ROMFS_DIR" cp -a "$APPDIR/usr/share/px4/romfs/." "$ROMFS_DIR" echo "$CUR_VER" > "$LAST_VER_FILE" else if $DEBUG; then echo "[DEBUG] Using cached ROMFS version $CUR_VER" >&2 fi fi LOG_DIR="$STATE_HOME/px4/logs" mkdir -p "$LOG_DIR" $DEBUG && echo "[DEBUG] LOG_DIR = $LOG_DIR" >&2 # pick up bundled libs first export LD_LIBRARY_PATH="$APPDIR/usr/lib:$LD_LIBRARY_PATH" export PATH="$ROMFS_DIR/bin:$ROMFS_DIR:$PATH" $DEBUG && echo "[DEBUG] Launching: $APPDIR/usr/bin/px4 -w $ROMFS_DIR $*" >&2 exec "$APPDIR/usr/bin/px4" -w "$ROMFS_DIR" "$@"