FULL_IMG delta in case of missing in old_tar
authorSunmin Lee <sunm.lee@samsung.com>
Fri, 25 Aug 2017 01:11:37 +0000 (10:11 +0900)
committerSunmin Lee <sunm.lee@samsung.com>
Fri, 25 Aug 2017 08:03:09 +0000 (17:03 +0900)
Until tizen 3.0, ramdisk images had not been supported.
It causes that the upg cannot generate delta of ramdisks
because they are missing.

This patch supports FULL_IMG in case of not in old_tar
just includes full image as raw data which can be used
at client.

Change-Id: I0d89e86dbac363300ac5f7eb4dcd6e849ecd5fa1
Signed-off-by: Sunmin Lee <sunm.lee@samsung.com>
mk_delta/common/bin/mk_delta.sh
mk_delta/common/bin/mk_part_delta.sh
mk_delta/tw1/cfg/default_part.cfg
mk_delta/tw1/cfg/delta.cfg

index d42702b86a666c7f586ab79e0e05cef3901096ff..a19d8942426db50261db106d0b28a0e60167abe2 100755 (executable)
@@ -316,13 +316,20 @@ do
                        fn_process_extra_delta
                else
                        ${MK_PART_DELTA} ${part_name} ${update_type} ${part_bin} ${delta_bin}
-                       if [ "$?" = "0" ]; then
+                       RET=$?
+                       if [ "$RET" = "0" ] || [ "$RET" = "2" ]; then
                                if [ "${update_type}" = "DELTA_FS" ]; then
-                               sudo mv data/${PART_OUT} ${RESULT_DIR}/${part_bin}
-                               sudo mv ${RESULT_DIR}/${part_bin} ${DELTA_DIR}
+                                       sudo mv data/${PART_OUT} ${RESULT_DIR}/${part_bin}
+                                       sudo mv ${RESULT_DIR}/${part_bin} ${DELTA_DIR}
                                else
                                        sudo mv data/${PART_OUT} ${RESULT_DIR}/${part_bin}
-                               sudo mv ${RESULT_DIR}/${part_bin}/${delta_bin} ${DELTA_DIR}
+                                       sudo mv ${RESULT_DIR}/${part_bin}/${delta_bin} ${DELTA_DIR}
+                               fi
+                               if [ "$RET" = "2" ]; then
+                                       echo "Omit ${part_name} from cfg"
+                                       sudo cat ${UPDATE_CFG_PATH} | sed /^${part_name}/d \
+                                               > "${UPDATE_CFG_PATH}_tmp"
+                                       sudo mv "${UPDATE_CFG_PATH}_tmp" ${UPDATE_CFG_PATH}
                                fi
                        else
                                sudo rm -rf ${RESULT_DIR}/${part_bin}
index 56ffcc12ec5bfa9ffa04b8e77eb0b8567b7c9102..a4d4189b2d4f1fe70fcb9d74cc9069f365a4a884 100755 (executable)
@@ -86,12 +86,14 @@ fn_mk_full_img()
        PART_IMG_NEW=${PART_IMG_ORG}.new
 
        #---- untar partition image and rename for old & new ----
-       echo "untar ${OLD_TAR_FILE}"
-       tar xvf ${OLD_TAR_DIR}/${OLD_TAR_FILE} ${PART_IMG_ORG}
-       if [ "$?" != "0" ]; then
-               return 1;
+       if [ "z$1" = "z" ]; then
+               echo "untar ${OLD_TAR_FILE}"
+               tar xvf ${OLD_TAR_DIR}/${OLD_TAR_FILE} ${PART_IMG_ORG}
+               if [ "$?" != "0" ]; then
+                       return 1;
+               fi
+               sudo mv ${PART_IMG_ORG} ${PART_IMG_OLD}
        fi
-       sudo mv ${PART_IMG_ORG} ${PART_IMG_OLD}
 
        echo "untar ${NEW_TAR_FILE}"
        tar xvf ${NEW_TAR_DIR}/${NEW_TAR_FILE} ${PART_IMG_ORG}
@@ -101,22 +103,32 @@ fn_mk_full_img()
        sudo mv ${PART_IMG_ORG} ${PART_IMG_NEW}
 
        #---- check whether the binaries are same ----
-       sudo diff ${PART_IMG_OLD} ${PART_IMG_NEW}
-       if [ "$?" = "0" ]; then
-               echo "[${PART_NAME}] two binaries are same"
-               sudo rm -rf ${PART_IMG_OLD}
-               sudo rm -rf ${PART_IMG_NEW}
-               return 1
+       if [ "z$1" = "z" ]; then
+               sudo diff ${PART_IMG_OLD} ${PART_IMG_NEW}
+               if [ "$?" = "0" ]; then
+                       echo "[${PART_NAME}] two binaries are same"
+                       sudo rm -rf ${PART_IMG_OLD}
+                       sudo rm -rf ${PART_IMG_NEW}
+                       return 1
+               fi
+               sudo python ${COMMON_BINDIR}/CreatePatch.py ${UPDATE_TYPE} ${PART_NAME} ${PART_IMG_OLD} ${PART_IMG_NEW} ${OUTPUT_DIR} ${UPDATE_CFG_PATH}
+               PythonRet=$?
+               sudo rm ${PART_IMG_OLD}
+
+               if [ $PythonRet != "0" ]; then
+                       echo "[${PART_NAME}] Failed to generate DELTA"
+                       exit 1
+               fi
+
        fi
-       sudo python ${COMMON_BINDIR}/CreatePatch.py ${UPDATE_TYPE} ${PART_NAME} ${PART_IMG_OLD} ${PART_IMG_NEW} ${OUTPUT_DIR} ${UPDATE_CFG_PATH}
-       PythonRet=$?
-       sudo rm ${PART_IMG_OLD}
+
        sudo mv ${PART_IMG_NEW} ${OUTPUT_DIR}/${PART_IMG_ORG}
        sudo chown ${MY_ID}:${MY_ID} ${OUTPUT_DIR}/${PART_IMG_ORG}
 
-       if [ $PythonRet != "0" ]; then
-               echo "[${PART_NAME}] Failed to generate DELTA"
-               exit 1
+       if [ ! "z$1" = "z" ]; then
+               # Return 2 informs mk_delta to omit this image
+               # from update.cfg file
+               return 2
        fi
        return 0
 }
@@ -535,10 +547,14 @@ if [ "${PART_NAME}" = "RAMDISK2" ]; then
        fn_extract_delta_ua ${PART_BIN}
 fi
 
+OLD_TAR_MISSING=
 if [ "z${OLD_TAR_FILE}" = "z" ]; then
-       echo "[old] tar file does not exist in ${DATA_DIR}/${OLD_TAR_DIR} which contains ${PART_BIN}"
-       #exit 0, cos this is not an error.
-       exit 0
+       OLD_TAR_MISSING="TRUE"
+       if [ ! "${UPDATE_TYPE}" = "FULL_IMG" ]; then
+               echo "[old] tar file does not exist in ${DATA_DIR}/${OLD_TAR_DIR} which contains ${PART_BIN}"
+               #exit 0, cos this is not an error.
+               exit 0
+       fi
 fi
 
 if [ "z${NEW_TAR_FILE}" = "z" ]; then
@@ -546,7 +562,9 @@ if [ "z${NEW_TAR_FILE}" = "z" ]; then
        exit 0
 fi
 
-echo "[old] ${OLD_TAR_FILE} contains ${PART_BIN}"
+if [ "z${OLD_TAR_MISSING}" = "z" ]; then
+       echo "[old] ${OLD_TAR_FILE} contains ${PART_BIN}"
+fi
 echo "[new] ${NEW_TAR_FILE} contains ${PART_BIN}"
 
 
@@ -563,7 +581,11 @@ if [ ! -d ${OUTPUT_DIR} ]; then
 fi
 
 if [ "${UPDATE_TYPE}" = "FULL_IMG" ]; then
-       fn_mk_full_img
+       fn_mk_full_img $OLD_TAR_MISSING
+       RET=$?
+       if [ "$RET" != "0" ]; then
+               exit $RET
+       fi
 elif [ "${UPDATE_TYPE}" = "DELTA_IMG" ]; then
        fn_mk_delta_img
 elif [ "${UPDATE_TYPE}" = "DELTA_FS" ]; then
index ba3c4a637d0629fd3e3b6c415433b4e87bdea1a4..47d33f5b2b34a862bf199bf0dd4d7c26cbb0bd1c 100755 (executable)
@@ -3,5 +3,5 @@
 
 ROOTFS         rootfs.img/             DELTA_FS                /dev/mmcblk0p13         0
 BOOT           delta.boot              DELTA_IMG               /dev/mmcblk0p6          0
-RAMDISK1       delta.ramdisk1          DELTA_IMG               /dev/mmcblk0p8          0
-RAMDISK2       delta.ramdisk2          EXTRA                   /dev/mmcblk0p4          0
+RAMDISK1       ramdisk.img             FULL_IMG                /dev/mmcblk0p8          0
+RAMDISK2       ramdisk-recovery.img    FULL_IMG                /dev/mmcblk0p4          0
index eab8511bac33b5f053720ce089c14143431240dd..9f1ad5b2ffe13a794e80e5e14c45dfa076c9c626 100755 (executable)
@@ -3,5 +3,5 @@
 
 ROOTFS         rootfs.img                      DELTA_FS
 BOOT           zImage                          DELTA_IMG
-RAMDISK1       ramdisk.img                     DELTA_IMG
-RAMDISK2       ramdisk-recovery.img            EXTRA
+RAMDISK1       ramdisk.img                     FULL_IMG
+RAMDISK2       ramdisk-recovery.img            FULL_IMG