Bug #219369 - Enable automatic upgrage or downgrade to a version
authorZac Medico <zmedico@gentoo.org>
Sun, 27 Apr 2008 19:56:50 +0000 (19:56 -0000)
committerZac Medico <zmedico@gentoo.org>
Sun, 27 Apr 2008 19:56:50 +0000 (19:56 -0000)
with visible KEYWORDS when the installed version is masked by
KEYWORDS, but never reinstall the same exact version only due to
a KEYWORDS mask. (trunk r10001)

svn path=/main/branches/2.1.2/; revision=10002

bin/emerge

index 8fddb1b1c68fcf9fbfa219f5bb8691c1dfb10e6b..d21b444ee89731cadf0366b4ad40e12df9bb5c93 100755 (executable)
@@ -2942,6 +2942,26 @@ class depgraph(object):
                                                                continue
                                                except portage_exception.InvalidDependString:
                                                        continue
+
+                                               # Enable upgrage or downgrade to a version
+                                               # with visible KEYWORDS when the installed
+                                               # version is masked by KEYWORDS, but never
+                                               # reinstall the same exact version only due
+                                               # to a KEYWORDS mask.
+                                               if installed and matched_packages and \
+                                                       pkgsettings._getMissingKeywords(
+                                                       pkg.cpv, pkg.metadata):
+                                                       different_version = None
+                                                       for avail_pkg in matched_packages:
+                                                               if not portage_dep.cpvequal(
+                                                                       pkg.cpv, avail_pkg.cpv):
+                                                                       different_version = avail_pkg
+                                                                       break
+                                                       if different_version is not None:
+                                                               # Only reinstall for KEYWORDS if
+                                                               # it's not the same version.
+                                                               continue
+
                                        if not built and not calculated_use:
                                                # This is avoided whenever possible because
                                                # it's expensive.