+++ /dev/null
-#!/bin/bash
-# This script handles non-A/B upgrade, with flashing RO & RW after reboot in 'bootmode=fota'
-set -o errexit
-trap 'echo "Aborting due to errexit on ${0##*/}:$LINENO. Exit code: $?" >&2' ERR
-set -o errtrace -e -o pipefail
-
-PATH=/bin:/usr/bin:/sbin:/usr/sbin
-FOTA_DIR="/opt/usr/data/fota"
-STATUS_DIR="/opt/data/update"
-DOWNLOAD_DELTA=$1
-
-. "$FOTA_DIR"/upgrade-common.inc
-
-SCRIPT_NAME="upgrade-trigger.sh"
-LOG_FILE="/tmp/upgrade-trigger.log"
-
-
-if [ "$#" != "1" ] || [ ! -f "$1" ]; then
- log "[Error] Usage: $0 path_to_delta.tar[.gz]" "$LOG_FILE"
- exit 1
-fi
-
-if tar ztf "$DOWNLOAD_DELTA" 1>/dev/null 2>&1; then
- DELTA_TAR="$FOTA_DIR/delta.tar.gz"
- DELTA_TAR_GZ="TRUE"
-elif tar tf "$DOWNLOAD_DELTA" 1>/dev/null 2>&1; then
- DELTA_TAR="$FOTA_DIR/delta.tar"
-else
- log "[Error] Usage $0 path_to_delta.tar[.gz]" "$LOG_FILE"
- exit 1
-fi
-
-log "[Info] Using <$DELTA_TAR> delta file." "$LOG_FILE"
-
-flash_pre_image() {
- log "[Info] Flash images for update..." "$LOG_FILE"
- CONFIG_FILE="update.cfg"
-
- /bin/tar xvfp "$DELTA_TAR" -C "$FOTA_DIR" "$CONFIG_FILE"
- if [ ! -e "$FOTA_DIR/$CONFIG_FILE" ]; then
- critical_log "[Error] There is no $CONFIG_FILE" "$LOG_FILE"
- return
- fi
-
- while read -r PART_NAME DELTA_NAME TYPE DEV _OFFSET _SIZE _HASH1 _HASH2
- do
- if [ "$TYPE" = "FULL_IMAGE:BEFORE_BOOT_FOTA" ]; then
- if ! /bin/tar tf "$DELTA_TAR" "$DELTA_NAME"; then
- log "[Info] There is no delta for $PART_NAME" "$LOG_FILE"
- continue
- fi
-
- EMMC_DEVICE="/dev/mmcblk0"
- DEV_NUM=$(/sbin/partx -s "$EMMC_DEVICE" | sed "\|$PART_NAME|!d")
- if [ "$DEV_NUM" != "" ]; then
- DEV_NUM="$(echo "$DEV_NUM"| \
- { read -r NUM REST; echo "$NUM"; })"
- fi
- if [ "$DEV_NUM" == "" ]; then
- DEV_NUM=$(/sbin/blkid -L "$PART_NAME" -o device -l | sed "\|$EMMC_DEVICE|!d" | \
- sed 's/\/dev\/mmcblk0p//')
- fi
- if [ "$DEV_NUM" != "" ]; then
- DEV="${EMMC_DEVICE}p${DEV_NUM}"
- fi
-
- log "[Info] Flashing $DELTA_NAME... to $DEV" "$LOG_FILE"
- /bin/tar xOf "$DELTA_TAR" "$DELTA_NAME" > "$DEV"
- fi
- done < "$FOTA_DIR/$CONFIG_FILE"
-}
-
-if [ "$DOWNLOAD_DELTA" -ef "$DELTA_TAR" ]; then
- log "[Info] delta.tar[.gz] is already placed in correct directory." "$LOG_FILE"
-else
- log "[Info] Copy delta.tar[.gz]..." "$LOG_FILE"
- /bin/cp "$DOWNLOAD_DELTA" "$DELTA_TAR"
-fi
-
-# delta.tar.gz has to be uncompressed to .tar beacause ua and libtota does not support .tar.gz
-if [ "$DELTA_TAR_GZ" == "TRUE" ]; then
- gunzip -c "$DOWNLOAD_DELTA" > "$FOTA_DIR/delta.tar"
- rm "$DELTA_TAR"
- DELTA_TAR="$FOTA_DIR/delta.tar"
-fi
-
-sync
-
-# Run setup script if exist
-run_setup_script "$DELTA_TAR"
-
-# Flash images
-# - in case of some new image was included
-# - in case of some image should be flashed before update
-flash_pre_image
-
-# Extract delta.ua
-log "[Info] Extract delta.ua..." "$LOG_FILE"
-unpack_file "$DELTA_TAR" delta.ua
-
-# FOTA: /usr/bin/rw-update-prepare.sh
-
-# Write delta saved path
-log "[Info] Write paths..." "$LOG_FILE"
-echo "$FOTA_DIR" > "$STATUS_DIR/DELTA.PATH"
-dirname "$DOWNLOAD_DELTA" > "$STATUS_DIR/DOWNLOAD.PATH"
-sync
-
-# go to fota mode
-log "[Info] Go TOTA update..." "$LOG_FILE"
-if ! /sbin/reboot fota; then
- critical_log "[Error] Failed to reboot fota" "$LOG_FILE"
- exit 100
-fi
-
-critical_log "RO update: $SCRIPT_NAME success" "$LOG_FILE"