@@ -724,13 +724,19 @@ QVariantMap PackageManager::installFromLayer(const QDBusUnixFileDescriptor &fd,
724724 return ;
725725 }
726726
727- if (!localRef) {
728- auto newRef = package::Reference::fromPackageInfo (*info);
729- if (!newRef) {
730- taskRef.reportError (std::move (newRef).error ());
731- return ;
732- }
727+ auto newRef = package::Reference::fromPackageInfo (*info);
728+ if (!newRef) {
729+ taskRef.reportError (std::move (newRef).error ());
730+ return ;
731+ }
732+
733+ auto ret = executePostInstallHooks (*newRef);
734+ if (!ret) {
735+ taskRef.reportError (std::move (ret).error ());
736+ return ;
737+ }
733738
739+ if (!localRef) {
734740 auto generateCacheRet = this ->tryGenerateCache (*newRef);
735741 if (!generateCacheRet) {
736742 taskRef.reportError (std::move (generateCacheRet).error ());
@@ -746,30 +752,18 @@ QVariantMap PackageManager::installFromLayer(const QDBusUnixFileDescriptor &fd,
746752 return ;
747753 }
748754
749- auto newRef = package::Reference::fromPackageInfo (*info);
750- if (!newRef) {
751- taskRef.reportError (std::move (newRef).error ());
752- return ;
753- }
754-
755755 auto generateCacheRet = this ->tryGenerateCache (*newRef);
756756 if (!generateCacheRet) {
757757 taskRef.reportError (std::move (generateCacheRet).error ());
758758 return ;
759759 }
760760
761- auto ret = removeAfterInstall (*localRef, *newRef, std::vector{ module });
761+ ret = removeAfterInstall (*localRef, *newRef, std::vector{ module });
762762 if (!ret) {
763763 qCritical () << " failed to remove old reference" << localRef->toString ()
764764 << " after install" << packageRef.toString () << " :"
765765 << ret.error ().message ();
766766 }
767-
768- ret = executePostInstallHooks (*newRef);
769- if (!ret) {
770- taskRef.reportError (std::move (ret).error ());
771- return ;
772- }
773767 };
774768
775769 auto refSpec =
@@ -1090,7 +1084,19 @@ QVariantMap PackageManager::installFromUAB(const QDBusUnixFileDescriptor &fd,
10901084 if (!ret) {
10911085 qCritical () << " rollback importLayerDir failed:" << ret.error ().message ();
10921086 }
1087+
1088+ ret = executePostUninstallHooks (layerRef);
1089+ if (!ret) {
1090+ LogE (" failed to rollback execute uninstall hooks: {}" , ret.error ());
1091+ Q_ASSERT (false );
1092+ }
10931093 });
1094+
1095+ auto result = executePostInstallHooks (ref);
1096+ if (!result) {
1097+ taskRef.reportError (std::move (result).error ());
1098+ return ;
1099+ }
10941100 }
10951101
10961102 if (oldAppRef) {
@@ -1116,12 +1122,6 @@ QVariantMap PackageManager::installFromUAB(const QDBusUnixFileDescriptor &fd,
11161122 }
11171123 }
11181124
1119- auto ret = executePostInstallHooks (newAppRef);
1120- if (!ret) {
1121- taskRef.reportError (std::move (ret).error ());
1122- return ;
1123- }
1124-
11251125 transaction.commit ();
11261126 taskRef.updateState (linglong::api::types::v1::State::Succeed, " install uab successfully" );
11271127 };
@@ -1436,6 +1436,7 @@ void PackageManager::Install(PackageTask &taskContext,
14361436 utils::error::ErrorCode::AppInstallModuleNotFound));
14371437 return ;
14381438 }
1439+
14391440 InstallRef (taskContext,
14401441 newRef,
14411442 installModules->second ,
@@ -1450,8 +1451,20 @@ void PackageManager::Install(PackageTask &taskContext,
14501451 if (tmp.state () != linglong::api::types::v1::State::Succeed) {
14511452 LogE (" failed to rollback install {}" , newRef.toString ());
14521453 }
1454+
1455+ auto ret = executePostUninstallHooks (newRef);
1456+ if (!ret) {
1457+ LogE (" failed to rollback execute uninstall hooks: {}" , ret.error ());
1458+ }
14531459 });
14541460
1461+ auto ret = executePostInstallHooks (newRef);
1462+ if (!ret) {
1463+ taskContext.updateState (linglong::api::types::v1::State::Failed,
1464+ " Failed to execute postInstall hooks.\n " + ret.error ().message ());
1465+ return ;
1466+ }
1467+
14551468 taskContext.updateSubState (linglong::api::types::v1::SubState::PostAction,
14561469 " processing after install" );
14571470
@@ -1490,13 +1503,6 @@ void PackageManager::Install(PackageTask &taskContext,
14901503 }
14911504 }
14921505
1493- auto ret = executePostInstallHooks (newRef);
1494- if (!ret) {
1495- taskContext.updateState (linglong::api::types::v1::State::Failed,
1496- " Failed to execute postInstall hooks.\n " + ret.error ().message ());
1497- return ;
1498- }
1499-
15001506 transaction.commit ();
15011507 taskContext.updateState (linglong::api::types::v1::State::Succeed,
15021508 " Install " + newRef.toString () + " (from repo: "
@@ -1947,8 +1953,21 @@ void PackageManager::Update(PackageTask &taskContext,
19471953 if (tmp.state () != linglong::api::types::v1::State::Succeed) {
19481954 LogE (" failed to rollback install {}" , newRef.toString ());
19491955 }
1956+
1957+ auto ret = executePostUninstallHooks (newRef);
1958+ if (!ret) {
1959+ LogE (" failed to rollback execute uninstall hooks: {}" , ret.error ());
1960+ }
19501961 });
19511962
1963+ auto result = executePostInstallHooks (newRef);
1964+ if (!result) {
1965+ taskContext.updateState (linglong::api::types::v1::State::Failed,
1966+ " Failed to execute postInstall hooks.\n "
1967+ + result.error ().message ());
1968+ return ;
1969+ }
1970+
19521971 auto oldRefLayerItem = this ->repo .getLayerItem (oldRef);
19531972
19541973 taskContext.updateState (
@@ -1983,12 +2002,6 @@ void PackageManager::Update(PackageTask &taskContext,
19832002 return ;
19842003 }
19852004
1986- ret = executePostInstallHooks (newRef);
1987- if (!ret) {
1988- qCritical () << " failed to execute post install hooks" << ret.error ().message ();
1989- return ;
1990- }
1991-
19922005 auto result = this ->tryGenerateCache (newRef);
19932006 if (!result) {
19942007 taskContext.reportError (
@@ -2142,14 +2155,14 @@ void PackageManager::pullDependency(PackageTask &taskContext,
21422155 transaction.addRollBack ([this , runtimeRef = *runtime, module ]() noexcept {
21432156 auto result = this ->repo .remove (runtimeRef.reference , module );
21442157 if (!result) {
2145- qCritical () << result.error ();
2146- Q_ASSERT (false );
2158+ LogE (" failed to remove remote reference: {} : {}" ,
2159+ runtimeRef.reference .toString (),
2160+ result.error ().message ());
21472161 }
21482162
21492163 result = executePostUninstallHooks (runtimeRef.reference );
21502164 if (!result) {
2151- qCritical () << result.error ();
2152- Q_ASSERT (false );
2165+ LogE (" failed to rollback execute uninstall hooks: {}" , result.error ());
21532166 }
21542167 });
21552168 }
@@ -2210,13 +2223,14 @@ void PackageManager::pullDependency(PackageTask &taskContext,
22102223 transaction.addRollBack ([this , baseRef = *base, module ]() noexcept {
22112224 auto result = this ->repo .remove (baseRef.reference , module );
22122225 if (!result) {
2213- qCritical () << result.error ();
2214- Q_ASSERT (false );
2226+ LogE (" failed to remove remote reference: {} : {}" ,
2227+ baseRef.reference .toString (),
2228+ result.error ().message ());
22152229 }
22162230
22172231 result = executePostUninstallHooks (baseRef.reference );
22182232 if (!result) {
2219- qCritical () << result.error ();
2233+ LogE ( " failed to rollback execute uninstall hooks: {} " , result.error () );
22202234 Q_ASSERT (false );
22212235 }
22222236 });
0 commit comments