+++ /dev/null
-#!/bin/bash
-
-
-#==================
-# funtions
-#==================
-
-#------------------------------------------------------------------------------
-# Function :
-# fn_read_delta_cfg
-#
-# Description :
-# read configuration file for delta generation.
-# config file format : PART_NAME PART_BIN UPDATE_TYPE (deliminator : TAB)
-#
-
-fn_read_delta_cfg()
-{
- in_file=$1
-
- if [ ! -r ${in_file} ]; then
- echo "file ${in_file} cannot be read"
- return 1
- fi
-
- line_num=0
- while read line
- do
- # skip comment line
- if [ "${line:0:1}" = "#" ]; then
- continue
- fi
-
- # skip empty line
- line_len=${#line}
- if [ "${line_len}" = "0" ]; then
- continue
- fi
-
-
- fields=(${line})
- PART_NAME_delta[${line_num}]=${fields[0]}
- PART_BIN_delta[${line_num}]=${fields[1]}
- UPDATE_TYPE_delta[${line_num}]=${fields[2]}
-
- line_num=$(($line_num + 1))
-
- done < ${in_file}
-
- PART_NUM_delta=${line_num}
-
- return 0
-}
-
-#------------------------------------------------------------------------------
-# Function :
-# fn_read_part_cfg
-#
-# Description :
-# read configuration file for partition information.
-# config file format : PART_NAME DELTA_BIN UPDATE_TYPE BLK_DEV BLK_OFFSET (deliminator : TAB)
-#
-
-fn_read_part_cfg()
-{
- in_file=$1
-
- if [ ! -r ${in_file} ]; then
- echo "file ${in_file} cannot be read"
- return 1
- fi
-
- line_num=0
- while read line
- do
- # skip comment line
- if [ "${line:0:1}" = "#" ]; then
- continue
- fi
-
- # skip empty line
- line_len=${#line}
- if [ "${line_len}" = "0" ]; then
- continue
- fi
-
-
- fields=(${line})
- PART_NAME_part[${line_num}]=${fields[0]}
- DELTA_BIN_part[${line_num}]=${fields[1]}
- UPDATE_TYPE_part[${line_num}]=${fields[2]}
- BLK_DEV_part[${line_num}]=${fields[3]}
- BLK_OFFSET_part[${line_num}]=${fields[4]}
-
- line_num=$(($line_num + 1))
-
- done < ${in_file}
-
- PART_NUM_part=${line_num}
-
- return 0
-}
-
-#------------------------------------------------------------------------------
-# Function :
-# fn_gen_update_cfg
-#
-# Description :
-# generate configuration file to be used during update.
-#
-
-fn_gen_update_cfg()
-{
- out_file=$1
-
- update_idx=0
-
- for ((delta_idx=0;delta_idx<PART_NUM_delta;delta_idx++))
- do
- FOUND=0
- for ((part_idx=0;part_idx<PART_NUM_part;part_idx++))
- do
- if [ "${PART_NAME_part[${part_idx}]}" = "${PART_NAME_delta[${delta_idx}]}" ]; then
- FOUND=1
- break
- fi
- done
-
- if [ "${FOUND}" = "1" ]; then
- #-- PART_NAME, DELTA_BIN, BLK_DEV, BLK_OFFSET are from part.cfg
- PART_NAME[${update_idx}]=${PART_NAME_part[${part_idx}]}
- DELTA_BIN[${update_idx}]=${DELTA_BIN_part[${part_idx}]}
- BLK_DEV[${update_idx}]=${BLK_DEV_part[${part_idx}]}
- BLK_OFFSET[${update_idx}]=${BLK_OFFSET_part[${part_idx}]}
-
- #-- PART_BIN, UPDATE_TYPE are from delta.cfg
- PART_BIN[${update_idx}]=${PART_BIN_delta[${delta_idx}]}
- UPDATE_TYPE[${update_idx}]=${UPDATE_TYPE_delta[${delta_idx}]}
-
- update_idx=$(($update_idx + 1))
- fi
-
- done
-
- PART_NUM=${update_idx}
-
- if [ -f ${out_file} ]; then
- sudo rm -fr ${out_file}
- fi
-
- for ((update_idx=0;update_idx<PART_NUM;update_idx++))
- do
- f1=${PART_NAME[${update_idx}]}
- f2=${DELTA_BIN[${update_idx}]}
- f3=${UPDATE_TYPE[${update_idx}]}
- f4=${BLK_DEV[${update_idx}]}
- f5=${BLK_OFFSET[${update_idx}]}
-
- echo -e "$f1\t\t$f2\t\t$f3\t\t$f4\t\t$f5" >> ${out_file}
- done
-
- return 0
-}
-
-#------------------------------------------------------------------------------
-# Function :
-# fn_set_default_params
-#
-# Description :
-# set default params used globally in this script
-#
-
-fn_set_default_params()
-{
- MY_ID=`whoami`
- MK_PART_DELTA=./bin/mk_part_delta.sh
- DELTA_CFG_PATH=./cfg/delta.cfg
- PART_CFG_PATH=./cfg/default_part.cfg
- UPDATE_CFG_PATH=./cfg/update.cfg
-
- LOG_PATH=./data/Delta.log
- # Getting date and minor version
- MONDATE=$(date +%m%d)
- i=1
- while [ -d "result/${MONDATE}_${i}" ]
- do
- i=$(($i + 1))
- done
- MONDATE="${MONDATE}_${i}"
- echo "MONDATE = ${MONDATE}"
-
- if [ "z${OLD_TAR_DIR}" = "z" ]; then
- export OLD_TAR_DIR="old_tar"
- fi
- if [ "z${NEW_TAR_DIR}" = "z" ]; then
- export NEW_TAR_DIR="new_tar"
- fi
-}
-
-#------------------------------------------------------------------------------
-# Function :
-# fn_swap_binary_files
-#
-# Description :
-# change old & new for making backward delta
-#
-
-fn_swap_binary_files()
-{
- TEMP_TAR_DIR=${OLD_TAR_DIR}
- export OLD_TAR_DIR=${NEW_TAR_DIR}
- export NEW_TAR_DIR=${TEMP_TAR_DIR}
-}
-
-#------------------------------------------------------------------------------
-# Function :
-# fn_print_update_cfg
-
-fn_print_update_cfg()
-{
- for ((update_idx=0;update_idx<PART_NUM;update_idx++))
- do
- echo "------------------------------"
- echo "[PART_NAME] ${PART_NAME[${update_idx}]}"
- echo "[DELTA_BIN] ${DELTA_BIN[${update_idx}]}"
- echo "[BLK_DEV] ${BLK_DEV[${update_idx}]}"
- echo "[BLK_OFFSET] ${BLK_OFFSET[${update_idx}]}"
- echo "[PART_BIN] ${PART_BIN[${update_idx}]}"
- echo "[UPDATE_TYPE] ${UPDATE_TYPE[${update_idx}]}"
-
- done
- echo "------------------------------"
-}
-
-#------------------------------------------------------------------------------
-# Function :
-# fn_process_extra_delta
-#
-
-fn_process_extra_delta()
-{
- RAMDISK2_FULL_IMG=0
- if [ "${part_name}" = "RAMDISK2" ]; then
- if [ "${RAMDISK2_FULL_IMG}" = "0" ]; then
- #--- delta recovery partition ---
- ${MK_PART_DELTA} ${part_name} DELTA_IMG ${part_bin} ${delta_bin}
- if [ "$?" = "0" ]; then
- sudo mv data/${PART_OUT} ${RESULT_DIR}/${part_bin}
- sudo mv ${RESULT_DIR}/${part_bin}/${delta_bin} ${DELTA_DIR}
- fi
- fi
- if [ "${RAMDISK2_FULL_IMG}" = "1" ]; then
- #--- full recovery partition ---
- ${MK_PART_DELTA} ${part_name} FULL_IMG ${part_bin} ${delta_bin}
- if [ "$?" = "0" ]; then
- sudo mv data/${PART_OUT} ${RESULT_DIR}/${part_bin}
- sudo mv ${RESULT_DIR}/${part_bin}/${part_bin} ${DELTA_DIR}
- fi
- fi
- elif [ "${part_name}" = "RECOVERY" ]; then
- #--- recovery kernel ---
- sudo echo "1" > ${DELTA_DIR}/${delta_bin}
- elif [ "${part_name}" = "EXTRA" ]; then
- echo "---"
- fi
-}
-
-###############################################################################
-#==================
-# Main Start
-#==================
-
-fn_set_default_params
-
-fn_read_delta_cfg ${DELTA_CFG_PATH}
-
-fn_read_part_cfg ${PART_CFG_PATH}
-
-fn_gen_update_cfg ${UPDATE_CFG_PATH}
-
-COMMON_BINDIR=${PWD}/../common/bin
-
-
-################### Make delta Forward and Backward #####################
-if [ "z${FW_BW}" = "z" ]; then
- #FW_BW="FW_DELTA BW_DELTA"
- FW_BW="FW_DELTA"
-fi
-
-START_TIMESTAMP="$(date +%T)"
-
-for Make_Delta in $FW_BW
-do
- #--- archive result directory ---
- echo "Make $Make_Delta Delta file"
- RESULT_DIR=result/$MONDATE/$Make_Delta
- DELTA_DIR=${RESULT_DIR}/DELTA
- mkdir -p ${DELTA_DIR}
-
- if [ "$Make_Delta" = "BW_DELTA" ]; then
- fn_swap_binary_files
- fi
-
-
- #--- make delta for each partition ---
- for ((part_num=0;part_num<PART_NUM;part_num++))
- do
- part_name=${PART_NAME[${part_num}]}
- update_type=${UPDATE_TYPE[${part_num}]}
- part_bin=${PART_BIN[${part_num}]}
- delta_bin=${DELTA_BIN[${part_num}]}
-
- PART_OUT=${part_name}_OUT
-
- if [ "${update_type}" = "EXTRA" ]; then
- fn_process_extra_delta
- else
- ${MK_PART_DELTA} ${part_name} ${update_type} ${part_bin} ${delta_bin}
- if [ "$?" = "0" ]; then
- if [ "${update_type}" = "DELTA_FS" ]; then
- 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}
- fi
- else
- sudo rm -rf ${RESULT_DIR}/${part_bin}
- echo "Error: Abort Delta Generation"
- exit 1
- fi
- fi
- sudo rm -rf ${RESULT_DIR}/${part_bin}
- done
-
- #move update.cfg to delta directory
- if [ -r ${UPDATE_CFG_PATH} ]; then
- sudo cp ${UPDATE_CFG_PATH} ${DELTA_DIR}/update.cfg
- sudo rm ${UPDATE_CFG_PATH}
- fi
- if [ -r ${LOG_PATH} ]; then
- sudo cp ${LOG_PATH} ${RESULT_DIR}/Delta.log
- sudo rm ${LOG_PATH}
- fi
-
- #--- archive result directory ---
- cd result/$MONDATE
- echo "tar result directory"
- sudo tar cf ${MONDATE}_${Make_Delta}.tar $Make_Delta
- cd ../..
-
- echo "Making delta binary is End!! ($Make_Delta)"
-done
-
-if [ -r ${UPDATE_CFG_PATH} ]; then
- sudo rm ${UPDATE_CFG_PATH}
-fi
-cd ${DELTA_DIR}
-sudo cp ${COMMON_BINDIR}/unpack.sh ./
-sudo tar --overwrite -cf ../delta.tar *
-cd -
-
-END_TIMESTAMP="$(date +%T)"
-
-echo "OVERALL TIMESTAMP : [START] ${START_TIMESTAMP} ~ [END] ${END_TIMESTAMP}"
-
+++ /dev/null
-#!/bin/bash
-
-
-#==================
-# funtions
-#==================
-
-#------------------------------------------------------------------------------
-# Function :
-# fn_mk_attribute
-#
-
-fn_print_line()
-{
- CHAR=$1
- NUM=$2
-
- echo "*******************************************************************"
-}
-
-#------------------------------------------------------------------------------
-# Function :
-# fn_mk_attribute
-#
-# Params :
-# $1 - PART_NAME. to descriminate
-# $2 - base directory to search files for old partition
-# $3 - base directory to search files for new partition
-#
-# Description :
-# extract attribute information of files on the given partition
-#
-
-fn_mk_attribute()
-{
- TARGET=$1
- BASE_DIR_OLD=$2
- BASE_DIR_NEW=$3
- V1_ATTR_FILE=${OUTPUT_DIR}/v1_${TARGET}_attr.txt
- V1_NAME_FILE=${OUTPUT_DIR}/v1_list.txt
- V2_ATTR_FILE=${OUTPUT_DIR}/v2_${TARGET}_attr.txt
- V2_NAME_FILE=${OUTPUT_DIR}/v2_list.txtfg
- V23_NAME_FILE=v23_${TARGET}_attr.txt
- V13_NAME_FILE=v13_${TARGET}_attr.txt
- ATTR_CMD=extended_attr.sh
-
- echo "Attribute generation for ${TARGET} [START] $(date +%T)"
-
- sudo find ./${BASE_DIR_OLD} -type f -printf '"/%P" Regular 14 %04m:%04U:%04G:' -exec ${COMMON_BINDIR}/${ATTR_CMD} {} \; > ${V1_ATTR_FILE}
- sudo find ./${BASE_DIR_OLD} -type l -printf '"/%P" SymLink 14 %04m:%04U:%04G:' -exec ${COMMON_BINDIR}/${ATTR_CMD} {} \; >> ${V1_ATTR_FILE}
- sudo find ./${BASE_DIR_OLD} -type d -printf '"/%P" Regular 14 %04m:%04U:%04G:' -exec ${COMMON_BINDIR}/${ATTR_CMD} {} \; >> ${V1_ATTR_FILE}
-
- sudo find ./${BASE_DIR_NEW} -type f -printf '"/%P" Regular 14 %04m:%04U:%04G:' -exec ${COMMON_BINDIR}/${ATTR_CMD} {} \; > ${V2_ATTR_FILE}
- sudo find ./${BASE_DIR_NEW} -type l -printf '"/%P" SymLink 14 %04m:%04U:%04G:' -exec ${COMMON_BINDIR}/${ATTR_CMD} {} \; >> ${V2_ATTR_FILE}
- sudo find ./${BASE_DIR_NEW} -type d -printf '"/%P" Regular 14 %04m:%04U:%04G:' -exec ${COMMON_BINDIR}/${ATTR_CMD} {} \; >> ${V2_ATTR_FILE}
-
- ################ Change user and group permission from '0' to '0000' ############
- sed -i 's/: 0/:0000/g' ${V1_ATTR_FILE}
- sed -i 's/: /:000/g' ${V1_ATTR_FILE}
- sed -i 's/: /:00/g' ${V1_ATTR_FILE}
- sed -i 's/: /:0/g' ${V1_ATTR_FILE}
-
- sed -i 's/: 0/:0000/g' ${V2_ATTR_FILE}
- sed -i 's/: /:000/g' ${V2_ATTR_FILE}
- sed -i 's/: /:00/g' ${V2_ATTR_FILE}
- sed -i 's/: /:0/g' ${V2_ATTR_FILE}
-
- ################ Change ":./old" to "/" ############
- sed -i "s/:.\/${BASE_DIR_OLD}\//:\//" ${V1_ATTR_FILE}
- sed -i "s/:.\/${BASE_DIR_OLD}/:\//" ${V1_ATTR_FILE}
- sed -i "s/:.\/${BASE_DIR_NEW}\//:\//" ${V2_ATTR_FILE}
- sed -i "s/:.\/${BASE_DIR_NEW}/:\//" ${V2_ATTR_FILE}
-
- echo "Attribut generation for ${TARGET} [END] $(date +%T)"
-}
-
-#------------------------------------------------------------------------------
-# Function :
-# fn_mk_full_img
-#
-
-fn_mk_full_img()
-{
- PART_IMG_ORG=${PART_BIN}
- PART_IMG_OLD=${PART_IMG_ORG}.old
- 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;
- 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}
- if [ "$?" != "0" ]; then
- return 1;
- fi
- 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
- 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
- fi
- return 0
-}
-
-#------------------------------------------------------------------------------
-# Function :
-# fn_mk_delta_img_core
-#
-# Description :
-# core routine for delta generation
-# Image Update Type
-#
-
-fn_mk_delta_img_core()
-{
-
- START_TIMESTAMP="generation of ${DELTA} [START] $(date +%T)"
-
- #---- 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;
- 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}
- if [ "$?" != "0" ]; then
- return 1;
- fi
- 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
- fi
-
- #---- make delta file ----
- echo "make ${DELTA}"
- sudo python ${COMMON_BINDIR}/CreatePatch.py ${UPDATE_TYPE} ${PART_NAME} ${PART_IMG_OLD} ${PART_IMG_NEW} ${OUTPUT_DIR} ${UPDATE_CFG_PATH}
- PythonRet=$?
- #sudo xdelta delta ${PART_IMG_OLD} ${PART_IMG_NEW} ./${OUTPUT_DIR}/${PART_NAME}".delta"
-
- #---- remove files & directories ----
- echo "remove temp files/directory & move delta/log to result directory"
- sudo rm -rf ${PART_IMG_OLD}
- sudo rm -rf ${PART_IMG_NEW}
- sudo rm -rf x
-
- if [ $PythonRet != "0" ]; then
- echo "[${PART_NAME}] Failed to generate DELTA"
- exit 1
- fi
- END_TIMESTAMP="generation of ${DELTA} [END] $(date +%T)"
- echo "${START_TIMESTAMP}"
- echo "${END_TIMESTAMP}"
-
-
- return 0
-}
-
-#------------------------------------------------------------------------------
-# Function :
-# fn_mk_delta_img
-#
-# Description :
-# generate delta file for image type partition
-#
-
-fn_mk_delta_img()
-{
- PART_IMG_ORG=${PART_BIN}
- PART_IMG_OLD=${PART_IMG_ORG}.old
- PART_IMG_NEW=${PART_IMG_ORG}.new
-
- DELTA=${DELTA_BIN}
- DEBUG_DELTA=debug_${DELTA}
- #CFG_XML=${PART_NAME}_IMG.xml
- mkdir ${OUTPUT_DIR}/i
- fn_mk_delta_img_core
- if [ "$?" != "0" ]; then
- return 1
- fi
-
- return 0
-
-}
-#------------------------------------------------------------------------------
-# Function :
-# mk_inter_attrib_file
-#
-# Description :
-# makes a list of attributes for those files which differ between v1 aND V2
-#manoj:to create intermediate attribute list
-fn_mk_inter_attrib_file()
-{
- V1ref_ATTR_FILE=${OUTPUT_DIR}/v1_${TARGET}_attr.txt
- V2ref_ATTR_FILE=${OUTPUT_DIR}/v2_${TARGET}_attr.txt
-}
-
-#------------------------------------------------------------------------------
-# Function :
-# fn_mk_delta_fs_core
-#
-# Description :
-# core routine for delta generation
-# File System Update Type (DELTA_FS)
-#
-
-fn_mk_delta_fs_core()
-{
- START_TIMESTAMP="generation of ${DELTA} [START] $(date +%T)"
-
- #---- 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;
- 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}
- if [ "$?" != "0" ]; then
- return 1;
- fi
- 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
- fi
-
- #---- make mount point ----
- mkdir -p ${MNT_PNT_OLD}
- mkdir -p ${MNT_PNT_NEW}
-
- #---- mount partition image to mount point ----
- echo "mount ${PART_IMG_OLD} & ${PART_IMG_NEW}"
- sudo mount -t ext4 -o loop ${PART_IMG_OLD} ${MNT_PNT_OLD}
- if [ "$?" != "0" ]; then
- return 1;
- fi
- sudo mount -t ext4 -o loop ${PART_IMG_NEW} ${MNT_PNT_NEW}
- if [ "$?" != "0" ]; then
- return 1;
- fi
-
- #---- remove unnecessary files & directories ----
- for ff in ${EXCLUDE_FILES}
- do
- sudo rm -rf ${MNT_PNT_OLD}/${ff}
- sudo rm -rf ${MNT_PNT_NEW}/${ff}
- done
-
- #---- make attribute ----
- fn_mk_attribute ${PART_NAME} ${BASE_OLD} ${BASE_NEW}
-
- #PART_IMG_ORG parameter should match with DELTA name that is part of default config file. Which will be used to update MAX size file that is present in respective partition.
- sudo python ${COMMON_BINDIR}/CreatePatch.py ${UPDATE_TYPE} ${PART_NAME} ${BASE_OLD} ${BASE_NEW} ${OUTPUT_DIR} ${V1_ATTR_FILE} ${V2_ATTR_FILE} ${UPDATE_CFG_PATH}
- PythonRet=$?
-
- #---- unmount partition image ----
- echo "umount ${MNT_PNT_OLD} & ${MNT_PNT_NEW}"
- sudo umount ${MNT_PNT_OLD}
- sudo umount ${MNT_PNT_NEW}
-
- #---- remove files & directories ----
- echo "remove temp files/directory & move delta/log to result directory"
- sudo rm -rf ${PART_IMG_OLD}
- sudo rm -rf ${PART_IMG_NEW}
- sudo rm -rf ${BASE_OLD} ${BASE_NEW}
- sudo rm -rf x
-
- #---- extra cleanup ----
- sudo mv ./file_attr_updated_image.txt ${OUTPUT_DIR}/${PART_NAME}_file_attr_updated_image.txt
-
- if [ $PythonRet != "0" ]; then
- echo "[${PART_NAME}] Failed to generate DELTA"
- exit 1
- fi
- END_TIMESTAMP="generation of ${DELTA} [END] $(date +%T)"
- echo "${START_TIMESTAMP}"
- echo "${END_TIMESTAMP}"
-
- return 0
-}
-
-#------------------------------------------------------------------------------
-# Function :
-# Mk_delta_fs
-#
-# Description :
-# generate delta file for filesystem type partition
-#
-
-fn_mk_delta_fs()
-{
- PART_IMG_ORG=${PART_BIN}
- PART_IMG_OLD=${PART_IMG_ORG}.old
- PART_IMG_NEW=${PART_IMG_ORG}.new
-
- DELTA=${DELTA_BIN}
- DEBUG_DELTA=debug_${DELTA}
- #CFG_XML=${PART_NAME}_FS.xml
-
- FAKE_ROOT=system
- BASE_OLD=${PART_NAME}_OLD
- BASE_NEW=${PART_NAME}_NEW
-
- #--- !!! this should be modified according to partition ---
- if [ "${PART_NAME}" = "ROOTFS" ]; then
- EXCLUDE_FILES="lost+found dev proc tmp var sys csa"
- TGT_MNT_PNT=${FAKE_ROOT}
- elif [ "${PART_NAME}" = "RAMDISK2" ]; then
- EXCLUDE_FILES="lost+found"
- TGT_MNT_PNT=
- else
- echo "${PART_NAME} not supported !!!"
- return 1
- fi
-
- MNT_PNT_OLD=${BASE_OLD}/${TGT_MNT_PNT}
- MNT_PNT_NEW=${BASE_NEW}/${TGT_MNT_PNT}
-
-
- fn_mk_delta_fs_core
- if [ "$?" != "0" ]; then
- return 1
- fi
-
- return 0
-}
-
-
-#------------------------------------------------------------------------------
-# Function :
-# get_tar_file_names
-#
-# Description :
-# find tar file name (without path) that contains given partition binary
-#
-
-fn_get_tar_file_names()
-{
- BIN_TO_FIND=$1
-
- 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}
-
- #--- find which tar contains the binary ---
- for tar_file in ${OLD_TAR_LIST}
- do
- result=`tar -tvf ${DATA_DIR}/${OLD_TAR_DIR}/${tar_file} | grep " ${BIN_TO_FIND}$"`
- if [ "$?" = "0" ]; then
- OLD_TAR_FILE=${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
- fi
- done
-
-}
-
-
-###############################################################################
-#==================
-# Main Start
-#==================
-
-fn_print_line - 80
-
-#--- assign input params to internal variables ---
-param_num=$#
-if [ "${param_num}" != "4" ]; then
- echo "Invalid param num"
- echo "[Usage] $0 PART_NAME UPDATE_TYPE PART_BIN DELTA_BIN"
- exit 1
-fi
-
-PART_NAME=$1
-UPDATE_TYPE=$2
-PART_BIN=$3
-DELTA_BIN=$4
-
-#--- set some default variables ---
-MY_ID=`whoami`
-CUR_DIR=`pwd`
-DATA_DIR=./data
-CFG_DIR=./cfg
-#XML_DIR=./xml
-COMMON_BINDIR=${CUR_DIR}/../common/bin
-UPDATE_CFG_PATH=./cfg/update.cfg
-
-#--- check if the current working directory is the parent directory of bin, data, cfg, xml ---
-TEST_DIR=${DATA_DIR}
-if [ ! -d ${TEST_DIR} ]; then
- echo "Invalid working directory. ${TEST_DIR} does not exist"
- exit 1
-fi
-
-TEST_DIR=${CFG_DIR}
-if [ ! -d ${TEST_DIR} ]; then
- echo "Invalid working directory. ${TEST_DIR} does not exist"
- exit 1
-fi
-
-#TEST_DIR=${XML_DIR}
-#if [ ! -d ${TEST_DIR} ]; then
-# echo "Invalid working directory. ${TEST_DIR} does not exist"
-# exit 1
-#fi
-
-#--- get old/new tar file which includes $PART_BIN ---
-if [ "z${OLD_TAR_DIR}" = "z" ]; then
- OLD_TAR_DIR="old_tar"
-fi
-if [ "z${NEW_TAR_DIR}" = "z" ]; then
- NEW_TAR_DIR="new_tar"
-fi
-OLD_TAR_FILE=
-NEW_TAR_FILE=
-
-fn_get_tar_file_names ${PART_BIN}
-
-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
-fi
-
-if [ "z${NEW_TAR_FILE}" = "z" ]; then
- echo "[new] tar file does not exist in ${DATA_DIR}/${NEW_TAR_DIR} which contains ${PART_BIN}"
- exit 0
-fi
-
-echo "[old] ${OLD_TAR_FILE} contains ${PART_BIN}"
-echo "[new] ${NEW_TAR_FILE} contains ${PART_BIN}"
-
-
-#--- generate delta binary ---
-
-cd ${DATA_DIR}
-
-OUTPUT_DIR=${PART_NAME}_OUT
-if [ ! -d ${OUTPUT_DIR} ]; then
- if [ -f ${OUTPUT_DIR} ]; then
- sudo rm -f ${OUTPUT_DIR}
- fi
- mkdir ${OUTPUT_DIR}
-fi
-
-if [ "${UPDATE_TYPE}" = "FULL_IMG" ]; then
- fn_mk_full_img
-elif [ "${UPDATE_TYPE}" = "DELTA_IMG" ]; then
- fn_mk_delta_img
-elif [ "${UPDATE_TYPE}" = "DELTA_FS" ]; then
- fn_mk_delta_fs
-else
- echo "Invalid update type"
- exit 1
-fi
-
-exit 0