External installation 78/61678/12
authorTomasz Iwanek <t.iwanek@samsung.com>
Wed, 9 Mar 2016 12:22:08 +0000 (13:22 +0100)
committerjongmyeong ko <jongmyeong.ko@samsung.com>
Tue, 31 May 2016 10:54:10 +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: I7ab275d4bb668dbd41945bbb6b22b098dab53a75

src/tpk/tpk_installer.cc

index d6b301e65cc4bc1ecac17496dee7c607eddacecd..699572d0c805a089f7fc992f6b07f80a2a509b8f 100644 (file)
@@ -9,6 +9,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>
@@ -20,6 +21,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>
@@ -132,6 +134,7 @@ void TpkInstaller::InstallSteps() {
   AddStep<ci::security::StepCheckSignature>();
   AddStep<ci::security::StepPrivilegeCompatibility>();
   AddStep<tpk::security::StepCheckTpkBackgroundCategory>();
+  AddStep<ci::filesystem::StepAcquireExternalStorage>();
   AddStep<ci::security::StepRollbackInstallationSecurity>();
   AddStep<ci::filesystem::StepCopy>();
   AddStep<ci::filesystem::StepCopyTep>();
@@ -167,6 +170,7 @@ void TpkInstaller::UpdateSteps() {
   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>();
@@ -191,6 +195,7 @@ void TpkInstaller::UninstallSteps() {
   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>();
@@ -220,6 +225,7 @@ void TpkInstaller::ReinstallSteps() {
   AddStep<ci::pkgmgr::StepKillApps>();
   AddStep<ci::backup::StepBackupManifest>();
   AddStep<ci::backup::StepBackupIcons>();
+  AddStep<ci::filesystem::StepAcquireExternalStorage>();
   AddStep<ci::rds::StepRDSParse>();
   AddStep<tpk::rds::StepTpkRDSModify>();
   AddStep<tpk::filesystem::StepCreateSymbolicLink>();
@@ -251,6 +257,7 @@ void TpkInstaller::DeltaSteps() {
   AddStep<ci::pkgmgr::StepKillApps>();
   AddStep<ci::backup::StepBackupManifest>();
   AddStep<ci::backup::StepBackupIcons>();
+  AddStep<ci::filesystem::StepAcquireExternalStorage>();
   AddStep<ci::backup::StepCopyBackup>();
   AddStep<ci::filesystem::StepCopyStorageDirectories>();
   AddStep<tpk::filesystem::StepCreateSymbolicLink>();
@@ -272,6 +279,7 @@ void TpkInstaller::RecoverySteps() {
   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>();
@@ -288,6 +296,7 @@ void TpkInstaller::MountInstallSteps() {
   AddStep<ci::security::StepPrivilegeCompatibility>();
   AddStep<tpk::security::StepCheckTpkBackgroundCategory>();
   AddStep<ci::security::StepRollbackInstallationSecurity>();
+  AddStep<ci::filesystem::StepAcquireExternalStorage>();
   AddStep<ci::mount::StepMountInstall>();
   AddStep<tpk::filesystem::StepTpkPreparePackageDirectory>();
   AddStep<ci::filesystem::StepCopyTep>();
@@ -323,6 +332,7 @@ void TpkInstaller::MountUpdateSteps() {
   AddStep<ci::pkgmgr::StepKillApps>();
   AddStep<ci::backup::StepBackupManifest>();
   AddStep<ci::backup::StepBackupIcons>();
+  AddStep<ci::filesystem::StepAcquireExternalStorage>();
   AddStep<ci::mount::StepMountUpdate>();
   AddStep<tpk::filesystem::StepTpkPreparePackageDirectory>();
   AddStep<ci::filesystem::StepCopyTep>();
@@ -340,10 +350,11 @@ void TpkInstaller::MountUpdateSteps() {
 
 void TpkInstaller::ManifestDirectInstallSteps() {
   AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<tpk::filesystem::StepCheckPkgDirPath>();
   AddStep<ci::configuration::StepParseManifest>(
       ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
       ci::configuration::StepParseManifest::StoreLocation::NORMAL);
+  AddStep<ci::filesystem::StepAcquireExternalStorage>();
+  AddStep<tpk::filesystem::StepCheckPkgDirPath>();
   AddStep<tpk::configuration::StepParsePreload>();
   AddStep<tpk::pkgmgr::StepManifestAdjustment>();
   AddStep<ci::security::StepCheckSignature>();
@@ -364,6 +375,7 @@ void TpkInstaller::ManifestDirectUpdateSteps() {
   AddStep<ci::configuration::StepParseManifest>(
       ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
       ci::configuration::StepParseManifest::StoreLocation::NORMAL);
+  AddStep<ci::filesystem::StepAcquireExternalStorage>();
   AddStep<tpk::configuration::StepParsePreload>();
   AddStep<tpk::pkgmgr::StepManifestAdjustment>();
   AddStep<ci::security::StepCheckSignature>();
@@ -381,6 +393,10 @@ void TpkInstaller::ManifestDirectUpdateSteps() {
 
 void TpkInstaller::ClearSteps() {
   AddStep<ci::configuration::StepConfigure>(pkgmgr_);
+  AddStep<ci::configuration::StepParseManifest>(
+      ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
+      ci::configuration::StepParseManifest::StoreLocation::NORMAL);
+  AddStep<ci::filesystem::StepAcquireExternalStorage>();
   AddStep<ci::filesystem::StepClearData>();
 }