diff options
author | Zac Medico <zmedico@gentoo.org> | 2012-11-13 23:08:05 -0800 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2012-11-13 23:08:05 -0800 |
commit | 0b4e6c27e87e57fac09fa28d3ed1320cb6a83ad9 (patch) | |
tree | 3d33af8a44400e2a9225844cf25a985249bfb038 /pym/portage/dbapi | |
parent | 118db4184de67450ec7118f1607b3f8c8ed1ec9e (diff) | |
download | portage-0b4e6c27e87e57fac09fa28d3ed1320cb6a83ad9.tar.gz portage-0b4e6c27e87e57fac09fa28d3ed1320cb6a83ad9.tar.bz2 portage-0b4e6c27e87e57fac09fa28d3ed1320cb6a83ad9.zip |
update_dbentry: add parent arg for bug #367215
Diffstat (limited to 'pym/portage/dbapi')
-rw-r--r-- | pym/portage/dbapi/__init__.py | 14 | ||||
-rw-r--r-- | pym/portage/dbapi/bintree.py | 2 | ||||
-rw-r--r-- | pym/portage/dbapi/vartree.py | 2 |
3 files changed, 11 insertions, 7 deletions
diff --git a/pym/portage/dbapi/__init__.py b/pym/portage/dbapi/__init__.py index dbba22cd7..c6bdbc77a 100644 --- a/pym/portage/dbapi/__init__.py +++ b/pym/portage/dbapi/__init__.py @@ -291,7 +291,8 @@ class dbapi(object): maxval = len(cpv_all) aux_get = self.aux_get aux_update = self.aux_update - meta_keys = Package._dep_keys + ("EAPI", "PROVIDE", "repository") + update_keys = Package._dep_keys + ("PROVIDE",) + meta_keys = update_keys + self._pkg_str_aux_keys repo_dict = None if isinstance(updates, dict): repo_dict = updates @@ -301,13 +302,16 @@ class dbapi(object): onProgress(maxval, 0) for i, cpv in enumerate(cpv_all): metadata = dict(zip(meta_keys, aux_get(cpv, meta_keys))) - eapi = metadata.pop('EAPI') - repo = metadata.pop('repository') + try: + pkg = _pkg_str(cpv, metadata=metadata) + except InvalidData: + continue + metadata = dict((k, metadata[k]) for k in update_keys) if repo_dict is None: updates_list = updates else: try: - updates_list = repo_dict[repo] + updates_list = repo_dict[pkg.repo] except KeyError: try: updates_list = repo_dict['DEFAULT'] @@ -318,7 +322,7 @@ class dbapi(object): continue metadata_updates = \ - portage.update_dbentries(updates_list, metadata, eapi=eapi) + portage.update_dbentries(updates_list, metadata, parent=pkg) if metadata_updates: aux_update(cpv, metadata_updates) if onUpdate: diff --git a/pym/portage/dbapi/bintree.py b/pym/portage/dbapi/bintree.py index 0cc46268c..2203aafda 100644 --- a/pym/portage/dbapi/bintree.py +++ b/pym/portage/dbapi/bintree.py @@ -425,7 +425,7 @@ class binarytree(object): moves += 1 mytbz2 = portage.xpak.tbz2(tbz2path) mydata = mytbz2.get_data() - updated_items = update_dbentries([mylist], mydata, eapi=mycpv.eapi) + updated_items = update_dbentries([mylist], mydata, parent=mycpv) mydata.update(updated_items) mydata[b'PF'] = \ _unicode_encode(mynewpkg + "\n", diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py index 8d908fcf3..27e204e04 100644 --- a/pym/portage/dbapi/vartree.py +++ b/pym/portage/dbapi/vartree.py @@ -364,7 +364,7 @@ class vardbapi(dbapi): del e write_atomic(os.path.join(newpath, "PF"), new_pf+"\n") write_atomic(os.path.join(newpath, "CATEGORY"), mynewcat+"\n") - fixdbentries([mylist], newpath, eapi=mycpv.eapi) + fixdbentries([mylist], newpath, parent=mycpv) return moves def cp_list(self, mycp, use_cache=1): |