From: Michał Górny Date: Thu, 8 Jul 2010 09:06:28 +0000 (+0200) Subject: Limit repository-wide dbentry updates. X-Git-Tag: v2.2_rc68~441 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=b32efe2d1eb1a9a7c52f3ec18abd3d5db4ab8767;p=portage.git Limit repository-wide dbentry updates. Update dbentries only when the repository the package comes from matches the repository update comes from. --- 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: