Fix codes for Manifest installation 79/214979/1
authorJunghyun Yeon <jungh.yeon@samsung.com>
Thu, 21 Jun 2018 10:46:06 +0000 (19:46 +0900)
committerIlho Kim <ilho159.kim@samsung.com>
Mon, 30 Sep 2019 10:23:39 +0000 (19:23 +0900)
- Operations like ManifestDirectInstall will parse merged manifest so
  it does not have to merge configurations for hybrid pkg, so add options
  to determine merge or overwrites configurations.

Change-Id: I14af1674769daea48499ae7ce4856cb5dc00a671
Signed-off-by: Ilho Kim <ilho159.kim@samsung.com>
src/hybrid/hybrid_installer.cc
src/hybrid/step/configuration/step_merge_tpk_config.cc
src/hybrid/step/configuration/step_merge_tpk_config.h

index d238400..01266aa 100644 (file)
@@ -152,7 +152,8 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
       AddStep<wgt::pkgmgr::StepGenerateXml>();
       AddStep<hybrid::pkgmgr::StepGenerateXml>();
       AddStep<tpk::pkgmgr::StepManifestAdjustment>();
-      AddStep<hybrid::configuration::StepMergeTpkConfig>();
+      AddStep<hybrid::configuration::StepMergeTpkConfig>(
+          hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT);
       AddStep<wgt::filesystem::StepCreateSymbolicLink>();
       AddStep<tpk::filesystem::StepCreateSymbolicLink>();
       AddStep<ci::pkgmgr::StepRegisterApplication>();
@@ -210,7 +211,8 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
       AddStep<wgt::pkgmgr::StepGenerateXml>();
       AddStep<hybrid::pkgmgr::StepGenerateXml>();
       AddStep<tpk::pkgmgr::StepManifestAdjustment>();
-      AddStep<hybrid::configuration::StepMergeTpkConfig>();
+      AddStep<hybrid::configuration::StepMergeTpkConfig>(
+          hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT);
       AddStep<wgt::filesystem::StepCreateSymbolicLink>();
       AddStep<tpk::filesystem::StepCreateSymbolicLink>();
       AddStep<ci::pkgmgr::StepUpdateApplication>();
@@ -302,7 +304,8 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
       AddStep<wgt::pkgmgr::StepGenerateXml>();
       AddStep<hybrid::pkgmgr::StepGenerateXml>();
       AddStep<tpk::pkgmgr::StepManifestAdjustment>();
-      AddStep<hybrid::configuration::StepMergeTpkConfig>();
+      AddStep<hybrid::configuration::StepMergeTpkConfig>(
+          hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT);
       AddStep<wgt::filesystem::StepCreateSymbolicLink>();
       AddStep<tpk::filesystem::StepCreateSymbolicLink>();
       AddStep<ci::security::StepRegisterTrustAnchor>(
@@ -375,7 +378,8 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
       AddStep<wgt::pkgmgr::StepGenerateXml>();
       AddStep<hybrid::pkgmgr::StepGenerateXml>();
       AddStep<tpk::pkgmgr::StepManifestAdjustment>();
-      AddStep<hybrid::configuration::StepMergeTpkConfig>();
+      AddStep<hybrid::configuration::StepMergeTpkConfig>(
+          hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT);
       AddStep<wgt::filesystem::StepCreateSymbolicLink>();
       AddStep<tpk::filesystem::StepCreateSymbolicLink>();
       AddStep<ci::pkgmgr::StepRegisterApplication>();
@@ -432,7 +436,8 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
       AddStep<wgt::pkgmgr::StepGenerateXml>();
       AddStep<hybrid::pkgmgr::StepGenerateXml>();
       AddStep<tpk::pkgmgr::StepManifestAdjustment>();
-      AddStep<hybrid::configuration::StepMergeTpkConfig>();
+      AddStep<hybrid::configuration::StepMergeTpkConfig>(
+          hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT);
       AddStep<wgt::filesystem::StepCreateSymbolicLink>();
       AddStep<tpk::filesystem::StepCreateSymbolicLink>();
       AddStep<ci::pkgmgr::StepUpdateApplication>();
@@ -472,7 +477,8 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
       AddStep<wgt::pkgmgr::StepGenerateXml>();
       AddStep<hybrid::pkgmgr::StepGenerateXml>();
       AddStep<tpk::pkgmgr::StepManifestAdjustment>();
-      AddStep<hybrid::configuration::StepMergeTpkConfig>();
+      AddStep<hybrid::configuration::StepMergeTpkConfig>(
+          hybrid::configuration::StepMergeTpkConfig::MergeType::OVERWRITE);
       AddStep<ci::pkgmgr::StepRegisterApplication>();
       AddStep<ci::security::StepRegisterTrustAnchor>(
           ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE);
@@ -513,7 +519,8 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
       AddStep<wgt::pkgmgr::StepGenerateXml>();
       AddStep<hybrid::pkgmgr::StepGenerateXml>();
       AddStep<tpk::pkgmgr::StepManifestAdjustment>();
-      AddStep<hybrid::configuration::StepMergeTpkConfig>();
+      AddStep<hybrid::configuration::StepMergeTpkConfig>(
+          hybrid::configuration::StepMergeTpkConfig::MergeType::OVERWRITE);
       AddStep<ci::pkgmgr::StepUpdateApplication>();
       AddStep<ci::security::StepRegisterTrustAnchor>(
           ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE);
@@ -535,7 +542,8 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
       AddStep<wgt::configuration::StepParse>(
           wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
       AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
-      AddStep<hybrid::configuration::StepMergeTpkConfig>();
+      AddStep<hybrid::configuration::StepMergeTpkConfig>(
+          hybrid::configuration::StepMergeTpkConfig::MergeType::OVERWRITE);
       AddStep<ci::configuration::StepParsePreload>();
       AddStep<ci::security::StepCheckSignature>();
       AddStep<ci::security::StepSaveSignature>();
@@ -564,7 +572,8 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
       AddStep<wgt::configuration::StepParse>(
           wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
       AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
-      AddStep<hybrid::configuration::StepMergeTpkConfig>();
+      AddStep<hybrid::configuration::StepMergeTpkConfig>(
+          hybrid::configuration::StepMergeTpkConfig::MergeType::OVERWRITE);
       AddStep<ci::configuration::StepParsePreload>();
       AddStep<ci::security::StepCheckSignature>();
       AddStep<ci::security::StepSaveSignature>();
@@ -647,7 +656,8 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
       AddStep<wgt::pkgmgr::StepGenerateXml>();
       AddStep<hybrid::pkgmgr::StepGenerateXml>();
       AddStep<tpk::pkgmgr::StepManifestAdjustment>();
-      AddStep<hybrid::configuration::StepMergeTpkConfig>();
+      AddStep<hybrid::configuration::StepMergeTpkConfig>(
+          hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT);
       AddStep<wgt::filesystem::StepCreateSymbolicLink>();
       AddStep<tpk::filesystem::StepCreateSymbolicLink>();
       AddStep<ci::pkgmgr::StepUpdateApplication>();
index 15d59c3..d63d003 100644 (file)
 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();
 
-  wgt_data->application =
-      g_list_concat(wgt_data->application, tpk_data->application);
-  tpk_data->application = nullptr;
+  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;
 }
 
index 2171d59..6491d34 100644 (file)
@@ -18,6 +18,14 @@ namespace configuration {
  */
 class StepMergeTpkConfig : public common_installer::Step {
  public:
+  enum class MergeType {
+    CONCAT,      // Concatenate configurations
+    OVERWRITE    // Overwrite one with others
+  };
+
+  explicit StepMergeTpkConfig(common_installer::InstallerContext* context,
+      MergeType type);
+
   using Step::Step;
 
   Status process() override;
@@ -25,6 +33,9 @@ class StepMergeTpkConfig : public common_installer::Step {
   Status undo() override { return Status::OK; }
   Status precheck() override { return Status::OK; }
 
+ private:
+  MergeType merge_type_;
+
   STEP_NAME(MergeTpkConfig)
 };