Add version constraint for pkg upgrade in platform update 51/258351/2
authorJunghyun Yeon <jungh.yeon@samsung.com>
Fri, 14 May 2021 02:40:50 +0000 (11:40 +0900)
committerJunghyun Yeon <jungh.yeon@samsung.com>
Fri, 14 May 2021 04:37:23 +0000 (13:37 +0900)
Installer will not be invoked for packages
which are version of old and new are same.

Change-Id: I98ba2fda168b9586c35bf3a9075c5d502b76b3dc
Signed-off-by: Junghyun Yeon <jungh.yeon@samsung.com>
src/pkg_upgrade/src/pkg_upgrader_factory.cc

index 85c15a6f27d70abd7c2ff5325de3e81e083eaac8..da59dcdef65c6290cf6f1b90c320d22be1af6c0b 100644 (file)
@@ -43,6 +43,17 @@ list<unique_ptr<PkgUpgrader>> PkgUpgraderFactory::Merge(
     const auto* old_pkg = FindPkgById(old_pkgs, new_pkg.GetId());
     if (old_pkg != nullptr) {
       // UPDATE
+      pkgmgrinfo_version_compare_type result;
+      if (pkgmgrinfo_compare_package_version(
+              old_pkg->GetVersion().c_str(),
+              new_pkg.GetVersion().c_str(),
+              &result) != PMINFO_R_OK)
+        continue;
+
+      if (old_pkg->IsReadOnly() == new_pkg.IsReadOnly() &&
+          result == PMINFO_VERSION_SAME)
+        continue;
+
       if (old_pkg->IsReadOnly() && new_pkg.IsReadOnly()) {
         // RO to RO
         pkgs.emplace_back(new SimpleUpgrader(new_pkg, PkgOperation::UPDATE));