From b32efe2d1eb1a9a7c52f3ec18abd3d5db4ab8767 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= Date: Thu, 8 Jul 2010 11:06:28 +0200 Subject: Limit repository-wide dbentry updates. Update dbentries only when the repository the package comes from matches the repository update comes from. --- pym/portage/_global_updates.py | 4 ++-- pym/portage/dbapi/__init__.py | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/pym/portage/_global_updates.py b/pym/portage/_global_updates.py index a63e68af9..b287654c0 100644 --- a/pym/portage/_global_updates.py +++ b/pym/portage/_global_updates.py @@ -154,12 +154,12 @@ def _global_updates(trees, prev_mtimes): def onUpdate(maxval, curval): if curval > 0: writemsg_stdout("#") - vardb.update_ents(myupd, onUpdate=onUpdate) + vardb.update_ents(myupd, onUpdate=onUpdate, repo=repo_name) if bindb: def onUpdate(maxval, curval): if curval > 0: writemsg_stdout("*") - bindb.update_ents(myupd, onUpdate=onUpdate) + bindb.update_ents(myupd, onUpdate=onUpdate, repo=repo_name) else: do_upgrade_packagesmessage = 1 diff --git a/pym/portage/dbapi/__init__.py b/pym/portage/dbapi/__init__.py index c2e7989b8..88af46ba8 100644 --- a/pym/portage/dbapi/__init__.py +++ b/pym/portage/dbapi/__init__.py @@ -197,7 +197,7 @@ class dbapi(object): else: writemsg("!!! Invalid db entry: %s\n" % mypath, noiselevel=-1) - def update_ents(self, updates, onProgress=None, onUpdate=None): + def update_ents(self, updates, onProgress=None, onUpdate=None, repo=None): """ Update metadata of all packages for package moves. @param updates: A list of move commands @@ -208,6 +208,8 @@ class dbapi(object): for packages that are modified by updates. @type onUpdate: a callable that takes 2 integer arguments: maxval and curval + @param repo: Name of the repository which packages should be updated + @type repo: string """ cpv_all = self.cpv_all() cpv_all.sort() @@ -221,6 +223,8 @@ class dbapi(object): if onProgress: onProgress(maxval, 0) for i, cpv in enumerate(cpv_all): + if repo and aux_get(cpv, ['repository'])[0] != repo: + continue metadata = dict(zip(update_keys, aux_get(cpv, update_keys))) metadata_updates = update_dbentries(updates, metadata) if metadata_updates: -- cgit v1.2.3-1-g7c22