upgrade-trigger: flash some images preceding update 42/160742/2 accepted/tizen/4.0/unified/20171121.061712 submit/tizen_4.0/20171120.023417
authorSunmin Lee <sunm.lee@samsung.com>
Thu, 2 Nov 2017 09:32:24 +0000 (18:32 +0900)
committerKwon <k_c.kwon@samsung.com>
Mon, 20 Nov 2017 02:27:52 +0000 (02:27 +0000)
A new update type PRE_UA means that the image
would be flashed by upgrade-trigger.
The upgrade trigger was modified to flash the image
according to update type in config file.

Change-Id: Ic8eb33b408f3479bdbbedaab8bde180dab5781da
Signed-off-by: Sunmin Lee <sunm.lee@samsung.com>
packaging/tota-ua.spec
scripts/wearable/upgrade-trigger-wearable.sh

index ffeb89a..d2e45c8 100755 (executable)
@@ -1,7 +1,7 @@
 Name:          tota-ua
 Summary:       fota update agent
 ExclusiveArch:         %{arm}
-Version:       1.0.1
+Version:       1.1.0
 Release:       0
 Group:         System
 License:       Apache-2.0
index 95dd6c3..4b2e241 100755 (executable)
@@ -4,45 +4,53 @@ FOTA_DIR="$TZ_SYS_GLOBALUSER_DATA/fota/save"
 STATUS_DIR="/opt/data/recovery"
 VERSION_FILE="/opt/etc/version"
 
-flash_image() {
-       echo "Flash new images..."
+flash_pre_image() {
+       echo "Flash images for update..."
        DEVICE="/dev/mmcblk0"
-       RAMDISK_PART=("ramdisk.img" "ramdisk" "1024")
-       RECOVERY_PART=("ramdisk-recovery.img" "ramdisk2" "1024")
-       RECOVERY_KERN=("zImage-recovery" "recovery" "1024")
-
-# Flash ramdisk partition
-       /bin/tar xvfp $1 -C $FOTA_DIR ${RAMDISK_PART[0]}
-       if [ ! -e "$FOTA_DIR/${RAMDISK_PART[0]}" ]; then
-               echo "There is no ${RAMDISK_PART[0]}"
-       else
-               PART_NUM=$(partx -s $DEVICE | grep ${RAMDISK_PART[1]} | awk '{print $1}')
-               echo "Flashing ${RAMDISK_PART[0]}..."
-               dd if="$FOTA_DIR/${RAMDISK_PART[0]}" of="$DEVICE"p"$PART_NUM" bs="${RAMDISK_PART[2]}"
-               rm -f $FOTA_DIR/${RAMDISK_PART[0]}
-       fi
+       CONFIG_FILE="update.cfg"
 
-# Flash recovery partition
-       /bin/tar xvfp $1 -C $FOTA_DIR ${RECOVERY_PART[0]}
-       if [ ! -e "$FOTA_DIR/${RECOVERY_PART[0]}" ]; then
-               echo "There is no ${RECOVERY_PART[0]}"
-       else
-               PART_NUM=$(partx -s $DEVICE | grep ${RECOVERY_PART[1]} | awk '{print $1}')
-               echo "Flashing ${RECOVERY_PART[0]}..."
-               dd if="$FOTA_DIR/${RECOVERY_PART[0]}" of="$DEVICE"p"$PART_NUM" bs="${RECOVERY_PART[2]}"
-               rm -f $FOTA_DIR/${RECOVERY_PART[0]}
+       /bin/tar xvfp $1 -C "$FOTA_DIR" $CONFIG_FILE
+       if [ ! -e "$FOTA_DIR/$CONFIG_FILE" ]; then
+               echo "There is no $CONFIG_FILE"
+               return
        fi
 
-# Flash recovery kernel
-       /bin/tar xvfp $1 -C $FOTA_DIR ${RECOVERY_KERN[0]}
-       if [ ! -e "$FOTA_DIR/${RECOVERY_KERN[0]}" ]; then
-               echo "There is no ${RECOVERY_KERN[0]}"
-       else
-               PART_NUM=$(partx -s $DEVICE | grep ${RECOVERY_KERN[1]} | awk '{print $1}')
-               echo "Flashing ${RECOVERY_KERN[0]}..."
-               dd if="$FOTA_DIR/${RECOVERY_KERN[0]}" of="$DEVICE"p"$PART_NUM" bs="${RECOVERY_KERN[2]}"
-               rm -f $FOTA_DIR/${RECOVERY_KERN[0]}
-       fi
+       while read PART_NAME DELTA_NAME TYPE DEV OFFSET SIZE HASH1 HASH2
+       do
+               if [ "$TYPE" = "PRE_UA" ]; then
+                       /bin/tar xvfp $1 -C $FOTA_DIR $DELTA_NAME
+                       if [ ! -e "$FOTA_DIR/$DELTA_NAME" ]; then
+                               echo "There is no delta for $PART_NAME"
+                               continue
+                       fi
+
+                       EMMC_DEVICE="/dev/mmcblk0"
+                       PART_NAME_L=$(echo $PART_NAME | /bin/tr '[:upper:]' '[:lower:]')
+                       DEV_NUM=$(/sbin/partx -s $EMMC_DEVICE | grep $PART_NAME_L | \
+                                       { read NUM REST; echo $NUM; })
+                       if [ -z "$DEV_NUM" ]; then
+                               DEV_NUM=$(/sbin/blkid -L $PART_NAME_L -o device | \
+                                               sed 's/\/dev\/mmcblk0p//')
+                       fi
+                       if [ -z "$DEV_NUM" ]; then
+                               echo "There is no partition for $PART_NAME"
+                               continue
+                       fi
+                       DEV="${EMMC_DEVICE}p${DEV_NUM}"
+
+                       echo "Flashing $DELTA_NAME..."
+                       dd if="$FOTA_DIR/$DELTA_NAME" of="$DEV" bs=1024
+                       rm -f $FOTA_DIR/$DELTA_NAME
+
+                       # Remove updated partition from cfg
+                       /bin/cat "$FOTA_DIR/$CONFIG_FILE" | /bin/sed /^$PART_NAME/d \
+                               > "$FOTA_DIR/${CONFIG_FILE}_tmp"
+                       /bin/mv "$FOTA_DIR/${CONFIG_FILE}_tmp" "$FOTA_DIR/$CONFIG_FILE"
+
+                       /bin/tar --delete --file=$1 $CONFIG_FILE
+                       /bin/tar rvf $1 -C $FOTA_DIR $CONFIG_FILE
+               fi
+       done < "$FOTA_DIR/$CONFIG_FILE"
 }
 
 write_version_info() {
@@ -70,9 +78,10 @@ if [ $? -ne 0 ]; then
        write_version_info
 fi
 
-# Flash new images
-#  - This operation for Tizen 3.0
-flash_image $1
+# Flash images
+#  - in case of some image was newly included
+#  - in case of some image should be flashed before update
+flash_pre_image $1
 
 # Extract delta.ua
 echo "Extract delta.ua..."