8 #------------------------------------------------------------------------------
13 # read configuration file for delta generation.
14 # config file format : PART_NAME PART_BIN UPDATE_TYPE (deliminator : TAB)
21 if [ ! -r ${in_file} ]; then
22 echo "file ${in_file} cannot be read"
30 if [ "${line:0:1}" = "#" ]; then
36 if [ "${line_len}" = "0" ]; then
42 PART_NAME_delta[${line_num}]=${fields[0]}
43 PART_BIN_delta[${line_num}]=${fields[1]}
44 UPDATE_TYPE_delta[${line_num}]=${fields[2]}
46 line_num=$(($line_num + 1))
50 PART_NUM_delta=${line_num}
55 #------------------------------------------------------------------------------
60 # read configuration file for partition information.
61 # config file format : PART_NAME DELTA_BIN UPDATE_TYPE BLK_DEV BLK_OFFSET (deliminator : TAB)
68 if [ ! -r ${in_file} ]; then
69 echo "file ${in_file} cannot be read"
77 if [ "${line:0:1}" = "#" ]; then
83 if [ "${line_len}" = "0" ]; then
89 PART_NAME_part[${line_num}]=${fields[0]}
90 DELTA_BIN_part[${line_num}]=${fields[1]}
91 UPDATE_TYPE_part[${line_num}]=${fields[2]}
92 BLK_DEV_part[${line_num}]=${fields[3]}
93 BLK_OFFSET_part[${line_num}]=${fields[4]}
95 line_num=$(($line_num + 1))
99 PART_NUM_part=${line_num}
104 #------------------------------------------------------------------------------
109 # generate configuration file to be used during update.
118 for ((delta_idx=0;delta_idx<PART_NUM_delta;delta_idx++))
121 for ((part_idx=0;part_idx<PART_NUM_part;part_idx++))
123 if [ "${PART_NAME_part[${part_idx}]}" = "${PART_NAME_delta[${delta_idx}]}" ]; then
129 if [ "${FOUND}" = "1" ]; then
130 #-- PART_NAME, DELTA_BIN, BLK_DEV, BLK_OFFSET are from part.cfg
131 PART_NAME[${update_idx}]=${PART_NAME_part[${part_idx}]}
132 DELTA_BIN[${update_idx}]=${DELTA_BIN_part[${part_idx}]}
133 BLK_DEV[${update_idx}]=${BLK_DEV_part[${part_idx}]}
134 BLK_OFFSET[${update_idx}]=${BLK_OFFSET_part[${part_idx}]}
136 #-- PART_BIN, UPDATE_TYPE are from delta.cfg
137 PART_BIN[${update_idx}]=${PART_BIN_delta[${delta_idx}]}
138 UPDATE_TYPE[${update_idx}]=${UPDATE_TYPE_delta[${delta_idx}]}
140 update_idx=$(($update_idx + 1))
145 PART_NUM=${update_idx}
147 if [ -f ${out_file} ]; then
148 sudo rm -fr ${out_file}
151 for ((update_idx=0;update_idx<PART_NUM;update_idx++))
153 f1=${PART_NAME[${update_idx}]}
154 f2=${DELTA_BIN[${update_idx}]}
155 f3=${UPDATE_TYPE[${update_idx}]}
156 f4=${BLK_DEV[${update_idx}]}
157 f5=${BLK_OFFSET[${update_idx}]}
159 echo -e "$f1\t\t$f2\t\t$f3\t\t$f4\t\t$f5" >> ${out_file}
165 #------------------------------------------------------------------------------
167 # fn_set_default_params
170 # set default params used globally in this script
173 fn_set_default_params()
176 MK_PART_DELTA=${COMMON_BINDIR}/mk_part_delta.sh
177 DELTA_CFG_PATH=./cfg/delta.cfg
178 PART_CFG_PATH=./cfg/default_part.cfg
179 UPDATE_CFG_PATH=./cfg/update.cfg
180 DELTA_UA=./data/delta.ua
182 LOG_PATH=./data/Delta.log
183 # Getting date and minor version
184 MONDATE=$(date +%m%d)
186 while [ -d "result/${MONDATE}_${i}" ]
190 MONDATE="${MONDATE}_${i}"
191 echo "MONDATE = ${MONDATE}"
193 if [ "z${OLD_TAR_DIR}" = "z" ]; then
194 export OLD_TAR_DIR="old_tar"
196 if [ "z${NEW_TAR_DIR}" = "z" ]; then
197 export NEW_TAR_DIR="new_tar"
201 #------------------------------------------------------------------------------
203 # fn_swap_binary_files
206 # change old & new for making backward delta
209 fn_swap_binary_files()
211 TEMP_TAR_DIR=${OLD_TAR_DIR}
212 export OLD_TAR_DIR=${NEW_TAR_DIR}
213 export NEW_TAR_DIR=${TEMP_TAR_DIR}
216 #------------------------------------------------------------------------------
218 # fn_print_update_cfg
220 fn_print_update_cfg()
222 for ((update_idx=0;update_idx<PART_NUM;update_idx++))
224 echo "------------------------------"
225 echo "[PART_NAME] ${PART_NAME[${update_idx}]}"
226 echo "[DELTA_BIN] ${DELTA_BIN[${update_idx}]}"
227 echo "[BLK_DEV] ${BLK_DEV[${update_idx}]}"
228 echo "[BLK_OFFSET] ${BLK_OFFSET[${update_idx}]}"
229 echo "[PART_BIN] ${PART_BIN[${update_idx}]}"
230 echo "[UPDATE_TYPE] ${UPDATE_TYPE[${update_idx}]}"
233 echo "------------------------------"
236 #------------------------------------------------------------------------------
238 # fn_process_extra_delta
241 fn_process_extra_delta()
244 if [ "${part_name}" = "RAMDISK2" ]; then
245 if [ "${RAMDISK2_FULL_IMG}" = "0" ]; then
246 #--- delta recovery partition ---
247 ${MK_PART_DELTA} ${part_name} DELTA_IMG ${part_bin} ${delta_bin}
248 if [ "$?" = "0" ]; then
249 sudo mv data/${PART_OUT} ${RESULT_DIR}/${part_bin}
250 sudo mv ${RESULT_DIR}/${part_bin}/${delta_bin} ${DELTA_DIR}
253 if [ "${RAMDISK2_FULL_IMG}" = "1" ]; then
254 #--- full recovery partition ---
255 ${MK_PART_DELTA} ${part_name} FULL_IMG ${part_bin} ${delta_bin}
256 if [ "$?" = "0" ]; then
257 sudo mv data/${PART_OUT} ${RESULT_DIR}/${part_bin}
258 sudo mv ${RESULT_DIR}/${part_bin}/${part_bin} ${DELTA_DIR}
261 elif [ "${part_name}" = "RECOVERY" ]; then
262 #--- recovery kernel ---
263 sudo echo "1" > ${DELTA_DIR}/${delta_bin}
264 elif [ "${part_name}" = "EXTRA" ]; then
269 ###############################################################################
274 COMMON_BINDIR=${PWD}/../common/bin
276 fn_set_default_params
278 fn_read_delta_cfg ${DELTA_CFG_PATH}
280 fn_read_part_cfg ${PART_CFG_PATH}
282 fn_gen_update_cfg ${UPDATE_CFG_PATH}
284 ################### Make delta Forward and Backward #####################
285 if [ "z${FW_BW}" = "z" ]; then
286 #FW_BW="FW_DELTA BW_DELTA"
290 START_TIMESTAMP="$(date +%T)"
292 for Make_Delta in $FW_BW
294 #--- archive result directory ---
295 echo "Make $Make_Delta Delta file"
296 RESULT_DIR=result/$MONDATE/$Make_Delta
297 DELTA_DIR=${RESULT_DIR}/DELTA
298 mkdir -p ${DELTA_DIR}
300 if [ "$Make_Delta" = "BW_DELTA" ]; then
305 #--- make delta for each partition ---
306 for ((part_num=0;part_num<PART_NUM;part_num++))
308 part_name=${PART_NAME[${part_num}]}
309 update_type=${UPDATE_TYPE[${part_num}]}
310 part_bin=${PART_BIN[${part_num}]}
311 delta_bin=${DELTA_BIN[${part_num}]}
313 PART_OUT=${part_name}_OUT
315 if [ "${update_type}" = "EXTRA" ]; then
316 fn_process_extra_delta
318 ${MK_PART_DELTA} ${part_name} ${update_type} ${part_bin} ${delta_bin}
319 if [ "$?" = "0" ]; then
320 if [ "${update_type}" = "DELTA_FS" ]; then
321 sudo mv data/${PART_OUT} ${RESULT_DIR}/${part_bin}
322 sudo mv ${RESULT_DIR}/${part_bin} ${DELTA_DIR}
324 sudo mv data/${PART_OUT} ${RESULT_DIR}/${part_bin}
325 sudo mv ${RESULT_DIR}/${part_bin}/${delta_bin} ${DELTA_DIR}
328 sudo rm -rf ${RESULT_DIR}/${part_bin}
329 echo "Error: Abort Delta Generation"
333 sudo rm -rf ${RESULT_DIR}/${part_bin}
336 #move update.cfg to delta directory
337 if [ -r ${UPDATE_CFG_PATH} ]; then
338 sudo cp ${UPDATE_CFG_PATH} ${DELTA_DIR}/update.cfg
339 sudo rm ${UPDATE_CFG_PATH}
341 if [ -r ${LOG_PATH} ]; then
342 sudo cp ${LOG_PATH} ${RESULT_DIR}/Delta.log
346 #--- move delta.ua to delta directory ---
347 if [ -r ${DELTA_UA} ]; then
348 sudo cp ${DELTA_UA} ${DELTA_DIR}/delta.ua
352 #--- archive result directory ---
354 echo "tar result directory"
355 sudo tar cf ${MONDATE}_${Make_Delta}.tar $Make_Delta
358 echo "Making delta binary is End!! ($Make_Delta)"
361 if [ -r ${UPDATE_CFG_PATH} ]; then
362 sudo rm ${UPDATE_CFG_PATH}
365 sudo cp ${COMMON_BINDIR}/unpack.sh ./
366 sudo tar --overwrite -cf ../delta.tar *
369 END_TIMESTAMP="$(date +%T)"
371 echo "OVERALL TIMESTAMP : [START] ${START_TIMESTAMP} ~ [END] ${END_TIMESTAMP}"