From 61c8170119996033151e6d0356d21977ed6cfaa1 Mon Sep 17 00:00:00 2001 From: Karol Lewandowski Date: Thu, 30 Dec 2021 22:43:27 +0100 Subject: [PATCH] Ensure metadata is generated for both delta_fs and delta_img Change-Id: I910e76a88e2c732d3ea8e55f3ba24f4ccc594702 --- mk_delta/common/bin/mk_part_delta.sh | 93 ++++++++++++++++++++---------------- 1 file changed, 51 insertions(+), 42 deletions(-) diff --git a/mk_delta/common/bin/mk_part_delta.sh b/mk_delta/common/bin/mk_part_delta.sh index d6843c6..1b6b8e9 100755 --- a/mk_delta/common/bin/mk_part_delta.sh +++ b/mk_delta/common/bin/mk_part_delta.sh @@ -18,6 +18,54 @@ fn_print_line() echo "*******************************************************************" } +fn_gen_metadata() +{ + if [ "$PART_NAME" != "rootfs" ]; then + return + fi + + echo "===== Start writing image versions =====" + local TMP_MNT_PNT="TMP_MNT_PNT" + local BUILD_STRING_FILE="build_string.txt" + mkdir -p ${TMP_MNT_PNT} + + tar xvf ${OLD_TAR_DIR}/${OLD_TAR_FILE} ${PART_IMG_ORG} + sudo mount -o loop ${PART_IMG_ORG} ${TMP_MNT_PNT} + local OLD_BUILD_STRING=`cat ${TMP_MNT_PNT}/etc/info.ini | grep "Build=" | sed "s/Build=//" | sed "s/;$//"` + sudo umount ${TMP_MNT_PNT} + rm -rf ${PART_IMG_ORG} + + tar xvf ${NEW_TAR_DIR}/${NEW_TAR_FILE} ${PART_IMG_ORG} + sudo mount -o loop ${PART_IMG_ORG} ${TMP_MNT_PNT} + local NEW_BUILD_STRING=`cat ${TMP_MNT_PNT}/etc/info.ini | grep "Build=" | sed "s/Build=//" | sed "s/;$//"` + local BINOUT="$(LC_ALL=C LANG=C file -b ${TMP_MNT_PNT}/bin/ls)" + sudo umount ${TMP_MNT_PNT} + rm -rf ${PART_IMG_ORG} + + case "${BINOUT}" in + # ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, ... + *ELF*64-bit*x86-64*) ARCHITECTURE=x86-64;; + + # ELF 32-bit LSB shared object, ARM, EABI5 version, dynamically linked, interpreter /lib/ld-linux.so.3, ... + *ELF*32-bit*ARM,*) ARCHITECTURE=arm32;; + + # ELF 64-bit LSB pie executable, ARM aarch64, version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, ... + *ELF*64-bit*ARM*aarch64*) ARCHITECTURE=aarch64;; + esac + + echo "${BUILD_STRING_FILE} : ${OLD_BUILD_STRING}@${NEW_BUILD_STRING}" + echo -n ${OLD_BUILD_STRING}@${NEW_BUILD_STRING} > ${BUILD_STRING_FILE} + + sed -e "s,@SOURCE_VERSION@,${OLD_BUILD_STRING},g" \ + -e "s,@TARGET_VERSION@,${NEW_BUILD_STRING},g" \ + -e "s,@ARCHITECTURE@,${ARCHITECTURE},g" \ + -e "s,@IMAGE_TYPE@,all,g" \ + < "../${UPDATE_INFO_PATH}" > "${UPDATE_INFO_FILE}" + + rm -rf ${TMP_MNT_PNT} + echo "===== Finish writing image versions =====" +} + #------------------------------------------------------------------------------ # Function : # fn_mk_attribute @@ -207,6 +255,8 @@ fn_mk_delta_img() DEBUG_DELTA=debug_${DELTA} #CFG_XML=${PART_NAME}_IMG.xml mkdir ${OUTPUT_DIR}/i + + fn_gen_metadata fn_mk_delta_img_core if [ "$?" != "0" ]; then return 1 @@ -354,47 +404,6 @@ fn_mk_delta_fs() EXCLUDE_FILES="lost+found dev proc tmp var sys csa" TGT_MNT_PNT=${FAKE_ROOT} - echo "===== Start writing image versions =====" - local TMP_MNT_PNT="TMP_MNT_PNT" - local BUILD_STRING_FILE="build_string.txt" - mkdir -p ${TMP_MNT_PNT} - - tar xvf ${OLD_TAR_DIR}/${OLD_TAR_FILE} ${PART_IMG_ORG} - sudo mount -o loop ${PART_IMG_ORG} ${TMP_MNT_PNT} - local OLD_BUILD_STRING=`cat ${TMP_MNT_PNT}/etc/info.ini | grep "Build=" | sed "s/Build=//" | sed "s/;$//"` - sudo umount ${TMP_MNT_PNT} - rm -rf ${PART_IMG_ORG} - - tar xvf ${NEW_TAR_DIR}/${NEW_TAR_FILE} ${PART_IMG_ORG} - sudo mount -o loop ${PART_IMG_ORG} ${TMP_MNT_PNT} - local NEW_BUILD_STRING=`cat ${TMP_MNT_PNT}/etc/info.ini | grep "Build=" | sed "s/Build=//" | sed "s/;$//"` - local BINOUT="$(LC_ALL=C LANG=C file -b ${TMP_MNT_PNT}/bin/ls)" - sudo umount ${TMP_MNT_PNT} - rm -rf ${PART_IMG_ORG} - - case "${BINOUT}" in - # ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, ... - *ELF*64-bit*x86-64*) ARCHITECTURE=x86-64;; - - # ELF 32-bit LSB shared object, ARM, EABI5 version, dynamically linked, interpreter /lib/ld-linux.so.3, ... - *ELF*32-bit*ARM,*) ARCHITECTURE=arm32;; - - # ELF 64-bit LSB pie executable, ARM aarch64, version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, ... - *ELF*64-bit*ARM*aarch64*) ARCHITECTURE=aarch64;; - esac - - echo "${BUILD_STRING_FILE} : ${OLD_BUILD_STRING}@${NEW_BUILD_STRING}" - echo -n ${OLD_BUILD_STRING}@${NEW_BUILD_STRING} > ${BUILD_STRING_FILE} - - sed -e "s,@SOURCE_VERSION@,${OLD_BUILD_STRING},g" \ - -e "s,@TARGET_VERSION@,${NEW_BUILD_STRING},g" \ - -e "s,@ARCHITECTURE@,${ARCHITECTURE},g" \ - -e "s,@IMAGE_TYPE@,all,g" \ - < "../${UPDATE_INFO_PATH}" > "${UPDATE_INFO_FILE}" - - rm -rf ${TMP_MNT_PNT} - echo "===== Finish writing image versions =====" - ;; "ramdisk1" | "ramdisk" ) EXCLUDE_FILES="lost+found dev proc tmp sys" @@ -430,7 +439,7 @@ fn_mk_delta_fs() MNT_PNT_OLD=${BASE_OLD}/${TGT_MNT_PNT} MNT_PNT_NEW=${BASE_NEW}/${TGT_MNT_PNT} - + fn_gen_metadata fn_mk_delta_fs_core if [ "$?" != "0" ]; then return 1 -- 2.7.4