External installation 79/61679/13
authorTomasz Iwanek <t.iwanek@samsung.com>
Wed, 9 Mar 2016 16:18:58 +0000 (17:18 +0100)
committerjongmyeong ko <jongmyeong.ko@samsung.com>
Tue, 31 May 2016 10:54:36 +0000 (03:54 -0700)
This patch implements installation of package in external sd card storage.
Tpk and wgt applications may declare preference of being installed on external
storage. If so and space requirement is satisified then their resource directory
is installed in sd card with use of app2sd API.

Following patchsets should be submitted together:
 - https://review.tizen.org/gerrit/61678
 - https://review.tizen.org/gerrit/61679
 - https://review.tizen.org/gerrit/61680

Verify by:
 - running smoke tests,
 - running installation, update, deinstallation for package that prefers external
   installation (SD card must be inserted).

Requires:
 - https://review.tizen.org/gerrit/#/c/64796/

Change-Id: I174c14ddfb48dc2bc1a5935c3b4799abd7f26332

src/hybrid/hybrid_backend_data.h
src/hybrid/hybrid_installer.cc
src/wgt/CMakeLists.txt
src/wgt/wgt_installer.cc

index 7815a12..9cc98c9 100644 (file)
@@ -19,7 +19,7 @@ namespace hybrid {
 
 class HybridBackendData : public wgt::WgtBackendData {
  public:
-  HybridBackendData() { }
+  HybridBackendData() : tpk_manifest_data(nullptr) { }
   ~HybridBackendData() override {
     if (tpk_manifest_data.get())
       pkgmgr_parser_free_manifest_xml(tpk_manifest_data.get());
index dd56988..6dc43ca 100644 (file)
@@ -11,6 +11,7 @@
 #include <common/step/configuration/step_configure.h>
 #include <common/step/configuration/step_fail.h>
 #include <common/step/configuration/step_parse_manifest.h>
+#include <common/step/filesystem/step_acquire_external_storage.h>
 #include <common/step/filesystem/step_clear_data.h>
 #include <common/step/filesystem/step_copy.h>
 #include <common/step/filesystem/step_copy_storage_directories.h>
@@ -22,6 +23,7 @@
 #include <common/step/filesystem/step_recover_files.h>
 #include <common/step/filesystem/step_recover_icons.h>
 #include <common/step/filesystem/step_recover_manifest.h>
+#include <common/step/filesystem/step_recover_external_storage.h>
 #include <common/step/filesystem/step_recover_storage_directories.h>
 #include <common/step/filesystem/step_remove_files.h>
 #include <common/step/filesystem/step_remove_icons.h>
@@ -61,7 +63,6 @@
 #include "hybrid/step/configuration/step_stash_tpk_config.h"
 #include "hybrid/step/encryption/step_encrypt_resources.h"
 #include "wgt/step/configuration/step_parse.h"
-#include "wgt/step/configuration/step_parse_recovery.h"
 #include "wgt/step/encryption/step_remove_encryption_data.h"
 #include "wgt/step/filesystem/step_copy_preview_icons.h"
 #include "wgt/step/filesystem/step_create_symbolic_link.h"
@@ -100,6 +101,7 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
       AddStep<wgt::security::StepCheckWgtImePrivilege>();
       AddStep<hybrid::encryption::StepEncryptResources>();
       AddStep<ci::security::StepRollbackInstallationSecurity>();
+      AddStep<ci::filesystem::StepAcquireExternalStorage>();
       AddStep<ci::filesystem::StepCopy>();
       AddStep<ci::filesystem::StepCopyTep>();
       AddStep<tpk::filesystem::StepTpkPatchIcons>();
@@ -142,6 +144,7 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
       AddStep<ci::pkgmgr::StepKillApps>();
       AddStep<ci::backup::StepBackupManifest>();
       AddStep<ci::backup::StepBackupIcons>();
+      AddStep<ci::filesystem::StepAcquireExternalStorage>();
       AddStep<ci::backup::StepCopyBackup>();
       AddStep<ci::filesystem::StepCopyTep>();
       AddStep<ci::pkgmgr::StepUpdateTep>();
@@ -168,6 +171,7 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
       AddStep<ci::pkgmgr::StepRunParserPlugin>(
           ci::Plugin::ActionType::Uninstall);
       AddStep<ci::pkgmgr::StepKillApps>();
+      AddStep<ci::filesystem::StepAcquireExternalStorage>();
       AddStep<ci::filesystem::StepRemovePerUserStorageDirectories>();
       AddStep<ci::pkgmgr::StepUnregisterApplication>();
       AddStep<ci::security::StepRollbackDeinstallationSecurity>();
@@ -208,6 +212,7 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
       AddStep<ci::pkgmgr::StepKillApps>();
       AddStep<ci::backup::StepBackupManifest>();
       AddStep<ci::backup::StepBackupIcons>();
+      AddStep<ci::filesystem::StepAcquireExternalStorage>();
       AddStep<ci::backup::StepCopyBackup>();
       AddStep<tpk::filesystem::StepTpkPatchIcons>();
       AddStep<wgt::filesystem::StepWgtPatchIcons>();
@@ -229,19 +234,20 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
       AddStep<ci::configuration::StepParseManifest>(
           ci::configuration::StepParseManifest::ManifestLocation::RECOVERY,
           ci::configuration::StepParseManifest::StoreLocation::NORMAL);
-      AddStep<hybrid::configuration::StepStashTpkConfig>();
-      AddStep<wgt::configuration::StepParseRecovery>();
-      AddStep<hybrid::configuration::StepMergeTpkConfig>();
       AddStep<ci::pkgmgr::StepRecoverApplication>();
       AddStep<ci::filesystem::StepRemoveTemporaryDirectory>();
       AddStep<ci::filesystem::StepRecoverIcons>();
       AddStep<ci::filesystem::StepRecoverManifest>();
+      AddStep<ci::filesystem::StepRecoverExternalStorage>();
       AddStep<ci::filesystem::StepRecoverStorageDirectories>();
       AddStep<ci::filesystem::StepRecoverFiles>();
       AddStep<ci::security::StepRecoverSecurity>();
       break;
     case ci::RequestType::Clear:
       AddStep<ci::configuration::StepConfigure>(pkgmgr_);
+      AddStep<ci::configuration::StepParseManifest>(
+          ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
+          ci::configuration::StepParseManifest::StoreLocation::NORMAL);
       AddStep<ci::filesystem::StepClearData>();
       break;
     case ci::RequestType::MountInstall:
index c160de9..0b4c6d9 100644 (file)
@@ -2,7 +2,6 @@
 SET(SRCS
   step/common/privileges.cc
   step/configuration/step_parse.cc
-  step/configuration/step_parse_recovery.cc
   step/encryption/step_encrypt_resources.cc
   step/encryption/step_remove_encryption_data.cc
   step/filesystem/step_copy_preview_icons.cc
index ffb2d59..f15ccf5 100644 (file)
@@ -13,6 +13,7 @@
 #include <common/step/configuration/step_configure.h>
 #include <common/step/configuration/step_fail.h>
 #include <common/step/configuration/step_parse_manifest.h>
+#include <common/step/filesystem/step_acquire_external_storage.h>
 #include <common/step/filesystem/step_clear_data.h>
 #include <common/step/filesystem/step_copy.h>
 #include <common/step/filesystem/step_copy_storage_directories.h>
@@ -24,6 +25,7 @@
 #include <common/step/filesystem/step_recover_files.h>
 #include <common/step/filesystem/step_recover_icons.h>
 #include <common/step/filesystem/step_recover_manifest.h>
+#include <common/step/filesystem/step_recover_external_storage.h>
 #include <common/step/filesystem/step_recover_storage_directories.h>
 #include <common/step/filesystem/step_remove_files.h>
 #include <common/step/filesystem/step_remove_icons.h>
@@ -59,7 +61,6 @@
 #include <common/step/rds/step_rds_parse.h>
 
 #include "wgt/step/configuration/step_parse.h"
-#include "wgt/step/configuration/step_parse_recovery.h"
 #include "wgt/step/encryption/step_encrypt_resources.h"
 #include "wgt/step/encryption/step_remove_encryption_data.h"
 #include "wgt/step/filesystem/step_copy_preview_icons.h"
@@ -102,6 +103,7 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr)
       AddStep<wgt::encryption::StepEncryptResources>();
       AddStep<wgt::filesystem::StepWgtResourceDirectory>();
       AddStep<ci::security::StepRollbackInstallationSecurity>();
+      AddStep<ci::filesystem::StepAcquireExternalStorage>();
       AddStep<ci::filesystem::StepCopy>();
       AddStep<ci::filesystem::StepCopyTep>();
       AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
@@ -139,6 +141,7 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr)
       AddStep<ci::pkgmgr::StepKillApps>();
       AddStep<ci::backup::StepBackupManifest>();
       AddStep<ci::backup::StepBackupIcons>();
+      AddStep<ci::filesystem::StepAcquireExternalStorage>();
       AddStep<ci::backup::StepCopyBackup>();
       AddStep<ci::filesystem::StepCopyTep>();
       AddStep<ci::pkgmgr::StepUpdateTep>();
@@ -162,6 +165,7 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr)
           ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
           ci::configuration::StepParseManifest::StoreLocation::NORMAL);
       AddStep<ci::pkgmgr::StepKillApps>();
+      AddStep<ci::filesystem::StepAcquireExternalStorage>();
       AddStep<ci::pkgmgr::StepRunParserPlugin>(
           ci::Plugin::ActionType::Uninstall);
       AddStep<ci::filesystem::StepRemovePerUserStorageDirectories>();
@@ -184,6 +188,7 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr)
           ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
           ci::configuration::StepParseManifest::StoreLocation::BACKUP);
       AddStep<ci::configuration::StepBlockCrossUpdate>();
+      AddStep<ci::filesystem::StepAcquireExternalStorage>();
       AddStep<ci::rds::StepRDSParse>();
       AddStep<wgt::rds::StepWgtRDSModify>();
       AddStep<ci::security::StepUpdateSecurity>();
@@ -215,6 +220,7 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr)
       AddStep<ci::pkgmgr::StepKillApps>();
       AddStep<ci::backup::StepBackupManifest>();
       AddStep<ci::backup::StepBackupIcons>();
+      AddStep<ci::filesystem::StepAcquireExternalStorage>();
       AddStep<ci::backup::StepCopyBackup>();
       AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
       AddStep<wgt::filesystem::StepCreateSymbolicLink>();
@@ -232,11 +238,14 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr)
     case ci::RequestType::Recovery: {
       AddStep<ci::configuration::StepConfigure>(pkgmgr_);
       AddStep<ci::recovery::StepOpenRecoveryFile>();
-      AddStep<wgt::configuration::StepParseRecovery>();
+      AddStep<ci::configuration::StepParseManifest>(
+          ci::configuration::StepParseManifest::ManifestLocation::RECOVERY,
+          ci::configuration::StepParseManifest::StoreLocation::NORMAL);
       AddStep<ci::pkgmgr::StepRecoverApplication>();
       AddStep<ci::filesystem::StepRemoveTemporaryDirectory>();
       AddStep<ci::filesystem::StepRecoverIcons>();
       AddStep<ci::filesystem::StepRecoverManifest>();
+      AddStep<ci::filesystem::StepRecoverExternalStorage>();
       AddStep<ci::filesystem::StepRecoverStorageDirectories>();
       AddStep<ci::filesystem::StepRecoverFiles>();
       AddStep<ci::security::StepRecoverSecurity>();
@@ -244,6 +253,9 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr)
     }
     case ci::RequestType::Clear: {
       AddStep<ci::configuration::StepConfigure>(pkgmgr_);
+      AddStep<ci::configuration::StepParseManifest>(
+          ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
+          ci::configuration::StepParseManifest::StoreLocation::NORMAL);
       AddStep<ci::filesystem::StepClearData>();
       break;
     }