summaryrefslogtreecommitdiffstats
path: root/pym/portage/getbinpkg.py
diff options
context:
space:
mode:
Diffstat (limited to 'pym/portage/getbinpkg.py')
-rw-r--r--pym/portage/getbinpkg.py33
1 files changed, 27 insertions, 6 deletions
diff --git a/pym/portage/getbinpkg.py b/pym/portage/getbinpkg.py
index 75f3a352a..497194d67 100644
--- a/pym/portage/getbinpkg.py
+++ b/pym/portage/getbinpkg.py
@@ -4,6 +4,7 @@
# $Id$
from portage.output import red, yellow, green
+from portage.cache.mappings import slot_dict_class
import portage.xpak
import HTMLParser
import sys
@@ -680,8 +681,17 @@ def _cmp_cpv(d1, d2):
class PackageIndex(object):
- def __init__(self, default_header_data=None, default_pkg_data=None,
- inherited_keys=None, translated_keys=None):
+ def __init__(self,
+ allowed_pkg_keys=None,
+ default_header_data=None,
+ default_pkg_data=None,
+ inherited_keys=None,
+ translated_keys=None):
+
+ self._pkg_slot_dict = None
+ if allowed_pkg_keys is not None:
+ self._pkg_slot_dict = slot_dict_class(allowed_pkg_keys)
+
self._default_header_data = default_header_data
self._default_pkg_data = default_pkg_data
self._inherited_keys = inherited_keys
@@ -696,8 +706,15 @@ class PackageIndex(object):
self.packages = []
self.modified = True
- def _readpkgindex(self, pkgfile):
- d = {}
+ def _readpkgindex(self, pkgfile, pkg_entry=True):
+
+ allowed_keys = None
+ if self._pkg_slot_dict is None or not pkg_entry:
+ d = {}
+ else:
+ d = self._pkg_slot_dict()
+ allowed_keys = d.allowed_keys
+
for line in pkgfile:
line = line.rstrip("\n")
if not line:
@@ -708,7 +725,11 @@ class PackageIndex(object):
k, v = line
if v:
v = v[1:]
- d[self._read_translation_map.get(k, k)] = v
+ k = self._read_translation_map.get(k, k)
+ if allowed_keys is not None and \
+ k not in allowed_keys:
+ continue
+ d[k] = v
return d
def _writepkgindex(self, pkgfile, items):
@@ -722,7 +743,7 @@ class PackageIndex(object):
self.readBody(pkgfile)
def readHeader(self, pkgfile):
- self.header.update(self._readpkgindex(pkgfile))
+ self.header.update(self._readpkgindex(pkgfile, pkg_entry=False))
def readBody(self, pkgfile):
while True: