verify_file() {
FILE_NAME="$1"
FILE_PATH="$FOTA_DIR/$FILE_NAME"
- VALID_CHECKSUM=$(awk "/$FILE_NAME/ {print \$1}" "$FOTA_DIR/checksum.SHA1")
+ VALID_CHECKSUM=$(awk "\$2 ~ /^$FILE_NAME\$/ {print \$1}" "$FOTA_DIR/checksum.SHA1")
if [ "$VALID_CHECKSUM" == "" ]; then
echo "[Error] No $FILE_NAME in checksum.SHA1"
return $FALSE
fi
TYPE_S=(${TYPE//:/ })
- # We support only FULL_IMAGE and DELTA_IMAGE
- if [[ ! "${TYPE_S[0]}" =~ ^(FULL_IMAGE|DELTA_IMAGE)$ ]]; then
+ # We support only FULL_IMAGE, DELTA_IMAGE and DELTA_FS
+ if [[ ! "${TYPE_S[0]}" =~ ^(FULL_IMAGE|DELTA_IMAGE|DELTA_FS)$ ]]; then
PARTS_NAME_TO_UPDATE+=( "$PART_NAME:$TYPE" )
continue
fi
--patch-orig "$CURR_PARTITION" \
--dest-sha1 "$NEW_SHA" && UP_RES=$? || UP_RES=$?
;;
+ DELTA_FS)
+ mkdir "$FOTA_DIR/partition_mnt"
+ mount "$NEXT_PARTITION" "$FOTA_DIR/partition_mnt"
+ "$FOTA_DIR/upgrade-apply-deltafs" --archive "$DELTA_TAR" \
+ --dest "$FOTA_DIR/partition_mnt" \
+ --archive-file "${DELTA_NAME}/" && UP_RES=$? || UP_RES=$?
+ umount "$NEXT_PARTITION"
+ rm -rf "$FOTA_DIR/partition_mnt"
+ ;;
esac
retrap
case $UP_RES in
unpack_file "$DELTA_TAR" "$CONFIG_FILE"
unpack_file "$DELTA_TAR" "upgrade-apply"
/bin/chmod +x "$FOTA_DIR/upgrade-apply"
+unpack_file "$DELTA_TAR" "upgrade-apply-deltafs"
+/bin/chmod +x "$FOTA_DIR/upgrade-apply-deltafs"
if ! upgrade_images "$DELTA_TAR"; then
critical_flog "[Error] Unable to upgrade_images"
cleanup
FILE_PATH="$1"
FILE_NAME=$(basename "$FILE_PATH")
- VALID_CHECKSUM=$(awk "/$FILE_NAME/ {print \$1}" "$FOTA_DIR/checksum.SHA1")
+ VALID_CHECKSUM=$(awk "\$2 ~ /^$FILE_NAME\$/ {print \$1}" "$FOTA_DIR/checksum.SHA1")
if [ "$VALID_CHECKSUM" == "" ]; then
echo "[Error] No $FILE_NAME in checksum.SHA1"
device_board_set_upgrade_status -1
if (msg) {
printf("%s\n", msg);
}
- printf("print_usage: upgrade-apply-deltafs --archive delta_path --dest directory --archive-file label.img\n"
+ printf("print_usage: upgrade-apply-deltafs --archive delta_path --dest directory --archive-file label.img/\n"
"delta_path: filepath of delta (allowed file extensions: .tar, .tar.gz, .tgz)\n"
"directory: directory where partition to be upgraded is mounted\n"
"label.img: name of the directory inside of delta that is to be used during upgrade\n"
int set_delta_folder(void)
{
char *pos = strrchr(delta_path, '/');
- if ((pos == NULL) || ((pos - delta_path + 1) == strlen(delta_path))) {
+ if (pos == NULL) {
+ snprintf(delta_folder, MAX_FOLDER_PATH, ".", delta_path); // if no "/" in delta path, assume current directory as delta folder
+ return 0;
+ }
+ if ((pos - delta_path + 1) == strlen(delta_path)) {
print_usage("Invalid delta path");
return -1;
}