Skip to content

Commit 82f60b2

Browse files
authored
Merge branch 'OpenAtom-Linyaps:release/1.10' into release/1.10
2 parents 509389e + 76f93d9 commit 82f60b2

File tree

9 files changed

+72
-66
lines changed

9 files changed

+72
-66
lines changed

apps/ll-builder/src/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -746,7 +746,7 @@ int main(int argc, char **argv)
746746
Q_INIT_RESOURCE(builder_releases);
747747
// 初始化应用,builder在非tty环境也输出日志
748748
linglong::utils::global::applicationInitialize(true);
749-
linglong::utils::global::initLinyapsLogSystem(argv[0]);
749+
linglong::utils::global::initLinyapsLogSystem(linglong::utils::log::LogBackend::Console);
750750

751751
CLI::App commandParser{ _("linyaps builder CLI \n"
752752
"A CLI program to build linyaps application\n") };

apps/ll-cli/src/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -930,7 +930,7 @@ int main(int argc, char **argv)
930930
QCoreApplication app(argc, argv);
931931
// application initialize
932932
applicationInitialize();
933-
initLinyapsLogSystem(argv[0]);
933+
initLinyapsLogSystem(linglong::utils::log::LogBackend::Journal);
934934

935935
// invoke method
936936
auto ret = QMetaObject::invokeMethod(

apps/ll-package-manager/src/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ auto main(int argc, char *argv[]) -> int
159159
QCoreApplication app(argc, argv);
160160

161161
applicationInitialize();
162-
initLinyapsLogSystem(argv[0]);
162+
initLinyapsLogSystem(linglong::utils::log::LogBackend::Journal);
163163

164164
auto ociRuntimeCLI = qgetenv("LINGLONG_OCI_RUNTIME");
165165
if (ociRuntimeCLI.isEmpty()) {

libs/linglong/src/linglong/package/uab_packager.cpp

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -280,14 +280,8 @@ utils::error::Result<void> UABPackager::packIcon() noexcept
280280
{
281281
LINGLONG_TRACE("add icon to uab")
282282

283-
auto iconAchieve = this->uab.parentDir().absoluteFilePath("icon.a");
284-
if (auto ret = utils::command::Cmd("ar").exec({ "q", iconAchieve, icon->absoluteFilePath() });
285-
!ret) {
286-
return LINGLONG_ERR(ret);
287-
}
288-
289283
QByteArray iconSection{ "linglong.icon" };
290-
if (auto ret = this->uab.addNewSection(iconSection, QFileInfo{ iconAchieve }); !ret) {
284+
if (auto ret = this->uab.addNewSection(iconSection, icon.value()); !ret) {
291285
return LINGLONG_ERR(ret);
292286
}
293287

libs/linglong/src/linglong/package_manager/package_manager.cpp

Lines changed: 59 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -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
});

libs/linglong/src/linglong/package_manager/package_manager.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,9 @@ public
100100
// Nothing to do here, Permissions() will be rejected in org.deepin.linglong.PackageManager.conf
101101
void Permissions() { }
102102

103+
utils::error::Result<void> executePostInstallHooks(const package::Reference &ref) noexcept;
104+
utils::error::Result<void> executePostUninstallHooks(const package::Reference &ref) noexcept;
105+
103106
Q_SIGNALS:
104107
void TaskAdded(QDBusObjectPath object_path);
105108
void TaskRemoved(QDBusObjectPath object_path,
@@ -156,8 +159,6 @@ public
156159
utils::error::Result<void> generateCache(const package::Reference &ref) noexcept;
157160
utils::error::Result<void> tryGenerateCache(const package::Reference &ref) noexcept;
158161
utils::error::Result<void> removeCache(const package::Reference &ref) noexcept;
159-
utils::error::Result<void> executePostInstallHooks(const package::Reference &ref) noexcept;
160-
utils::error::Result<void> executePostUninstallHooks(const package::Reference &ref) noexcept;
161162
linglong::repo::OSTreeRepo &repo; // NOLINT
162163
PackageTaskQueue tasks;
163164

libs/linglong/tests/ll-tests/src/main.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ int main(int argc, char **argv)
1414
{
1515
qputenv("QT_FORCE_STDERR_LOGGING", QByteArray("1"));
1616
linglong::utils::global::installMessageHandler();
17+
linglong::utils::global::initLinyapsLogSystem(linglong::utils::log::LogBackend::Console);
1718
testing::InitGoogleTest(&argc, argv);
1819
return RUN_ALL_TESTS();
1920
}

libs/utils/src/linglong/utils/global/initialize.cpp

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ LogBackend parseLogBackend(const char *backends)
151151

152152
} // namespace
153153

154-
void initLinyapsLogSystem(const char *command)
154+
void initLinyapsLogSystem(linglong::utils::log::LogBackend backend)
155155
{
156156
LogLevel logLevel = LogLevel::Info;
157157
LogBackend logBackend = LogBackend::None;
@@ -165,13 +165,7 @@ void initLinyapsLogSystem(const char *command)
165165
if (logBackendEnv) {
166166
logBackend = parseLogBackend(logBackendEnv);
167167
} else {
168-
if (command == std::string("ll-builder")) {
169-
logBackend = LogBackend::Console;
170-
} else if (command == std::string("ll-cli")) {
171-
logBackend = LogBackend::Journal;
172-
} else if (command == std::string("ll-package-manager")) {
173-
logBackend = LogBackend::Journal;
174-
}
168+
logBackend = backend;
175169

176170
if (isatty(STDERR_FILENO)) {
177171
logBackend = logBackend | LogBackend::Console;

libs/utils/src/linglong/utils/global/initialize.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
#pragma once
88

9+
#include "linglong/utils/log/log.h"
10+
911
#include <QObject>
1012

1113
#include <atomic>
@@ -16,7 +18,7 @@ void applicationInitialize(bool appForceStderrLogging = false);
1618
void installMessageHandler();
1719
bool linglongInstalled();
1820
void cancelAllTask() noexcept;
19-
void initLinyapsLogSystem(const char *command);
21+
void initLinyapsLogSystem(linglong::utils::log::LogBackend backend);
2022

2123
class GlobalTaskControl : public QObject
2224
{

0 commit comments

Comments
 (0)