Package: add use.expand/expand_hidden attributes
authorZac Medico <zmedico@gentoo.org>
Mon, 27 Jun 2011 00:16:07 +0000 (17:16 -0700)
committerZac Medico <zmedico@gentoo.org>
Mon, 27 Jun 2011 00:16:07 +0000 (17:16 -0700)
This allows the merge list display to account for repository-level
USE_EXPAND and USE_EXPAND_HIDDEN settings (see bug #370693).

pym/_emerge/Package.py
pym/_emerge/resolver/output.py

index 593e0d3eb11c2cf2b7a246e2a888e13a9afba4ca..7a25638c83235217eafa17bf5b23595b987f76fb 100644 (file)
@@ -389,10 +389,13 @@ class Package(Task):
 
        class _use_class(object):
 
-               __slots__ = ("enabled", "_force", "_pkg", "_mask")
+               __slots__ = ("enabled", "_expand", "_expand_hidden",
+                       "_force", "_pkg", "_mask")
 
                def __init__(self, pkg, use_str):
                        self._pkg = pkg
+                       self._expand = None
+                       self._expand_hidden = None
                        self._force = None
                        self._mask = None
                        self.enabled = frozenset(use_str.split())
@@ -407,9 +410,25 @@ class Package(Task):
 
                def _init_force_mask(self):
                        pkgsettings = self._pkg._get_pkgsettings()
+                       self._expand = frozenset(
+                               pkgsettings.get("USE_EXPAND", "").lower().split())
+                       self._expand_hidden = frozenset(
+                               pkgsettings.get("USE_EXPAND_HIDDEN", "").lower().split())
                        self._force = pkgsettings.useforce
                        self._mask = pkgsettings.usemask
 
+               @property
+               def expand(self):
+                       if self._expand is None:
+                               self._init_force_mask()
+                       return self._expand
+
+               @property
+               def expand_hidden(self):
+                       if self._expand_hidden is None:
+                               self._init_force_mask()
+                       return self._expand_hidden
+
                @property
                def force(self):
                        if self._force is None:
index 6c3579f73c8a0ea8201c2dcdca922249b8ae9574..69a30ccd060ae86ec656e2d9d35afb94c920a7c3 100644 (file)
@@ -151,11 +151,8 @@ class Display(object):
 
                self.old_use = [flag for flag in self.old_use if flag in self.old_iuse]
 
-               self.use_expand = self.pkgsettings["USE_EXPAND"].lower().split()
-               self.use_expand.sort()
-               self.use_expand.reverse()
-               self.use_expand_hidden = \
-                       self.pkgsettings["USE_EXPAND_HIDDEN"].lower().split()
+               self.use_expand = pkg.use.expand
+               self.use_expand_hidden = pkg.use.expand_hidden
                return
 
        def include_mask_str(self):
@@ -253,10 +250,10 @@ class Display(object):
                old_iuse_map = self.map_to_use_expand(self.old_iuse)
                old_use_map = self.map_to_use_expand(self.old_use)
 
-               self.use_expand.sort()
-               self.use_expand.insert(0, "USE")
+               use_expand = sorted(self.use_expand)
+               use_expand.insert(0, "USE")
 
-               for key in self.use_expand:
+               for key in use_expand:
                        if key in self.use_expand_hidden:
                                continue
                        self.verboseadd += _create_use_string(self.conf, key.upper(),