From 59470dc3678ed5fc0f594fc9ecdff37f411a74dc Mon Sep 17 00:00:00 2001 From: Rayllll Date: Fri, 11 Jul 2025 10:00:17 +0800 Subject: [PATCH 1/3] Signed-off-by: Rayllll add notify precheck before doptableprocess --- services/updater_main.cpp | 40 ++++++++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/services/updater_main.cpp b/services/updater_main.cpp index d6215055..1cbb6df4 100644 --- a/services/updater_main.cpp +++ b/services/updater_main.cpp @@ -42,6 +42,7 @@ #include "pkg_utils.h" #include "ptable_parse/ptable_process.h" #include "sdcard_update/sdcard_update.h" +#include "scope_guard.h" #include "securec.h" #include "updater/updater_const.h" #include "updater/hwfault_retry.h" @@ -683,6 +684,9 @@ static UpdaterStatus PreUpdatePackages(UpdaterParams &upParams) LOG(INFO) << "start to update packages, start index:" << upParams.pkgLocation; UpdaterStatus status = UPDATE_UNKNOWN; + ON_SCOPE_EXIT(syncresult) { + NotifyPreCheck(status, upParams); + } if (upParams.updateBin.size() > 0) { upParams.installTime.resize(upParams.updateBin.size(), std::chrono::duration(0)); @@ -723,6 +727,20 @@ static UpdaterStatus PreUpdatePackages(UpdaterParams &upParams) LOG(ERROR) << "Battery is not sufficient for install package."; return UPDATE_SKIP; } + status = UPDATE_SUCCESS; + NotifyPreCheck(status, upParams); + if (status != UPDATE_SUCCESS) { + CANCEL_SCOPE_EXIT_GUARD(syncresult); + return UPDATE_CORRUPT; + } + +#ifdef UPDATER_USE_PTABLE + if (!PtablePreProcess::GetInstance().DoPtableProcess(upParams)) { + LOG(ERROR) << "DoPtableProcess failed"; + return UPDATE_ERROR; + } +#endif + CANCEL_SCOPE_EXIT_GUARD(syncresult); return UPDATE_SUCCESS; } @@ -864,12 +882,6 @@ UpdaterStatus DoUpdatePackages(UpdaterParams &upParams) UpdaterStatus status = UPDATE_UNKNOWN; std::vector pkgStartPosition {}; double updateStartPosition = 0.0; -#ifdef UPDATER_USE_PTABLE - if (!PtablePreProcess::GetInstance().DoPtableProcess(upParams)) { - LOG(ERROR) << "DoPtableProcess failed"; - return UPDATE_ERROR; - } -#endif status = CalcProgress(upParams, pkgStartPosition, updateStartPosition); if (status != UPDATE_SUCCESS) { UPDATER_LAST_WORD(status, "CalcProgress failed"); @@ -989,6 +1001,10 @@ static void PostUpdatePackages(UpdaterParams &upParams, UpdaterStatus &status) static UpdaterStatus PreSdcardUpdatePackages(UpdaterParams &upParams) { + UpdaterStatus status = UPDATE_UNKNOWN; + ON_SCOPE_EXIT(syncresult) { + NotifyPreCheck(status, upParams); + } upParams.installTime.resize(upParams.updatePackage.size(), std::chrono::duration(0)); // verify packages first if (upParams.retryCount == 0 && !IsBatteryCapacitySufficient()) { @@ -1001,10 +1017,18 @@ static UpdaterStatus PreSdcardUpdatePackages(UpdaterParams &upParams) LOG(ERROR) << "SetUpdateParam failed"; return UPDATE_ERROR; } - UpdaterStatus status = VerifyPackages(upParams); + status = VerifyPackages(upParams); + NotifyPreCheck(status, upParams); + CANCEL_SCOPE_EXIT_GUARD(syncresult); if (status != UPDATE_SUCCESS) { return UPDATE_CORRUPT; // verify package failed must return UPDATE_CORRUPT, ux need it !!! } +#ifdef UPDATER_USE_PTABLE + if (!PtablePreProcess::GetInstance().DoPtableProcess(upParams)) { + LOG(ERROR) << "DoPtableProcess failed"; + return UPDATE_ERROR; + } +#endif return UPDATE_SUCCESS; } @@ -1044,7 +1068,6 @@ UpdaterStatus UpdaterFromSdcard(UpdaterParams &upParams) return UPDATE_ERROR; } status = PreSdcardUpdatePackages(upParams); - NotifyPreCheck(status, upParams); if (status == UPDATE_SUCCESS) { upParams.initialProgress += VERIFY_PERCENT; upParams.currentPercentage -= VERIFY_PERCENT; @@ -1074,7 +1097,6 @@ UpdaterStatus InstallUpdaterPackages(UpdaterParams &upParams) { UpdaterInit::GetInstance().InvokeEvent(UPDATER_PRE_UPDATE_PACKAGE_EVENT); UpdaterStatus status = PreUpdatePackages(upParams); - NotifyPreCheck(status, upParams); if (status == UPDATE_SUCCESS) { status = DoUpdatePackages(upParams); } -- Gitee From 5af2141676f4f27378a9ec58d0785dee6b7accb8 Mon Sep 17 00:00:00 2001 From: Rayllll Date: Fri, 11 Jul 2025 02:17:24 +0000 Subject: [PATCH 2/3] update services/updater_main.cpp. Signed-off-by: Rayllll --- services/updater_main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/updater_main.cpp b/services/updater_main.cpp index 1cbb6df4..c91aab6d 100644 --- a/services/updater_main.cpp +++ b/services/updater_main.cpp @@ -686,7 +686,7 @@ static UpdaterStatus PreUpdatePackages(UpdaterParams &upParams) UpdaterStatus status = UPDATE_UNKNOWN; ON_SCOPE_EXIT(syncresult) { NotifyPreCheck(status, upParams); - } + }; if (upParams.updateBin.size() > 0) { upParams.installTime.resize(upParams.updateBin.size(), std::chrono::duration(0)); @@ -1004,7 +1004,7 @@ static UpdaterStatus PreSdcardUpdatePackages(UpdaterParams &upParams) UpdaterStatus status = UPDATE_UNKNOWN; ON_SCOPE_EXIT(syncresult) { NotifyPreCheck(status, upParams); - } + }; upParams.installTime.resize(upParams.updatePackage.size(), std::chrono::duration(0)); // verify packages first if (upParams.retryCount == 0 && !IsBatteryCapacitySufficient()) { -- Gitee From a3cb2ecda276c6733bac2b4b9d33d75d89f4b21c Mon Sep 17 00:00:00 2001 From: Rayllll Date: Fri, 11 Jul 2025 02:17:24 +0000 Subject: [PATCH 3/3] update services/updater_main.cpp. Signed-off-by: Rayllll --- services/updater_main.cpp | 61 +++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 28 deletions(-) diff --git a/services/updater_main.cpp b/services/updater_main.cpp index 1cbb6df4..51016978 100644 --- a/services/updater_main.cpp +++ b/services/updater_main.cpp @@ -678,16 +678,41 @@ static UpdaterStatus SetUpdateParam(UpdaterParams &upParams, bool isUpdateCurrSl return UPDATE_SUCCESS; } +static UpdaterStatus VerifyUpParams(UpdaterParams &upParams) +{ + if (SetUpdateParam(upParams, false) != UPDATE_SUCCESS) { + LOG(ERROR) << "SetUpdateParam failed"; + return UPDATE_ERROR; + } + // verify package first + if (VerifyCommonFiles(upParams) != UPDATE_SUCCESS) { + return UPDATE_CORRUPT; // verify package failed must return UPDATE_CORRUPT, ux need it !!! + } + // Only handle UPATE_ERROR and UPDATE_SUCCESS here.Let package verify handle others. + if (upParams.updatePackage.size() > 0) { + if (IsSpaceCapacitySufficient(upParams) == UPDATE_ERROR) { + UPDATER_LAST_WORD(status, "space nott enough"); + return status; + } + } + if (upParams.retryCount == 0 && !IsBatteryCapacitySufficient()) { + UPDATER_UI_INSTANCE.ShowUpdInfo(TR(LOG_LOWPOWER)); + UPDATER_UI_INSTANCE.Sleep(UI_SHOW_DURATION); + UPDATER_LAST_WORD(UPDATE_ERROR, "Battery is not sufficient for install package."); + LOG(ERROR) << "Battery is not sufficient for install package."; + return UPDATE_SKIP; + } + return UPDATE_SUCCESS; +} + static UpdaterStatus PreUpdatePackages(UpdaterParams &upParams) { UPDATER_INIT_RECORD; LOG(INFO) << "start to update packages, start index:" << upParams.pkgLocation; - UpdaterStatus status = UPDATE_UNKNOWN; ON_SCOPE_EXIT(syncresult) { NotifyPreCheck(status, upParams); - } - + }; if (upParams.updateBin.size() > 0) { upParams.installTime.resize(upParams.updateBin.size(), std::chrono::duration(0)); if (CheckMountData() != 0) { @@ -704,36 +729,16 @@ static UpdaterStatus PreUpdatePackages(UpdaterParams &upParams) (void)DeleteFile(resultPath); LOG(INFO) << "delete last upgrade file"; } - if (SetUpdateParam(upParams, false) != UPDATE_SUCCESS) { - LOG(ERROR) << "SetUpdateParam failed"; - return UPDATE_ERROR; - } - // verify package first - if (VerifyCommonFiles(upParams) != UPDATE_SUCCESS) { - return UPDATE_CORRUPT; // verify package failed must return UPDATE_CORRUPT, ux need it !!! - } - - // Only handle UPATE_ERROR and UPDATE_SUCCESS here.Let package verify handle others. - if (upParams.updatePackage.size() > 0) { - if (IsSpaceCapacitySufficient(upParams) == UPDATE_ERROR) { - UPDATER_LAST_WORD(status, "space nott enough"); - return status; - } - } - if (upParams.retryCount == 0 && !IsBatteryCapacitySufficient()) { - UPDATER_UI_INSTANCE.ShowUpdInfo(TR(LOG_LOWPOWER)); - UPDATER_UI_INSTANCE.Sleep(UI_SHOW_DURATION); - UPDATER_LAST_WORD(UPDATE_ERROR, "Battery is not sufficient for install package."); - LOG(ERROR) << "Battery is not sufficient for install package."; - return UPDATE_SKIP; + status = VerifyUpParams(upParams); + if (status != UPDATE_SUCCESS) { + LOG(ERROR) << "verify updater params fail"; + return status; } - status = UPDATE_SUCCESS; NotifyPreCheck(status, upParams); if (status != UPDATE_SUCCESS) { CANCEL_SCOPE_EXIT_GUARD(syncresult); return UPDATE_CORRUPT; } - #ifdef UPDATER_USE_PTABLE if (!PtablePreProcess::GetInstance().DoPtableProcess(upParams)) { LOG(ERROR) << "DoPtableProcess failed"; @@ -1004,7 +1009,7 @@ static UpdaterStatus PreSdcardUpdatePackages(UpdaterParams &upParams) UpdaterStatus status = UPDATE_UNKNOWN; ON_SCOPE_EXIT(syncresult) { NotifyPreCheck(status, upParams); - } + }; upParams.installTime.resize(upParams.updatePackage.size(), std::chrono::duration(0)); // verify packages first if (upParams.retryCount == 0 && !IsBatteryCapacitySufficient()) { -- Gitee