From 9ace9c968ced4481344054f22b54fc01cb58f8c3 Mon Sep 17 00:00:00 2001 From: Junghyun Yeon Date: Tue, 30 Jul 2019 16:50:09 +0900 Subject: [PATCH] Add GetDependencyInfo at TPK archive info Related changes: [slp-pkgmgr] : https://review.tizen.org/gerrit/211114 [pkgmgr-info] : https://review.tizen.org/gerrit/211111 Change-Id: I7c8fd6dcf8be0387c7fcd98f8018f0174044b873 Signed-off-by: Junghyun Yeon --- src/lib/tpk_archive_info.cc | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/lib/tpk_archive_info.cc b/src/lib/tpk_archive_info.cc index 9437413..a181a51 100644 --- a/src/lib/tpk_archive_info.cc +++ b/src/lib/tpk_archive_info.cc @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -99,6 +100,33 @@ bool GetPrivilegesInfo(const tpk::parse::TPKConfigParser& parser, return true; } +bool GetDependencyInfo(const tpk::parse::TPKConfigParser& parser, + package_manager_pkg_detail_info_t* info) { + auto dependencies_info = + std::static_pointer_cast( + parser.GetManifestData(tpk::application_keys::kDependenciesKey)); + if (!dependencies_info) + return true; + + for (const auto& dependency : dependencies_info->dependencies()) { + pkg_dependency_info_t* dep = + static_cast + (calloc(1, sizeof(pkg_dependency_info_t))); + if (!dep) { + LOG(ERROR) << "Out of memory"; + return false; + } + snprintf(dep->pkgid, sizeof(dep->pkgid), "%s", dependency.pkgid().c_str()); + snprintf(dep->type, sizeof(dep->type), "%s", dependency.type().c_str()); + if (!dependency.type().empty()) + snprintf(dep->required_version, + sizeof(dep->required_version), "%s", + dependency.required_version().c_str()); + info->dependency_list = g_list_append(info->dependency_list, dep); + } + return true; +} + template bool GetAppLabel(const tpk::parse::TPKConfigParser& parser, const std::string& key, const char* locale, @@ -307,6 +335,8 @@ bool TpkArchiveInfo::GetArchiveInfo(const char* file_path, LOG(WARNING) << "Failed to get author info"; if (!GetPrivilegesInfo(parser, info)) LOG(WARNING) << "Failed to get privilege info"; + if (!GetDependencyInfo(parser, info)) + LOG(WARNING) << "Failed to get dependency info"; char* locale = vconf_get_str(kVconfLanguageKey); if (!locale) -- 2.7.4