f71c9e408e35936812dbe66cce31b08f4411cbb2
[platform/core/system/upgrade-tools.git] / mk_delta / common / bin / mk_part_delta.sh
1 #!/bin/bash
2
3
4 #==================
5 # funtions
6 #==================
7
8 #------------------------------------------------------------------------------
9 # Function :
10 #       fn_mk_attribute
11 #
12
13 fn_print_line()
14 {
15         CHAR=$1
16         NUM=$2
17
18         echo "*******************************************************************"
19 }
20
21 fn_gen_metadata()
22 {
23         if [ "$PART_NAME" != "rootfs" ]; then
24                 return
25         fi
26
27         echo "===== Start writing image versions ====="
28         local TMP_MNT_PNT="TMP_MNT_PNT"
29         local BUILD_STRING_FILE="build_string.txt"
30         mkdir -p ${TMP_MNT_PNT}
31
32         tar xvf ${OLD_TAR_DIR}/${OLD_TAR_FILE} ${PART_IMG_ORG}
33         sudo mount -o loop ${PART_IMG_ORG} ${TMP_MNT_PNT}
34         local OLD_BUILD_STRING=`cat ${TMP_MNT_PNT}/etc/info.ini | grep "Date=" | sed "s/Date=//" | sed "s/;$//"`
35         sudo umount ${TMP_MNT_PNT}
36         rm -rf ${PART_IMG_ORG}
37
38         tar xvf ${NEW_TAR_DIR}/${NEW_TAR_FILE} ${PART_IMG_ORG}
39         sudo mount -o loop ${PART_IMG_ORG} ${TMP_MNT_PNT}
40         local NEW_BUILD_STRING=`cat ${TMP_MNT_PNT}/etc/info.ini | grep "Date=" | sed "s/Date=//" | sed "s/;$//"`
41         local BINOUT="$(LC_ALL=C LANG=C file -b ${TMP_MNT_PNT}/bin/ls)"
42         sudo umount ${TMP_MNT_PNT}
43         rm -rf ${PART_IMG_ORG}
44
45         case "${BINOUT}" in
46                 # ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, ...
47                 *ELF*64-bit*x86-64*) ARCHITECTURE=x86-64;;
48
49                 # ELF 32-bit LSB shared object, ARM, EABI5 version, dynamically linked, interpreter /lib/ld-linux.so.3, ...
50                 *ELF*32-bit*ARM,*) ARCHITECTURE=arm32;;
51
52                 # ELF 64-bit LSB pie executable, ARM aarch64, version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, ...
53                 *ELF*64-bit*ARM*aarch64*) ARCHITECTURE=arm64;;
54         esac
55
56         echo "${BUILD_STRING_FILE} : ${OLD_BUILD_STRING}@${NEW_BUILD_STRING}"
57         echo -n ${OLD_BUILD_STRING}@${NEW_BUILD_STRING} > ${BUILD_STRING_FILE}
58
59         sed     -e "s,@SOURCE_VERSION@,${OLD_BUILD_STRING},g" \
60                 -e "s,@TARGET_VERSION@,${NEW_BUILD_STRING},g" \
61                 -e "s,@ARCHITECTURE@,${ARCHITECTURE},g" \
62                 -e "s,@IMAGE_TYPE@,all,g" \
63                 < "../${UPDATE_INFO_PATH}" > "${UPDATE_INFO_FILE}"
64
65         rm -rf ${TMP_MNT_PNT}
66         echo "===== Finish writing image versions ====="
67 }
68
69 #------------------------------------------------------------------------------
70 # Function :
71 #       fn_mk_attribute
72 #
73 # Params :
74 #       $1 - PART_NAME. to descriminate
75 #       $2 - base directory to search files for old partition
76 #       $3 - base directory to search files for new partition
77 #
78 # Description :
79 #       extract attribute information of files on the given partition
80 #
81
82 fn_mk_attribute()
83 {
84         TARGET=$1
85         BASE_DIR_OLD=$2
86         BASE_DIR_NEW=$3
87         V1_ATTR_FILE=${OUTPUT_DIR}/v1_${TARGET}_attr.txt
88         V1_NAME_FILE=${OUTPUT_DIR}/v1_list.txt
89         V2_ATTR_FILE=${OUTPUT_DIR}/v2_${TARGET}_attr.txt
90         V2_NAME_FILE=${OUTPUT_DIR}/v2_list.txtfg
91         V23_NAME_FILE=v23_${TARGET}_attr.txt
92         V13_NAME_FILE=v13_${TARGET}_attr.txt
93         ATTR_CMD=extended_attr.sh
94
95         echo "Attribute generation for ${TARGET} [START] $(date +%T)"
96
97         sudo find ./${BASE_DIR_OLD} -type f -printf '"%P" Regular 14 %04m:%04U:%04G:' -exec ${COMMON_BINDIR}/${ATTR_CMD} {} \; >  ${V1_ATTR_FILE}
98         sudo find ./${BASE_DIR_OLD} -type l -printf '"%P" SymLink 14 %04m:%04U:%04G:' -exec ${COMMON_BINDIR}/${ATTR_CMD} {} \; >> ${V1_ATTR_FILE}
99         sudo find ./${BASE_DIR_OLD} -type d -printf '"%P" Regular 14 %04m:%04U:%04G:' -exec ${COMMON_BINDIR}/${ATTR_CMD} {} \; >> ${V1_ATTR_FILE}
100
101         sudo find ./${BASE_DIR_NEW} -type f -printf '"%P" Regular 14 %04m:%04U:%04G:' -exec ${COMMON_BINDIR}/${ATTR_CMD} {} \; >  ${V2_ATTR_FILE}
102         sudo find ./${BASE_DIR_NEW} -type l -printf '"%P" SymLink 14 %04m:%04U:%04G:' -exec ${COMMON_BINDIR}/${ATTR_CMD} {} \; >> ${V2_ATTR_FILE}
103         sudo find ./${BASE_DIR_NEW} -type d -printf '"%P" Regular 14 %04m:%04U:%04G:' -exec ${COMMON_BINDIR}/${ATTR_CMD} {} \; >> ${V2_ATTR_FILE}
104
105         ################ Change user and group permission from '0' to '0000' ############
106         sed -i 's/:   0/:0000/g' ${V1_ATTR_FILE}
107         sed -i 's/:   /:000/g' ${V1_ATTR_FILE}
108         sed -i 's/:  /:00/g' ${V1_ATTR_FILE}
109         sed -i 's/: /:0/g' ${V1_ATTR_FILE}
110
111         sed -i 's/:   0/:0000/g' ${V2_ATTR_FILE}
112         sed -i 's/:   /:000/g' ${V2_ATTR_FILE}
113         sed -i 's/:  /:00/g' ${V2_ATTR_FILE}
114         sed -i 's/: /:0/g' ${V2_ATTR_FILE}
115
116         ################ Change ":./old" to "/" ############
117         sed -i "s/:.\/${BASE_DIR_OLD}\//:/" ${V1_ATTR_FILE}
118         sed -i "s/:.\/${BASE_DIR_OLD}/:/" ${V1_ATTR_FILE}
119
120         sed -i "s/:.\/${BASE_DIR_NEW}\//:/" ${V2_ATTR_FILE}
121         sed -i "s/:.\/${BASE_DIR_NEW}/:/" ${V2_ATTR_FILE}
122
123         echo "Attribute generation for ${TARGET} [END] $(date +%T)"
124 }
125
126 #------------------------------------------------------------------------------
127 # Function :
128 #       fn_mk_full_img
129 #
130
131 fn_mk_full_img()
132 {
133         PART_IMG_ORG=${PART_BIN}
134         PART_IMG_OLD=${PART_IMG_ORG}.old
135         PART_IMG_NEW=${PART_IMG_ORG}.new
136
137         #---- untar partition image and rename for old & new ----
138         if [ ! "z${OLD_TAR_FILE}" = "z" ]; then
139                 echo "untar ${OLD_TAR_FILE}"
140                 tar xvf ${OLD_TAR_DIR}/${OLD_TAR_FILE} ${PART_IMG_ORG}
141                 if [ "$?" != "0" ]; then
142                         return 1;
143                 fi
144                 sudo mv ${PART_IMG_ORG} ${PART_IMG_OLD}
145         fi
146
147         echo "untar ${NEW_TAR_FILE}"
148         tar xvf ${NEW_TAR_DIR}/${NEW_TAR_FILE} ${PART_IMG_ORG}
149         if [ "$?" != "0" ]; then
150                 return 1;
151         fi
152         sudo mv ${PART_IMG_ORG} ${PART_IMG_NEW}
153
154         if [ ! "z${OLD_TAR_FILE}" = "z" ]; then
155                 #---- check whether the binaries are same ----
156                 sudo diff ${PART_IMG_OLD} ${PART_IMG_NEW}
157                 if [ "$?" = "0" ]; then
158                         echo "[${PART_NAME}] two binaries are same"
159                         sudo rm -rf ${PART_IMG_OLD}
160                         sudo rm -rf ${PART_IMG_NEW}
161                         return 0
162                 fi
163                 sudo python3 ${COMMON_BINDIR}/CreatePatch.py ${UPDATE_TYPE} ${PART_NAME} ${PART_IMG_OLD} ${PART_IMG_NEW} ${OUTPUT_DIR} ${UPDATE_CFG_PATH}
164                 PythonRet=$?
165                 sudo rm ${PART_IMG_OLD}
166
167                 if [ $PythonRet != "0" ]; then
168                         echo "[${PART_NAME}] Failed to generate DELTA"
169                         exit 1
170                 fi
171         fi
172
173         sudo mv ${PART_IMG_NEW} ${OUTPUT_DIR}/${PART_IMG_ORG}
174         sudo chown ${MY_ID}:${MY_ID} ${OUTPUT_DIR}/${PART_IMG_ORG}
175
176         return 0
177 }
178
179 #------------------------------------------------------------------------------
180 # Function :
181 #       fn_mk_delta_img_core
182 #
183 # Description :
184 #       core routine for delta generation
185 #       Image Update Type
186 #
187
188 fn_mk_delta_img_core()
189 {
190
191         START_TIMESTAMP="generation of ${DELTA} [START] $(date +%T)"
192
193         #---- untar partition image and rename for old & new ----
194         echo "untar ${OLD_TAR_FILE}"
195         tar xvf ${OLD_TAR_DIR}/${OLD_TAR_FILE} ${PART_IMG_ORG}
196         if [ "$?" != "0" ]; then
197                 return 1;
198         fi
199         sudo mv ${PART_IMG_ORG} ${PART_IMG_OLD}
200
201         echo "untar ${NEW_TAR_FILE}"
202         tar xvf ${NEW_TAR_DIR}/${NEW_TAR_FILE} ${PART_IMG_ORG}
203         if [ "$?" != "0" ]; then
204                 return 1;
205         fi
206         sudo mv ${PART_IMG_ORG} ${PART_IMG_NEW}
207
208         #---- check whether the binaries are same ----
209         sudo diff ${PART_IMG_OLD} ${PART_IMG_NEW}
210         if [ "$?" = "0" ]; then
211                 echo "[${PART_NAME}] two binaries are same"
212                 sudo rm -rf ${PART_IMG_OLD}
213                 sudo rm -rf ${PART_IMG_NEW}
214                 return 0
215         fi
216
217         #---- make delta file ----
218         echo "make ${DELTA}"
219         sudo python3 ${COMMON_BINDIR}/CreatePatch.py ${UPDATE_TYPE} ${PART_NAME} ${PART_IMG_OLD} ${PART_IMG_NEW} ${OUTPUT_DIR} ${UPDATE_CFG_PATH}
220         PythonRet=$?
221         #sudo xdelta delta ${PART_IMG_OLD} ${PART_IMG_NEW} ./${OUTPUT_DIR}/${PART_NAME}".delta"
222
223         #---- remove files & directories ----
224         echo "remove temp files/directory & move delta/log to result directory"
225         sudo rm -rf ${PART_IMG_OLD}
226         sudo rm -rf ${PART_IMG_NEW}
227         sudo rm -rf x
228
229         if [ $PythonRet != "0" ]; then
230                 echo "[${PART_NAME}] Failed to generate DELTA"
231                 exit 1
232         fi
233         END_TIMESTAMP="generation of ${DELTA} [END] $(date +%T)"
234         echo "${START_TIMESTAMP}"
235         echo "${END_TIMESTAMP}"
236
237
238         return 0
239 }
240
241 #------------------------------------------------------------------------------
242 # Function :
243 #       fn_mk_delta_img
244 #
245 # Description :
246 #       generate delta file for image type partition
247 #
248
249 fn_mk_delta_img()
250 {
251         PART_IMG_ORG=${PART_BIN}
252         PART_IMG_OLD=${PART_IMG_ORG}.old
253         PART_IMG_NEW=${PART_IMG_ORG}.new
254
255         DELTA=${DELTA_BIN}
256         DEBUG_DELTA=debug_${DELTA}
257         #CFG_XML=${PART_NAME}_IMG.xml
258         mkdir ${OUTPUT_DIR}/i
259
260         fn_gen_metadata
261         fn_mk_delta_img_core
262         if [ "$?" != "0" ]; then
263                 return 1
264         fi
265
266         return 0
267
268 }
269 #------------------------------------------------------------------------------
270 # Function :
271 #       mk_inter_attrib_file
272 #
273 # Description :
274 #       makes a list of attributes for those files which differ between v1 aND V2
275 #manoj:to create intermediate attribute list
276 fn_mk_inter_attrib_file()
277 {
278         V1ref_ATTR_FILE=${OUTPUT_DIR}/v1_${TARGET}_attr.txt
279         V2ref_ATTR_FILE=${OUTPUT_DIR}/v2_${TARGET}_attr.txt
280 }
281
282 #------------------------------------------------------------------------------
283 # Function :
284 #       fn_mk_delta_fs_core
285 #
286 # Description :
287 #       core routine for delta generation
288 #       File System Update Type (DELTA_FS)
289 #
290
291 fn_mk_delta_fs_core()
292 {
293         START_TIMESTAMP="generation of ${DELTA} [START] $(date +%T)"
294         FS=ext4
295
296         if [ "${DELTA}" = "boot.img/" ]; then
297                 FS=vfat
298         fi
299
300         #---- untar partition image and rename for old & new ----
301         echo "untar ${OLD_TAR_FILE}"
302         tar xvf ${OLD_TAR_DIR}/${OLD_TAR_FILE} ${PART_IMG_ORG}
303         if [ "$?" != "0" ]; then
304                 return 1;
305         fi
306         sudo mv ${PART_IMG_ORG} ${PART_IMG_OLD}
307
308         echo "untar ${NEW_TAR_FILE}"
309         tar xvf ${NEW_TAR_DIR}/${NEW_TAR_FILE} ${PART_IMG_ORG}
310         if [ "$?" != "0" ]; then
311                 return 1;
312         fi
313         sudo mv ${PART_IMG_ORG} ${PART_IMG_NEW}
314
315         #---- check whether the binaries are same ----
316         sudo diff ${PART_IMG_OLD} ${PART_IMG_NEW}
317         if [ "$?" = "0" ]; then
318                 echo "[${PART_NAME}] two binaries are same"
319                 sudo rm -rf ${PART_IMG_OLD}
320                 sudo rm -rf ${PART_IMG_NEW}
321                 sudo rm -rf ${OUTPUT_DIR}
322                 return 0
323         fi
324
325         #---- make mount point ----
326         mkdir -p ${MNT_PNT_OLD}
327         mkdir -p ${MNT_PNT_NEW}
328
329         #---- mount partition image to mount point  ----
330         echo "mount ${PART_IMG_OLD} & ${PART_IMG_NEW}"
331         sudo mount -o loop ${PART_IMG_OLD} ${MNT_PNT_OLD}
332         if [ "$?" != "0" ]; then
333                 return 1;
334         fi
335         sudo mount -o loop ${PART_IMG_NEW} ${MNT_PNT_NEW}
336         if [ "$?" != "0" ]; then
337                 return 1;
338         fi
339
340         #---- remove unnecessary files & directories  ----
341         for ff in ${EXCLUDE_FILES}
342         do
343                 sudo rm -rf ${MNT_PNT_OLD}/${ff}
344                 sudo rm -rf ${MNT_PNT_NEW}/${ff}
345         done
346
347         #---- make attribute ----
348         fn_mk_attribute ${PART_NAME} ${BASE_OLD} ${BASE_NEW}
349
350         #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.
351         sudo python3 ${COMMON_BINDIR}/CreatePatch.py ${UPDATE_TYPE} ${PART_NAME} ${BASE_OLD} ${BASE_NEW} ${OUTPUT_DIR} ${UPDATE_CFG_PATH} \
352         --attr_old ${V1_ATTR_FILE} --attr_new ${V2_ATTR_FILE}
353         PythonRet=$?
354
355         #---- unmount partition image ----
356         echo "umount ${MNT_PNT_OLD} & ${MNT_PNT_NEW}"
357         sudo umount ${MNT_PNT_OLD}
358         sudo umount ${MNT_PNT_NEW}
359
360         #---- remove files & directories ----
361         echo "remove temp files/directory & move delta/log to result directory"
362         sudo rm -rf ${PART_IMG_OLD}
363         sudo rm -rf ${PART_IMG_NEW}
364         sudo rm -rf ${BASE_OLD} ${BASE_NEW}
365         sudo rm -rf x
366
367         #---- extra cleanup ----
368         sudo mv ./file_attr_updated_image.txt ${OUTPUT_DIR}/${PART_NAME}_file_attr_updated_image.txt
369
370         if [ $PythonRet != "0" ]; then
371                 echo "[${PART_NAME}] Failed to generate DELTA"
372                 exit 1
373         fi
374         END_TIMESTAMP="generation of ${DELTA} [END] $(date +%T)"
375         echo "${START_TIMESTAMP}"
376         echo "${END_TIMESTAMP}"
377
378         return 0
379 }
380
381 #------------------------------------------------------------------------------
382 # Function :
383 #       Mk_delta_fs
384 #
385 # Description :
386 #       generate delta file for filesystem type partition
387 #
388
389 fn_mk_delta_fs()
390 {
391         PART_IMG_ORG=${PART_BIN}
392         PART_IMG_OLD=${PART_IMG_ORG}.old
393         PART_IMG_NEW=${PART_IMG_ORG}.new
394
395         DELTA=${DELTA_BIN}
396         DEBUG_DELTA=debug_${DELTA}
397         #CFG_XML=${PART_NAME}_FS.xml
398
399         BASE_OLD=${PART_NAME}_OLD
400         BASE_NEW=${PART_NAME}_NEW
401
402         #--- !!! this should be modified according to partition ---
403         case "${PART_NAME}" in
404         "rootfs" )
405                 EXCLUDE_FILES="lost+found dev proc tmp var sys csa"
406                 ;;
407         "ramdisk1" | "ramdisk" )
408                 EXCLUDE_FILES="lost+found dev proc tmp sys"
409                 ;;
410         "ramdisk2" | "ramdisk-recovery" )
411                 EXCLUDE_FILES="lost+found"
412                 ;;
413         "user" )
414                 EXCLUDE_FILES="lost+found"
415                 ;;
416         "system-data" )
417                 EXCLUDE_FILES="lost+found"
418                 ;;
419         "kernel" | "boot" )
420                 EXCLUDE_FILES=""
421                 ;;
422         "hal" )
423                 EXCLUDE_FILES=""
424                 ;;
425
426         * )
427                 echo "${PART_NAME} not supported !!!"
428                 return 1
429                 ;;
430         esac
431
432         MNT_PNT_OLD=${BASE_OLD}/
433         MNT_PNT_NEW=${BASE_NEW}/
434
435         fn_gen_metadata
436         fn_mk_delta_fs_core
437         if [ "$?" != "0" ]; then
438                 return 1
439         fi
440
441         return 0
442 }
443
444 #------------------------------------------------------------------------------
445 # Function :
446 #       fn_mk_flash_img
447 #
448
449 fn_mk_flash_img()
450 {
451         PART_IMG_NEW=${PART_BIN}
452
453         #---- untar partition image and rename for old & new ----
454         echo "untar ${NEW_TAR_FILE}"
455         tar xvf ${NEW_TAR_DIR}/${NEW_TAR_FILE} ${PART_IMG_NEW}
456         if [ "$?" != "0" ]; then
457                 return 1;
458         fi
459
460         sudo mv ${PART_IMG_NEW} ${OUTPUT_DIR}/${PART_BIN}
461         sudo chown ${MY_ID}:${MY_ID} ${OUTPUT_DIR}/${PART_BIN}
462
463         return 0
464 }
465
466
467
468 #------------------------------------------------------------------------------
469 # Function :
470 #       get_tar_file_names
471 #
472 # Description :
473 #       find tar file name (without path) that contains given partition binary
474 #
475
476 fn_get_tar_file_names()
477 {
478         BIN_TO_FIND=$1
479
480         cd ${DATA_DIR}/${OLD_TAR_DIR}
481         OLD_TAR_LIST=`ls *.tar *.tar.gz *.tgz *.tar.md5 2>/dev/null`
482         cd ${CUR_DIR}
483
484         cd ${DATA_DIR}/${NEW_TAR_DIR}
485         NEW_TAR_LIST=`ls *.tar *.tar.gz *.tgz *.tar.md5 2>/dev/null`
486         cd ${CUR_DIR}
487
488         #--- find which tar contains the binary ---
489         for tar_file in ${OLD_TAR_LIST}
490         do
491                 result=`tar -tvf ${DATA_DIR}/${OLD_TAR_DIR}/${tar_file} | grep " ${BIN_TO_FIND}$"`
492                 if [ "$?" = "0" ]; then
493                         OLD_TAR_FILE=${tar_file}
494                         break
495                 fi
496         done
497
498         for tar_file in ${NEW_TAR_LIST}
499         do
500                 result=`tar -tvf ${DATA_DIR}/${NEW_TAR_DIR}/${tar_file} | grep " ${BIN_TO_FIND}$"`
501                 if [ "$?" = "0" ]; then
502                         NEW_TAR_FILE=${tar_file}
503                         break
504                 fi
505         done
506
507 }
508
509 ###############################################################################
510 #==================
511 # Main Start
512 #==================
513
514 fn_print_line - 80
515
516 #--- assign input params to internal variables ---
517 param_num=$#
518 if [ "${param_num}" != "4" ]; then
519         echo "Invalid param num"
520         echo "[Usage] $0 PART_NAME UPDATE_TYPE PART_BIN DELTA_BIN"
521         exit 1
522 fi
523
524 PART_NAME=$1
525 UPDATE_TYPE=$2
526 PART_BIN=$3
527 DELTA_BIN=$4
528
529 #--- set some default variables ---
530 MY_ID=`whoami`
531 CUR_DIR=`pwd`
532 DATA_DIR=./data
533 CFG_DIR=./cfg
534 #XML_DIR=./xml
535 COMMON_BINDIR=${CUR_DIR}/../common/bin
536 UPDATE_CFG_PATH=./cfg/update.cfg
537 UPDATE_INFO_FILE=update-info.ini
538 UPDATE_INFO_PATH=./cfg/${UPDATE_INFO_FILE}.in
539
540 #--- check if the current working directory is the parent directory of bin, data, cfg, xml ---
541 TEST_DIR=${DATA_DIR}
542 if [ ! -d ${TEST_DIR} ]; then
543         echo "Invalid working directory. ${TEST_DIR} does not exist"
544         exit 1
545 fi
546
547 TEST_DIR=${CFG_DIR}
548 if [ ! -d ${TEST_DIR} ]; then
549         echo "Invalid working directory. ${TEST_DIR} does not exist"
550         exit 1
551 fi
552
553 #TEST_DIR=${XML_DIR}
554 #if [ ! -d ${TEST_DIR} ]; then
555 #       echo "Invalid working directory. ${TEST_DIR} does not exist"
556 #       exit 1
557 #fi
558
559 #--- get old/new tar file which includes $PART_BIN ---
560 if [ "z${OLD_TAR_DIR}" = "z" ]; then
561         OLD_TAR_DIR="old_tar"
562 fi
563 if [ "z${NEW_TAR_DIR}" = "z" ]; then
564         NEW_TAR_DIR="new_tar"
565 fi
566 OLD_TAR_FILE=
567 NEW_TAR_FILE=
568
569 fn_get_tar_file_names ${PART_BIN}
570
571 if [ "z${OLD_TAR_FILE}" = "z" ]; then
572         UPDATE_TYPE_S=(${UPDATE_TYPE//:/ })
573         if [ ! "${UPDATE_TYPE_S[0]}" = "FULL_IMAGE" ]; then
574                 echo "[old] tar file does not exist in ${DATA_DIR}/${OLD_TAR_DIR} which contains ${PART_BIN}"
575                 #exit 0, cos this is not an error.
576                 exit 0
577         fi
578 fi
579
580 if [ "z${NEW_TAR_FILE}" = "z" ]; then
581         echo "[new] tar file does not exist in ${DATA_DIR}/${NEW_TAR_DIR} which contains ${PART_BIN}"
582         exit 0
583 fi
584
585 if [ ! "z${OLD_TAR_FILE}" = "z" ]; then
586         echo "[old] ${OLD_TAR_FILE} contains ${PART_BIN}"
587 fi
588 echo "[new] ${NEW_TAR_FILE} contains ${PART_BIN}"
589
590
591 #--- generate delta binary ---
592
593 cd ${DATA_DIR}
594
595 OUTPUT_DIR=${PART_NAME}_OUT
596 if [ ! -d ${OUTPUT_DIR} ]; then
597         if [ -f ${OUTPUT_DIR} ]; then
598                 sudo rm -f ${OUTPUT_DIR}
599         fi
600         mkdir ${OUTPUT_DIR}
601 fi
602
603 UPDATE_TYPE_S=(${UPDATE_TYPE//:/ })
604 if [ "${UPDATE_TYPE_S[0]}" = "FULL_IMAGE" ]; then
605         fn_mk_full_img
606 elif [ "${UPDATE_TYPE_S[0]}" = "DELTA_IMAGE" ]; then
607         fn_mk_delta_img
608 elif [ "${UPDATE_TYPE_S[0]}" = "DELTA_FS" ]; then
609         fn_mk_delta_fs
610 else
611         echo "Invalid update type"
612         exit 1
613 fi
614
615 exit 0