summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2013-01-19 14:01:26 -0800
committerZac Medico <zmedico@gentoo.org>2013-01-19 14:01:26 -0800
commit00c9dd27618d20acdb9a700fbef09e292c329fe3 (patch)
treea1cee13e547c7d527966e7364411bd50580a5b66
parenteb628bb18c26c6a6aaf55cfa5ba69d54c5aac0ce (diff)
downloadportage-00c9dd27618d20acdb9a700fbef09e292c329fe3.tar.gz
portage-00c9dd27618d20acdb9a700fbef09e292c329fe3.tar.bz2
portage-00c9dd27618d20acdb9a700fbef09e292c329fe3.zip
Fix stable mask logic for repoman.
For repoman, if the package has an effective stable keyword that intersects with the effective ACCEPT_KEYWORDS for the current profile, then consider it stable.
-rw-r--r--pym/portage/package/ebuild/_config/KeywordsManager.py28
-rw-r--r--pym/portage/versions.py5
2 files changed, 23 insertions, 10 deletions
diff --git a/pym/portage/package/ebuild/_config/KeywordsManager.py b/pym/portage/package/ebuild/_config/KeywordsManager.py
index d4778899c..3e029c381 100644
--- a/pym/portage/package/ebuild/_config/KeywordsManager.py
+++ b/pym/portage/package/ebuild/_config/KeywordsManager.py
@@ -111,15 +111,25 @@ class KeywordsManager(object):
if self._getMissingKeywords(pkg, pgroups, mygroups):
return False
- # If replacing all keywords with unstable variants would mask the
- # package, then it's considered stable.
- unstable = []
- for kw in mygroups:
- if kw[:1] != "~":
- kw = "~" + kw
- unstable.append(kw)
-
- return bool(self._getMissingKeywords(pkg, pgroups, set(unstable)))
+ if pkg.cpv._settings.local_config:
+ # If replacing all keywords with unstable variants would mask the
+ # package, then it's considered stable.
+ unstable = []
+ for kw in mygroups:
+ if kw[:1] != "~":
+ kw = "~" + kw
+ unstable.append(kw)
+
+ return bool(self._getMissingKeywords(pkg, pgroups, set(unstable)))
+ else:
+ # For repoman, if the package has an effective stable keyword that
+ # intersects with the effective ACCEPT_KEYWORDS for the current
+ # profile, then consider it stable.
+ for kw in pgroups:
+ if kw[:1] != "~":
+ if kw in mygroups:
+ return True
+ return False
def getMissingKeywords(self,
cpv,
diff --git a/pym/portage/versions.py b/pym/portage/versions.py
index d78873f9e..1dd2ff359 100644
--- a/pym/portage/versions.py
+++ b/pym/portage/versions.py
@@ -409,7 +409,10 @@ class _pkg_str(_unicode):
except AttributeError:
raise AttributeError('stable')
stable = settings._isStable(self)
- self.__dict__['_stable'] = stable
+ if settings.local_config:
+ # For repoman, don't cache this value, since
+ # it needs to be re-computed for each profile.
+ self.__dict__['_stable'] = stable
return stable
def pkgsplit(mypkg, silent=1, eapi=None):