Fix for backup package directories 20/151720/3
authorDamian Pietruchowski <d.pietruchow@samsung.com>
Thu, 21 Sep 2017 15:07:46 +0000 (17:07 +0200)
committerJunghyun Yeon <jungh.yeon@samsung.com>
Mon, 30 Oct 2017 23:14:41 +0000 (23:14 +0000)
The problem was that content of the entries was copied to backup path.
This content should be copied to the same entry in backup path.

Change-Id: I915d53d3c99c534a047b7073aa570d6d2db88dd3
Signed-off-by: Damian Pietruchowski <d.pietruchow@samsung.com>
src/tpk/step/filesystem/step_tpk_prepare_package_directory.cc

index 5f137a4aede5b5d2683df5154a228c8b963e9e5a..55bd00b8b8630120bf487380aeb3015af867a078 100644 (file)
@@ -23,8 +23,10 @@ ci::Step::Status StepTpkPreparePackageDirectory::BackupDirectory(
     const std::string& entry, const bf::path& backup_path) {
   if (!bf::exists(context_->pkg_path.get() / entry))
     return Status::OK;
-  if (!ci::MoveDir(context_->pkg_path.get() / entry, backup_path,
-      ci::FSFlag::FS_MERGE_OVERWRITE | ci::FSFlag::FS_COMMIT_COPY_FILE)) {
+  if (!ci::MoveDir(context_->pkg_path.get() / entry, backup_path / entry,
+      ci::FSFlag::FS_MERGE_OVERWRITE |
+      ci::FSFlag::FS_COMMIT_COPY_FILE |
+      ci::FSFlag::FS_PRESERVE_OWNERSHIP_AND_PERMISSIONS)) {
     LOG(ERROR) << "Failed to backup file";
     return Status::APP_DIR_ERROR;
   }
@@ -141,7 +143,9 @@ ci::Step::Status StepTpkPreparePackageDirectory::undo() {
     if (!bf::exists(backupPath_ / entry))
       continue;
     ci::MoveDir(backupPath_ / entry, context_->pkg_path.get() / entry,
-        ci::FSFlag::FS_MERGE_OVERWRITE | ci::FSFlag::FS_COMMIT_COPY_FILE);
+        ci::FSFlag::FS_MERGE_OVERWRITE |
+        ci::FSFlag::FS_COMMIT_COPY_FILE |
+        ci::FSFlag::FS_PRESERVE_OWNERSHIP_AND_PERMISSIONS);
   }
   ci::RemoveAll(backupPath_);
   return Status::OK;