AddStep<wgt::pkgmgr::StepGenerateXml>();
AddStep<hybrid::pkgmgr::StepMergeXml>();
AddStep<tpk::pkgmgr::StepManifestAdjustment>();
- AddStep<hybrid::configuration::StepMergeTpkConfig>(
- hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT);
+ AddStep<hybrid::configuration::StepMergeTpkConfig>();
AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
AddStep<ci::security::StepPrivilegeCompatibility>(
ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
AddStep<wgt::pkgmgr::StepGenerateXml>();
AddStep<hybrid::pkgmgr::StepMergeXml>();
AddStep<tpk::pkgmgr::StepManifestAdjustment>();
- AddStep<hybrid::configuration::StepMergeTpkConfig>(
- hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT);
+ AddStep<hybrid::configuration::StepMergeTpkConfig>();
AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
AddStep<ci::security::StepPrivilegeCompatibility>(
ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
AddStep<wgt::pkgmgr::StepGenerateXml>();
AddStep<hybrid::pkgmgr::StepMergeXml>();
AddStep<tpk::pkgmgr::StepManifestAdjustment>();
- AddStep<hybrid::configuration::StepMergeTpkConfig>(
- hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT);
+ AddStep<hybrid::configuration::StepMergeTpkConfig>();
AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
AddStep<ci::security::StepPrivilegeCompatibility>(
ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
AddStep<wgt::pkgmgr::StepGenerateXml>();
AddStep<hybrid::pkgmgr::StepMergeXml>();
AddStep<tpk::pkgmgr::StepManifestAdjustment>();
- AddStep<hybrid::configuration::StepMergeTpkConfig>(
- hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT);
+ AddStep<hybrid::configuration::StepMergeTpkConfig>();
AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
AddStep<ci::security::StepPrivilegeCompatibility>(
ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
AddStep<wgt::pkgmgr::StepGenerateXml>();
AddStep<hybrid::pkgmgr::StepMergeXml>();
AddStep<tpk::pkgmgr::StepManifestAdjustment>();
- AddStep<hybrid::configuration::StepMergeTpkConfig>(
- hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT);
+ AddStep<hybrid::configuration::StepMergeTpkConfig>();
AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
AddStep<ci::security::StepPrivilegeCompatibility>(
ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
AddStep<wgt::pkgmgr::StepGenerateXml>();
AddStep<hybrid::pkgmgr::StepMergeXml>();
AddStep<tpk::pkgmgr::StepManifestAdjustment>();
- AddStep<hybrid::configuration::StepMergeTpkConfig>(
- hybrid::configuration::StepMergeTpkConfig::MergeType::OVERWRITE);
+ AddStep<hybrid::configuration::StepMergeTpkConfig>();
AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
AddStep<ci::security::StepPrivilegeCompatibility>(
ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
AddStep<wgt::pkgmgr::StepGenerateXml>();
AddStep<hybrid::pkgmgr::StepMergeXml>();
AddStep<tpk::pkgmgr::StepManifestAdjustment>();
- AddStep<hybrid::configuration::StepMergeTpkConfig>(
- hybrid::configuration::StepMergeTpkConfig::MergeType::OVERWRITE);
+ AddStep<hybrid::configuration::StepMergeTpkConfig>();
AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
AddStep<ci::security::StepPrivilegeCompatibility>(
ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
AddStep<hybrid::configuration::StepStashTpkConfig>();
AddStep<wgt::configuration::StepParse>(
wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
- AddStep<hybrid::configuration::StepMergeTpkConfig>(
- hybrid::configuration::StepMergeTpkConfig::MergeType::OVERWRITE);
+ AddStep<hybrid::configuration::StepMergeTpkConfig>();
AddStep<hybrid::configuration::StepSetMainapp>();
AddStep<ci::configuration::StepParsePreload>();
AddStep<ci::security::StepSignature>(false);
AddStep<hybrid::configuration::StepStashTpkConfig>();
AddStep<wgt::configuration::StepParse>(
wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
- AddStep<hybrid::configuration::StepMergeTpkConfig>(
- hybrid::configuration::StepMergeTpkConfig::MergeType::OVERWRITE);
+ AddStep<hybrid::configuration::StepMergeTpkConfig>();
AddStep<hybrid::configuration::StepSetMainapp>();
AddStep<ci::configuration::StepParsePreload>();
AddStep<ci::security::StepSignature>(false);
AddStep<wgt::pkgmgr::StepGenerateXml>();
AddStep<hybrid::pkgmgr::StepMergeXml>();
AddStep<tpk::pkgmgr::StepManifestAdjustment>();
- AddStep<hybrid::configuration::StepMergeTpkConfig>(
- hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT);
+ AddStep<hybrid::configuration::StepMergeTpkConfig>();
AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
AddStep<ci::security::StepPrivilegeCompatibility>(
ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
AddStep<ci::configuration::StepParsePreload>();
AddStep<wgt::security::StepCheckSettingsLevel>();
- AddStep<hybrid::configuration::StepMergeTpkConfig>(
- hybrid::configuration::StepMergeTpkConfig::MergeType::OVERWRITE);
+ AddStep<hybrid::configuration::StepMergeTpkConfig>();
AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
AddStep<ci::security::StepGetPrivilegeLevel>();
AddStep<ci::security::StepPrivilegeCompatibility>(
#include "hybrid/step/configuration/step_merge_tpk_config.h"
+#include <glib.h>
+#include <string.h>
+
#include <pkgmgrinfo_basic.h>
+#include "common/utils/glist_range.h"
+
#include "hybrid/hybrid_backend_data.h"
namespace hybrid {
namespace configuration {
-StepMergeTpkConfig::StepMergeTpkConfig(
- common_installer::InstallerContext* context,
- MergeType type) : Step(context), merge_type_(type) {
-}
-
common_installer::Step::Status StepMergeTpkConfig::process() {
HybridBackendData* data =
static_cast<HybridBackendData*>(context_->backend_data.get());
manifest_x* tpk_data = data->tpk_manifest_data.get();
manifest_x* wgt_data = context_->manifest_data.get();
+ // FIXME:api-version of tpk app will have wgt's if modified manifest exists.
+ for (GList* tpk_list = tpk_data->application;
+ tpk_list != nullptr; tpk_list = g_list_next(tpk_list)) {
+ application_x* tpk_app = static_cast<application_x*>(tpk_list->data);
+ bool is_found = false;
+ for (GList* wgt_list = wgt_data->application;
+ wgt_list != nullptr; wgt_list = g_list_next(wgt_list)) {
+ application_x* wgt_app = static_cast<application_x*>(wgt_list->data);
+ if (!strcmp(tpk_app->appid, wgt_app->appid)) {
+ is_found = true;
+ break;
+ }
+ }
+ if (is_found)
+ continue;
+ wgt_data->application = g_list_append(
+ wgt_data->application, tpk_list->data);
+ tpk_data->application = g_list_delete_link(
+ tpk_data->application, tpk_list);
+ }
- if (merge_type_ == MergeType::CONCAT)
- wgt_data->application =
- g_list_concat(wgt_data->application, tpk_data->application);
- else
- wgt_data->application = tpk_data->application;
-
- tpk_data->application = nullptr;
return Status::OK;
}