Simplify passive mode handling (#30593)
	
		
	
				
					
				
			* simplify passive handling
* makes more sense
old-commit-hash: 5ccff25d88
			
			
				vw-mqb-aeb
			
			
		
							parent
							
								
									1cc4f1a634
								
							
						
					
					
						commit
						4be789d40a
					
				
				 8 changed files with 100 additions and 98 deletions
			
			
		@ -1,88 +1,15 @@ | 
				
			|||||||
#!/usr/bin/bash | 
					#!/usr/bin/bash | 
				
			||||||
 | 
					
 | 
				
			||||||
if [ -z "$BASEDIR" ]; then | 
					# TODO: this can be removed after 0.9.6 release | 
				
			||||||
  BASEDIR="/data/openpilot" | 
					 | 
				
			||||||
fi | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
source "$BASEDIR/launch_env.sh" | 
					# migrate continue.sh and relaunch | 
				
			||||||
 | 
					cat << EOF > /data/continue.sh | 
				
			||||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" | 
					#!/usr/bin/bash | 
				
			||||||
 | 
					 | 
				
			||||||
function agnos_init { | 
					 | 
				
			||||||
  # TODO: move this to agnos | 
					 | 
				
			||||||
  sudo rm -f /data/etc/NetworkManager/system-connections/*.nmmeta | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # set success flag for current boot slot | 
					 | 
				
			||||||
  sudo abctl --set_success | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # Check if AGNOS update is required | 
					 | 
				
			||||||
  if [ $(< /VERSION) != "$AGNOS_VERSION" ]; then | 
					 | 
				
			||||||
    AGNOS_PY="$DIR/system/hardware/tici/agnos.py" | 
					 | 
				
			||||||
    MANIFEST="$DIR/system/hardware/tici/agnos.json" | 
					 | 
				
			||||||
    if $AGNOS_PY --verify $MANIFEST; then | 
					 | 
				
			||||||
      sudo reboot | 
					 | 
				
			||||||
    fi | 
					 | 
				
			||||||
    $DIR/system/hardware/tici/updater $AGNOS_PY $MANIFEST | 
					 | 
				
			||||||
  fi | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function launch { | 
					 | 
				
			||||||
  # Remove orphaned git lock if it exists on boot | 
					 | 
				
			||||||
  [ -f "$DIR/.git/index.lock" ] && rm -f $DIR/.git/index.lock | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # Pull time from panda | 
					 | 
				
			||||||
  $DIR/selfdrive/boardd/set_time.py | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # Check to see if there's a valid overlay-based update available. Conditions | 
					 | 
				
			||||||
  # are as follows: | 
					 | 
				
			||||||
  # | 
					 | 
				
			||||||
  # 1. The BASEDIR init file has to exist, with a newer modtime than anything in | 
					 | 
				
			||||||
  #    the BASEDIR Git repo. This checks for local development work or the user | 
					 | 
				
			||||||
  #    switching branches/forks, which should not be overwritten. | 
					 | 
				
			||||||
  # 2. The FINALIZED consistent file has to exist, indicating there's an update | 
					 | 
				
			||||||
  #    that completed successfully and synced to disk. | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  if [ -f "${BASEDIR}/.overlay_init" ]; then | 
					 | 
				
			||||||
    find ${BASEDIR}/.git -newer ${BASEDIR}/.overlay_init | grep -q '.' 2> /dev/null | 
					 | 
				
			||||||
    if [ $? -eq 0 ]; then | 
					 | 
				
			||||||
      echo "${BASEDIR} has been modified, skipping overlay update installation" | 
					 | 
				
			||||||
    else | 
					 | 
				
			||||||
      if [ -f "${STAGING_ROOT}/finalized/.overlay_consistent" ]; then | 
					 | 
				
			||||||
        if [ ! -d /data/safe_staging/old_openpilot ]; then | 
					 | 
				
			||||||
          echo "Valid overlay update found, installing" | 
					 | 
				
			||||||
          LAUNCHER_LOCATION="${BASH_SOURCE[0]}" | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
          mv $BASEDIR /data/safe_staging/old_openpilot | 
					 | 
				
			||||||
          mv "${STAGING_ROOT}/finalized" $BASEDIR | 
					 | 
				
			||||||
          cd $BASEDIR | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
          echo "Restarting launch script ${LAUNCHER_LOCATION}" | 
					 | 
				
			||||||
          unset AGNOS_VERSION | 
					 | 
				
			||||||
          exec "${LAUNCHER_LOCATION}" | 
					 | 
				
			||||||
        else | 
					 | 
				
			||||||
          echo "openpilot backup found, not updating" | 
					 | 
				
			||||||
          # TODO: restore backup? This means the updater didn't start after swapping | 
					 | 
				
			||||||
        fi | 
					 | 
				
			||||||
      fi | 
					 | 
				
			||||||
    fi | 
					 | 
				
			||||||
  fi | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # handle pythonpath | 
					 | 
				
			||||||
  ln -sfn $(pwd) /data/pythonpath | 
					 | 
				
			||||||
  export PYTHONPATH="$PWD" | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # hardware specific init | 
					 | 
				
			||||||
  agnos_init | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # write tmux scrollback to a file | 
					 | 
				
			||||||
  tmux capture-pane -pq -S-1000 > /tmp/launch_log | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # start manager | 
					export PASSIVE=1 | 
				
			||||||
  cd selfdrive/manager | 
					 | 
				
			||||||
  ./build.py && ./manager.py | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # if broken, keep on screen error | 
					cd /data/openpilot | 
				
			||||||
  while true; do sleep 1; done | 
					exec ./launch_openpilot.sh | 
				
			||||||
} | 
					EOF | 
				
			||||||
 | 
					
 | 
				
			||||||
launch | 
					/data/continue.sh | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,88 @@ | 
				
			|||||||
#!/usr/bin/bash | 
					#!/usr/bin/bash | 
				
			||||||
 | 
					
 | 
				
			||||||
export PASSIVE="0" | 
					if [ -z "$BASEDIR" ]; then | 
				
			||||||
exec ./launch_chffrplus.sh | 
					  BASEDIR="/data/openpilot" | 
				
			||||||
 | 
					fi | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source "$BASEDIR/launch_env.sh" | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function agnos_init { | 
				
			||||||
 | 
					  # TODO: move this to agnos | 
				
			||||||
 | 
					  sudo rm -f /data/etc/NetworkManager/system-connections/*.nmmeta | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # set success flag for current boot slot | 
				
			||||||
 | 
					  sudo abctl --set_success | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # Check if AGNOS update is required | 
				
			||||||
 | 
					  if [ $(< /VERSION) != "$AGNOS_VERSION" ]; then | 
				
			||||||
 | 
					    AGNOS_PY="$DIR/system/hardware/tici/agnos.py" | 
				
			||||||
 | 
					    MANIFEST="$DIR/system/hardware/tici/agnos.json" | 
				
			||||||
 | 
					    if $AGNOS_PY --verify $MANIFEST; then | 
				
			||||||
 | 
					      sudo reboot | 
				
			||||||
 | 
					    fi | 
				
			||||||
 | 
					    $DIR/system/hardware/tici/updater $AGNOS_PY $MANIFEST | 
				
			||||||
 | 
					  fi | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function launch { | 
				
			||||||
 | 
					  # Remove orphaned git lock if it exists on boot | 
				
			||||||
 | 
					  [ -f "$DIR/.git/index.lock" ] && rm -f $DIR/.git/index.lock | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # Pull time from panda | 
				
			||||||
 | 
					  $DIR/selfdrive/boardd/set_time.py | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # Check to see if there's a valid overlay-based update available. Conditions | 
				
			||||||
 | 
					  # are as follows: | 
				
			||||||
 | 
					  # | 
				
			||||||
 | 
					  # 1. The BASEDIR init file has to exist, with a newer modtime than anything in | 
				
			||||||
 | 
					  #    the BASEDIR Git repo. This checks for local development work or the user | 
				
			||||||
 | 
					  #    switching branches/forks, which should not be overwritten. | 
				
			||||||
 | 
					  # 2. The FINALIZED consistent file has to exist, indicating there's an update | 
				
			||||||
 | 
					  #    that completed successfully and synced to disk. | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if [ -f "${BASEDIR}/.overlay_init" ]; then | 
				
			||||||
 | 
					    find ${BASEDIR}/.git -newer ${BASEDIR}/.overlay_init | grep -q '.' 2> /dev/null | 
				
			||||||
 | 
					    if [ $? -eq 0 ]; then | 
				
			||||||
 | 
					      echo "${BASEDIR} has been modified, skipping overlay update installation" | 
				
			||||||
 | 
					    else | 
				
			||||||
 | 
					      if [ -f "${STAGING_ROOT}/finalized/.overlay_consistent" ]; then | 
				
			||||||
 | 
					        if [ ! -d /data/safe_staging/old_openpilot ]; then | 
				
			||||||
 | 
					          echo "Valid overlay update found, installing" | 
				
			||||||
 | 
					          LAUNCHER_LOCATION="${BASH_SOURCE[0]}" | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          mv $BASEDIR /data/safe_staging/old_openpilot | 
				
			||||||
 | 
					          mv "${STAGING_ROOT}/finalized" $BASEDIR | 
				
			||||||
 | 
					          cd $BASEDIR | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          echo "Restarting launch script ${LAUNCHER_LOCATION}" | 
				
			||||||
 | 
					          unset AGNOS_VERSION | 
				
			||||||
 | 
					          exec "${LAUNCHER_LOCATION}" | 
				
			||||||
 | 
					        else | 
				
			||||||
 | 
					          echo "openpilot backup found, not updating" | 
				
			||||||
 | 
					          # TODO: restore backup? This means the updater didn't start after swapping | 
				
			||||||
 | 
					        fi | 
				
			||||||
 | 
					      fi | 
				
			||||||
 | 
					    fi | 
				
			||||||
 | 
					  fi | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # handle pythonpath | 
				
			||||||
 | 
					  ln -sfn $(pwd) /data/pythonpath | 
				
			||||||
 | 
					  export PYTHONPATH="$PWD" | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # hardware specific init | 
				
			||||||
 | 
					  agnos_init | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # write tmux scrollback to a file | 
				
			||||||
 | 
					  tmux capture-pane -pq -S-1000 > /tmp/launch_log | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # start manager | 
				
			||||||
 | 
					  cd selfdrive/manager | 
				
			||||||
 | 
					  ./build.py && ./manager.py | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # if broken, keep on screen error | 
				
			||||||
 | 
					  while true; do sleep 1; done | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					launch | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,6 @@ | 
				
			|||||||
#!/usr/bin/bash | 
					#!/usr/bin/bash | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export PASSIVE=1 | 
				
			||||||
 | 
					
 | 
				
			||||||
cd /data/openpilot | 
					cd /data/openpilot | 
				
			||||||
exec ./launch_chffrplus.sh | 
					exec ./launch_openpilot.sh | 
				
			||||||
 | 
				
			|||||||
					Loading…
					
					
				
		Reference in new issue