From ccf4d427aa04dfa18d4ca3e914de0f1e2d7eff7a Mon Sep 17 00:00:00 2001 From: SnickerSun Date: Sat, 27 Apr 2024 19:21:09 +0800 Subject: [PATCH] =?utf8?q?1=E3=80=81=E6=9B=B4=E6=96=B0ota=E8=84=9A?= =?utf8?q?=E6=9C=AC=EF=BC=8C=E6=B7=BB=E5=8A=A0=E9=A2=9D=E5=A4=96=E6=89=8B?= =?utf8?q?=E5=8A=A8=E6=B7=BB=E5=8A=A0=E5=92=8C=E5=88=A0=E9=99=A4=E7=9A=84?= =?utf8?q?=E8=B5=84=E6=BA=90=E9=85=8D=E7=BD=AE=E6=96=B9=E6=A1=88=E3=80=82?= =?utf8?q?=E6=B5=8B=E8=AF=95=E9=A2=97=E6=AD=A3=E5=B8=B8=E6=B7=BB=E5=8A=A0?= =?utf8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=EF=BC=8C=E4=BD=86=E5=B8=A6?= =?utf8?q?=E7=A9=BA=E6=A0=BC=E7=9A=84=E6=96=87=E4=BB=B6=E4=BB=8D=E7=84=B6?= =?utf8?q?=E6=97=A0=E6=B3=95=E5=88=A0=E9=99=A4=E3=80=82=202=E3=80=81?= =?utf8?q?=E4=BC=98=E5=8C=96=E6=89=8B=E8=A1=A8ota=E6=89=A7=E8=A1=8C?= =?utf8?q?=E6=B5=81=E7=A8=8B=EF=BC=8Cota=E6=9B=B4=E6=96=B0=E7=AC=AC?= =?utf8?q?=E4=B8=80=E6=AC=A1=E9=87=8D=E5=90=AF=E5=B1=8F=E8=94=BD=E6=8E=89?= =?utf8?q?=E7=B3=BB=E7=BB=9FUI=EF=BC=8C=E5=8F=AF=E7=9B=B4=E6=8E=A5?= =?utf8?q?=E8=BF=9B=E5=85=A5=E7=AC=AC=E4=BA=8C=E6=AC=A1=E9=87=8D=E5=90=AF?= =?utf8?q?=E7=9A=84recovery=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../wearable/ohos_startup/ohosfwk_startup.c | 6 ++++ code/sdk/build/script/make_upg_res_pack.py | 31 +++++++++++++++++-- gen_fs_otapkg.sh | 22 ++++++------- mkota.sh | 13 +++++++- 4 files changed, 58 insertions(+), 14 deletions(-) diff --git a/code/sdk/application/wearable/ohos_startup/ohosfwk_startup.c b/code/sdk/application/wearable/ohos_startup/ohosfwk_startup.c index 6ccddede2..084c52964 100755 --- a/code/sdk/application/wearable/ohos_startup/ohosfwk_startup.c +++ b/code/sdk/application/wearable/ohos_startup/ohosfwk_startup.c @@ -83,5 +83,11 @@ void ohos_startup() // display_api->turn_on_screen(); display_api->set_screen_set_keepon_timeout(5000); #endif + + +#if defined(CONFIG_OTA_UPDATE_SUPPORT) && defined(ENABLE_UIKIT) + //如果在升级状态,则不进入系统 + if (upg_check_upgrade_need_upgrade()) return ; +#endif OHOS_SystemInit(); } diff --git a/code/sdk/build/script/make_upg_res_pack.py b/code/sdk/build/script/make_upg_res_pack.py index ad4d698e6..f693d232b 100644 --- a/code/sdk/build/script/make_upg_res_pack.py +++ b/code/sdk/build/script/make_upg_res_pack.py @@ -73,15 +73,39 @@ def res_pack(res_dir, index_path=DEFAULT_INDEX_FILE, data_path=DEFAULT_DATA_FILE index_file.write(b"\x00" * ctypes.sizeof(UpgResourceIndex)) for name in deleted_files: + # 以双引号括起来的文件 "/user/res/message/Line 1.bin" ,取消双引号的方案 Start + if name.startswith("\""): + name = name.replace("\"","",1) + name = name.replace("\" ","",1) + name = name.replace("\"","",1) if not name.startswith("/"): name = "/" + name - print(f"Delete file '{name}'") + name = name.replace("\r","",1) + name = name.replace("\n","",1) + # 以双引号括起来的文件 "/user/res/message/Line 1.bin" ,取消双引号的方案 End + + # 以双引号括起来的文件 "/user/res/message/Line 1.bin" ,保留双引号的方案 Start + # if name.startswith("\""): + # name = name.replace("\"","",1) + # name = name.replace("\" ","\"",1) + # if not name.startswith("/"): + # name = "/" + name + # name = "\"" + name + # else: + # if not name.startswith("/"): + # name = "/" + name + # name = name.replace("\r","",1) + # name = name.replace("\n","",1) + # 以双引号括起来的文件 "/user/res/message/Line 1.bin" ,保留双引号的方案 End + + # print(f"Delete file '{name}'") node = UpgResourceNode() node.file_path = name.encode() node.offset = 0 node.file_len = 0 node.operation_type = UpgResourceOperation.DELETE_FILE + print("Delete file " + node.file_path.decode()) index_file.write(node.encode()) file_num += 1 @@ -149,9 +173,12 @@ if __name__ == "__main__": parser.add_argument("-i", "--index-file", default=DEFAULT_INDEX_FILE, type=str, help="Generated index file path") parser.add_argument("-d", "--data-file", default=DEFAULT_DATA_FILE, type=str, help="Generated data file path") args = parser.parse_args() - test_deleted_files = [ # 待删除文件 + ] + if os.path.exists("code/sdk/output/additional_fs/delfiles") : + with open("code/sdk/output/additional_fs/delfiles","r") as file: + test_deleted_files = file.readlines() # [ "/user/exc/exc_info.bin"] #待删除文件列表,删除/user/exc/目录下的exc_info.bin文件 test_removed_dirs = [ # 待删除目录 ] res_pack(args.res_dir, args.index_file, args.data_file, test_deleted_files, test_removed_dirs) diff --git a/gen_fs_otapkg.sh b/gen_fs_otapkg.sh index 4267f2282..d1fdf76d4 100644 --- a/gen_fs_otapkg.sh +++ b/gen_fs_otapkg.sh @@ -3,7 +3,7 @@ NEWVERSION=HEAD OLDVERSION=HEAD DATE=$(date +%Y%m%d.%H%M%S) -FSDATADIR=code/sdk/build/config/target_config/brandy/mk_fs_image/fd230 +FSDATADIR=code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs if ! [ "$1" = "" ] @@ -44,7 +44,7 @@ if [ "$x" = "3" ] then x=0 fi -done' sh | awk '{gsub(/code\/sdk\/build\/config\/target_config\/brandy\/mk_fs_image\/fd230\//,"") ;print $0 }' +done' sh | awk '{gsub(/code\/sdk\/build\/config\/target_config\/brandy\/mk_fs_image\/fd230\/fs\//,"") ;print $0 }' } list_rename_file_target_name() @@ -63,7 +63,7 @@ if [ "$x" = "3" ] then x=0 fi -done' sh | awk '{gsub(/code\/sdk\/build\/config\/target_config\/brandy\/mk_fs_image\/fd230\//,"") ;print $0 }' +done' sh | awk '{gsub(/code\/sdk\/build\/config\/target_config\/brandy\/mk_fs_image\/fd230\/fs\//,"") ;print $0 }' } @@ -74,7 +74,7 @@ version2=$2 folder=$3 git diff -z --diff-filter=ACM --name-only $version1 $version2 $folder |xargs -0 sh -c -a 'x=0; for file; do echo \"$file\"\ -done' sh| awk '{gsub(/code\/sdk\/build\/config\/target_config\/brandy\/mk_fs_image\/fd230\//,"") ;print $0 }' +done' sh| awk '{gsub(/code\/sdk\/build\/config\/target_config\/brandy\/mk_fs_image\/fd230\/fs\//,"") ;print $0 }' } list_deleted_file_name() @@ -84,7 +84,7 @@ version2=$2 folder=$3 git diff -z --diff-filter=D --name-only $version1 $version2 $folder |xargs -0 sh -c -a 'x=0; for file; do echo \"$file\"\ -done' sh | awk '{gsub(/code\/sdk\/build\/config\/target_config\/brandy\/mk_fs_image\/fd230\//,"") ;print $0 }' +done' sh | awk '{gsub(/code\/sdk\/build\/config\/target_config\/brandy\/mk_fs_image\/fd230\/fs\//,"") ;print $0 }' } genpatch() { @@ -100,7 +100,7 @@ rm -rf $TMPDIR mkdir -p $TMPDIR cd $TARGETDIR git config core.filemode false -git diff ${OLDVERSION}...${NEWVERSION} --name-status . |awk '{gsub(/code\/sdk\/build\/config\/target_config\/brandy\/mk_fs_image\/fd230\//,"") ;print $0 }' > $tmpfile_changelist +git diff ${OLDVERSION}...${NEWVERSION} --name-status . |awk '{gsub(/code\/sdk\/build\/config\/target_config\/brandy\/mk_fs_image\/fd230\/fs\//,"") ;print $0 }' > $tmpfile_changelist export count=`wc $tmpfile_changelist -l|awk '{print $1}'` echo $TARGETDIR $count if [ "$count" == "0" ] ; then @@ -109,21 +109,21 @@ else echo ${OLDVERSION}...${NEWVERSION} >$tmpfile_git_commit_file - # git diff -z ${OLDVERSION}...${NEWVERSION} --name-only --diff-filter=ACMR . |awk '{gsub(/code\/sdk\/build\/config\/target_config\/brandy\/mk_fs_image\/fd230\//,"") ;print $0 }' > $tmpfile_modified_or_new_files - # git diff -z ${OLDVERSION}...${NEWVERSION} --name-only --diff-filter=D . |awk '{gsub(/code\/sdk\/build\/config\/target_config\/brandy\/mk_fs_image\/fd230\//,"") ;print $0 }' > $tmpfile_removedfiles + # git diff -z ${OLDVERSION}...${NEWVERSION} --name-only --diff-filter=ACMR . |awk '{gsub(/code\/sdk\/build\/config\/target_config\/brandy\/mk_fs_image\/fd230\/fs\//,"") ;print $0 }' > $tmpfile_modified_or_new_files + # git diff -z ${OLDVERSION}...${NEWVERSION} --name-only --diff-filter=D . |awk '{gsub(/code\/sdk\/build\/config\/target_config\/brandy\/mk_fs_image\/fd230\/fs\//,"") ;print $0 }' > $tmpfile_removedfiles list_added_and_modified_file_name ${OLDVERSION} ${NEWVERSION} . > $tmpfile_modified_or_new_files list_rename_file_target_name ${OLDVERSION} ${NEWVERSION} . >> $tmpfile_modified_or_new_files list_deleted_file_name ${OLDVERSION} ${NEWVERSION} . > $tmpfile_removedfiles list_rename_file_source_name ${OLDVERSION} ${NEWVERSION} . >> $tmpfile_removedfiles - mkdir -p $BACKUPDIR + mkdir -p $BACKUPDIR/fs mkdir -p $BACKUPDIR_DIFF mv $tmpfile_git_commit_file $BACKUPDIR_DIFF if ! [ $(wc -l $tmpfile_modified_or_new_files|awk '{print $1}' ) == "0" ] ; then mv $tmpfile_modified_or_new_files $BACKUPDIR_DIFF cat $BACKUPDIR_DIFF/$(basename $tmpfile_modified_or_new_files)|xargs tar czf $BACKUPDIR/changefiles.tar.gz - tar xzf $BACKUPDIR/changefiles.tar.gz -C $BACKUPDIR + tar xzf $BACKUPDIR/changefiles.tar.gz -C $BACKUPDIR/fs rm $BACKUPDIR/changefiles.tar.gz else echo $tmpfile_modified_or_new_files $(wc -l $tmpfile_modified_or_new_files |awk '{print $1}') , skip copy. @@ -138,7 +138,7 @@ fi cd $HOMEDIR } - +rm -rf $BACKUPDIR_HOME genpatch $PWD echo done diff --git a/mkota.sh b/mkota.sh index 30d644332..a9beba8db 100644 --- a/mkota.sh +++ b/mkota.sh @@ -7,6 +7,7 @@ TARGET_DIR=$2 TARGET_VERSION=`basename $TARGET_DIR` RES_DIR=$3 ROOTDIR=`basename $PWD` +ADDITIONAL_RES_DIR=$PWD/code/sdk/output/additional_fs if [ ! -d "$SOURCE_DIR" ] ; then echo "$SOURCE_DIR not exist , skip create ota package" @@ -39,11 +40,21 @@ fi # echo resdir = $RES_DIR = $TMPDIR if [ -d "$RES_DIR" ] ; then cp -r $RES_DIR/fs code/sdk/output/brandy/TestOTA/res_file +fi + +if [ -e "$RES_DIR/diff/deletedfiles.txt" ]; then cp -f $RES_DIR/diff/deletedfiles.txt code/sdk/output/brandy/TestOTA/delfiles fi +if [ -d "$ADDITIONAL_RES_DIR/fs" ]; then +cp -rf $ADDITIONAL_RES_DIR/fs/* code/sdk/output/brandy/TestOTA/res_file/ +fi + +if [ -e "$ADDITIONAL_RES_DIR/delfiles" ]; then +cat $ADDITIONAL_RES_DIR/delfiles >> code/sdk/output/brandy/TestOTA/delfiles +fi -cd code/sdk/ +cd $PWD/code/sdk/ ./build/config/target_config/brandy/build_brandy_update.py cd - -- 2.17.1