Ensure that files vital for upgrade process are extracted from images even when parti... 33/283633/16
authorAntoni Adaszkiewicz <a.adaszkiewi@samsung.com>
Mon, 31 Oct 2022 12:24:37 +0000 (13:24 +0100)
committerAntoni Adaszkiewicz <a.adaszkiewi@samsung.com>
Thu, 1 Dec 2022 12:55:19 +0000 (13:55 +0100)
where these files are located are not used for delta generation

Change-Id: I1c20c567f8cf5a70412640e8cc95bdbdb7212d7f

mk_delta/common/bin/mk_delta.sh
mk_delta/common/bin/mk_part_delta.sh

index aac874f..b1d0e10 100755 (executable)
@@ -100,11 +100,12 @@ fn_set_default_params()
        BUILD_STRING_PATH=./data/${BUILD_STRING_FILE}
 
        EXTRACTED_FILES_DIR=${STARTING_DIR}"/data"
-       HAL_TARG_NAME=${EXTRACTED_FILES_DIR}"/hal-model-conf.xml"
-       ROOTFS_TARG_NAME=${EXTRACTED_FILES_DIR}"/rootfs-model-config.xml"
-       TIZEN_TARG_NAME=${EXTRACTED_FILES_DIR}"/tizen-build.conf"
-       BINA_TARG_NAME=${EXTRACTED_FILES_DIR}"/upgrade-support"
-       BINB_TARG_NAME=${EXTRACTED_FILES_DIR}"/upgrade-apply"
+
+       HAL_TARG_NAME=${EXTRACTED_FILES_DIR}/"hal-model-conf.xml"
+       ROOTFS_TARG_NAME=${EXTRACTED_FILES_DIR}/"rootfs-model-config.xml"
+       TIZEN_TARG_NAME=${EXTRACTED_FILES_DIR}/"tizen-build.conf"
+       UPGRADE_SUPPORT_DIR="upgrade-support"
+       UPGRADE_APPLY_BIN="upgrade-apply"
        # Getting date and minor version
        MONDATE=$(date +%m%d)
        i=1
@@ -164,7 +165,6 @@ fn_print_update_cfg()
 #
 fn_build_update_info()
 {
-       echo "PWD=${PWD}"
        sudo python3 "${UPDATE_INFO_BUILDER_PATH}" "${HAL_TARG_NAME}" "${ROOTFS_TARG_NAME}" "${TIZEN_TARG_NAME}" ${UPDATE_INFO_PATH}
 
        rm -f  "${HAL_TARG_NAME}" "${ROOTFS_TARG_NAME}" "${TIZEN_TARG_NAME}"
@@ -214,34 +214,85 @@ fn_process_extra_delta()
 fn_get_tar_file_names()
 {
        BIN_TO_FIND=$1
+       TAR_DIR=$2
 
-       cd ${DATA_DIR}/${OLD_TAR_DIR}
-       OLD_TAR_LIST=`ls *.tar *.tar.gz *.tgz *.tar.md5 2>/dev/null`
-       cd ${CUR_DIR}
-
-       cd ${DATA_DIR}/${NEW_TAR_DIR}
-       NEW_TAR_LIST=`ls *.tar *.tar.gz *.tgz *.tar.md5 2>/dev/null`
-       cd ${CUR_DIR}
+       cd "${DATA_DIR}"/${TAR_DIR}
+       TAR_LIST=`ls *.tar *.tar.gz *.tgz *.tar.md5 2>/dev/null`
+       cd "${CUR_DIR}"
 
        #--- find which tar contains the binary ---
-       for tar_file in ${OLD_TAR_LIST}
+       for tar_file in ${TAR_LIST}
        do
-               result=`tar -tvf ${DATA_DIR}/${OLD_TAR_DIR}/${tar_file} | grep " ${BIN_TO_FIND}$"`
+               result=`tar -tvf ${DATA_DIR}/${TAR_DIR}/${tar_file} | grep " ${BIN_TO_FIND}$"`
                if [ "$?" = "0" ]; then
-                       OLD_TAR_FILE=${tar_file}
+                       TAR_FILE_FOUND=${tar_file}
                        break
                fi
        done
+}
 
-       for tar_file in ${NEW_TAR_LIST}
-       do
-               result=`tar -tvf ${DATA_DIR}/${NEW_TAR_DIR}/${tar_file} | grep " ${BIN_TO_FIND}$"`
-               if [ "$?" = "0" ]; then
-                       NEW_TAR_FILE=${tar_file}
-                       break
+#------------------------------------------------------------------------------
+# Function :
+#      fn_extract_files
+#
+# Description :
+#      extract crucial files form images in case there were not exctacted previously
+#
+fn_extract_files_from_partition()
+{
+       IMAGE=$1
+       CUR_DIR=${PWD}
+       MNT_PNT="TMP_MNT"
+       mkdir -p ${MNT_PNT}
+
+       fn_get_tar_file_names "$IMAGE" "${OLD_TAR_DIR}"
+       tar xvf "${DATA_DIR}"/${OLD_TAR_DIR}/"${TAR_FILE_FOUND}" "${IMAGE}"
+       if [ "$?" != "0" ]; then
+               return 1;
+       fi
+
+       sudo mount -o loop "${IMAGE}" ${MNT_PNT}
+       if [ "$?" != "0" ]; then
+               return 1;
+       fi
+
+       if [ "$IMAGE" == "hal.img" ]; then
+               local HAL_MODEL_CONFIG_PATH=${MNT_PNT}"/etc/config/model-config.xml"
+               cp "${HAL_MODEL_CONFIG_PATH}" "$HAL_TARG_NAME"
+
+       elif [ "$IMAGE" == "rootfs.img" ]; then
+               local ROOTFS_MODEL_CONFIG_PATH=${MNT_PNT}"/etc/config/model-config.xml"
+               local TIZEN_BUILD_CONFIG_PATH=${MNT_PNT}"/etc/tizen-build.conf"
+
+               cp "${ROOTFS_MODEL_CONFIG_PATH}" "${ROOTFS_TARG_NAME}"
+               cp "${TIZEN_BUILD_CONFIG_PATH}" "${TIZEN_TARG_NAME}"
+
+               sudo umount ${MNT_PNT}
+               sudo rm -f "${IMAGE}"
+
+               fn_get_tar_file_names "$IMAGE" "${NEW_TAR_DIR}"
+               tar xvf "${DATA_DIR}"/${NEW_TAR_DIR}/"${TAR_FILE_FOUND}" "${IMAGE}"
+               if [ "$?" != "0" ]; then
+                       return 1;
                fi
-       done
 
+               sudo mount -o loop "${IMAGE}" ${MNT_PNT}
+               if [ "$?" != "0" ]; then
+                       return 1;
+               fi
+
+               local UPGRADE_SUPPORT_PATH=${MNT_PNT}"/usr/libexec/"${UPGRADE_SUPPORT_DIR}
+               local UPGRADE_APPLY_PATH=${MNT_PNT}"/usr/bin/"${UPGRADE_APPLY_BIN}
+
+               cp "${UPGRADE_SUPPORT_PATH}"/* .
+               cp "${UPGRADE_APPLY_PATH}" "${UPGRADE_APPLY_BIN}"
+
+               # TODO buildstring?
+       fi
+
+       sudo umount ${MNT_PNT}
+       sudo rm -rf ${MNT_PNT}
+       sudo rm -f "${IMAGE}"
 }
 
 
@@ -251,6 +302,7 @@ fn_get_tar_file_names()
 #==================
 
 STARTING_DIR=${PWD}
+DATA_DIR=${STARTING_DIR}/data
 COMMON_BINDIR=${STARTING_DIR}/../common/bin
 
 fn_set_default_params
@@ -357,10 +409,20 @@ fi
 cd ${DELTA_DIR}
 sudo cp ${COMMON_BINDIR}/unpack.sh ./
 
-# Ensure essential files are at beginning of archive (metadata, scripts and binaries to perform upgrade)
+if [ ! -r "${EXTRACTED_FILES_DIR}"/${UPGRADE_APPLY_BIN} ]; then
+       fn_extract_files_from_partition rootfs.img
+else
+       cp "${EXTRACTED_FILES_DIR}"/${UPGRADE_APPLY_BIN} .
+       cp "${EXTRACTED_FILES_DIR}"/${UPGRADE_SUPPORT_DIR}/* .
+fi
+
+
+if [ ! -r "${HAL_TARG_NAME}" ]; then
+       fn_extract_files_from_partition hal.img
+fi
+
 fn_build_update_info
-cp "${BINB_TARG_NAME}" .
-cp "${BINA_TARG_NAME}"/* .
+# Ensure essential files are at beginning of archive (metadata, scripts and binaries to perform upgrade)
 touch *.txt *.cfg *.ini *.sh *.ua
 sha1sum * > checksum.SHA1
 sudo tar --overwrite -cpf ../delta.tar $(ls -1td *)
index d899c88..39c8d8f 100755 (executable)
@@ -79,13 +79,13 @@ fn_extract_needed_files()
                # TODO names + export
                local ROOTFS_TARG_NAME="rootfs-model-config.xml"
                local TIZEN_TARG_NAME="tizen-build.conf"
-               local BINA_TARG_NAME="upgrade-support"
-               local BINB_TARG_NAME="upgrade-apply"
+               local UPGRADE_SUPPORT="upgrade-support"
+               local UPGRADE_APPLY="upgrade-apply"
 
                local ROOTFS_MODEL_CONFIG_PATH=${MNT_PNT_OLD}"/etc/config/model-config.xml"
                local TIZEN_BUILD_CONFIG_PATH=${MNT_PNT_OLD}"/etc/tizen-build.conf"
-               local BINARY_A_PATH=${MNT_PNT_OLD}"/usr/libexec/"${BINA_TARG_NAME}
-               local BINARY_B_PATH=${MNT_PNT_OLD}"/usr/bin/"${BINB_TARG_NAME}
+               local UPGRADE_SUPPORT_PATH=${MNT_PNT_NEW}"/usr/libexec/"${UPGRADE_SUPPORT}
+               local UPGRADE_APPLY_PATH=${MNT_PNT_NEW}"/usr/bin/"${UPGRADE_APPLY}
 
                # build string building
                echo "===== Start writing image versions ====="
@@ -99,8 +99,8 @@ fn_extract_needed_files()
                # extract files/binaries
                cp "${ROOTFS_MODEL_CONFIG_PATH}" ./${ROOTFS_TARG_NAME}
                cp "${TIZEN_BUILD_CONFIG_PATH}" ./${TIZEN_TARG_NAME}
-               cp -r "${BINARY_A_PATH}" ./${BINA_TARG_NAME}
-               cp "${BINARY_B_PATH}" ./${BINB_TARG_NAME}
+               cp -r "${UPGRADE_SUPPORT_PATH}" ./${UPGRADE_SUPPORT}
+               cp "${UPGRADE_APPLY_PATH}" ./${UPGRADE_APPLY}
 
        fi
 }