Pack important files at beginning of the archive
[platform/core/system/upgrade-tools.git] / mk_delta / common / bin / mk_delta.sh
index 5e7e71f..a730cf4 100755 (executable)
@@ -84,12 +84,15 @@ fn_set_default_params()
        MK_PART_DELTA=${COMMON_BINDIR}/mk_part_delta.sh
        DELTA_CFG_PATH=./cfg/delta.cfg
        UPDATE_CFG_PATH=./cfg/update.cfg
-       PRE_SCRIPT_PATH=./cfg/pre.sh
+       UPDATE_INFO_FILE=update-info.ini
+       UPDATE_INFO_PATH=./data/${UPDATE_INFO_FILE}
+       SETUP_SCRIPT_PATH=./cfg/setup.sh
        DELTA_UA=./data/delta.ua
        UPDATE_MANAGER=./data/upgrade-trigger.sh
 
        LOG_PATH=./data/Delta.log
-       VERSION_PATH=./data/version.txt
+       BUILD_STRING_FILE=build_string.txt
+       BUILD_STRING_PATH=./data/${BUILD_STRING_FILE}
        # Getting date and minor version
        MONDATE=$(date +%m%d)
        i=1
@@ -239,7 +242,7 @@ fn_extract_from_image()
                return 1;
        fi
 
-       sudo mount -t ext4 -o loop ${IMAGE} ${MNT_PNT}
+       sudo mount -o loop ${IMAGE} ${MNT_PNT}
        if [ "$?" != "0" ]; then
                return 1;
        fi
@@ -310,6 +313,10 @@ do
                                        sudo mv data/${PART_OUT} ${RESULT_DIR}/${part_bin}
                                        sudo mv ${RESULT_DIR}/${part_bin}/${delta_bin} ${DELTA_DIR}
                                fi
+                               if [ "$?" != "0" ]; then
+                                       echo "Warning: No differences - remove record for \"${part_name}\" from the final update.cfg"
+                                       sed -i "/^${part_name}\b/d" "${UPDATE_CFG_PATH}"
+                               fi
                        else
                                sudo rm -rf ${RESULT_DIR}/${part_bin}
                                echo "Error: Abort Delta Generation"
@@ -319,6 +326,11 @@ do
                sudo rm -rf ${RESULT_DIR}/${part_bin}
        done
 
+       if [ ! -s "${UPDATE_CFG_PATH}" ]; then
+               echo "Error: No differences between versions - abort delta generation"
+               exit 2
+       fi
+
        #move update.cfg to delta directory
        if [ -r ${UPDATE_CFG_PATH} ]; then
                sudo cp ${UPDATE_CFG_PATH} ${DELTA_DIR}/update.cfg
@@ -329,12 +341,18 @@ do
                sudo rm ${LOG_PATH}
        fi
 
-       if [ -r ${VERSION_PATH} ]; then
-               sudo cp ${VERSION_PATH} ${DELTA_DIR}/version.txt
-               sudo rm ${VERSION_PATH}
+       if [ -r ${BUILD_STRING_PATH} ]; then
+               sudo cp ${BUILD_STRING_PATH} ${DELTA_DIR}/${BUILD_STRING_FILE}
+               sudo rm ${BUILD_STRING_PATH}
+       fi
+
+       if [ -r ${UPDATE_INFO_PATH} ]; then
+               sudo cp ${UPDATE_INFO_PATH} ${DELTA_DIR}/${UPDATE_INFO_FILE}
+               sudo rm ${UPDATE_INFO_PATH}
        fi
-       if [ -r ${PRE_SCRIPT_PATH} ]; then
-               sudo cp ${PRE_SCRIPT_PATH} ${DELTA_DIR}/pre.sh
+
+       if [ -r ${SETUP_SCRIPT_PATH} ]; then
+               sudo cp ${SETUP_SCRIPT_PATH} ${DELTA_DIR}/setup.sh
        fi
 
        #--- extract files which would be appended to delta.tar ---
@@ -356,12 +374,18 @@ if [ -r ${UPDATE_CFG_PATH} ]; then
 fi
 cd ${DELTA_DIR}
 sudo cp ${COMMON_BINDIR}/unpack.sh ./
-sudo tar --overwrite -cf ../delta.tar *
 
-SIGN_KEY=$1
-SIGN_CERT=$2
-if [ "z${SIGN_KEY}" != "z" ] && [ "z${SIGN_CERT}" != "z" ]; then
-       sudo ${COMMON_BINDIR}/sign_upg.sh ${SIGN_KEY} ${SIGN_CERT} ../delta.tar
+# Ensure essential files are at beginning of archive (metadata, scripts and binaries to perform upgrade)
+touch *.txt *.cfg *.ini *.sh *.ua
+sudo tar --overwrite -cpf ../delta.tar $(ls -1td *)
+
+SIGN_PKCS_FILE=$1
+SIGN_PKCS_PASSWORD=$2
+if [ "z${SIGN_PKCS_FILE}" != "z" ]; then
+       if [ "z${SIGN_PKCS_PASSWORD}" != "z" ]; then
+               SIGNER_OPTIONAL_ARGUMENT="-p ${SIGN_PKCS_PASSWORD}"
+       fi
+       sudo ${COMMON_BINDIR}/sign_img.sh -k ${SIGN_PKCS_FILE} -i ../delta.tar ${SIGNER_OPTIONAL_ARGUMENT}
 fi
 cd -