Make fixpackages less noisy by only generting '*' characters for packages
that are modified by updates.

svn path=/main/trunk/; revision=12157
diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py
index 6ebfae4..c70b77e 100644
--- a/pym/portage/__init__.py
+++ b/pym/portage/__init__.py
@@ -7376,11 +7376,12 @@
 		# We gotta do the brute force updates for these now.
 		if mysettings["PORTAGE_CALLER"] == "fixpackages" or \
 		"fixpackages" in mysettings.features:
-			def onProgress(maxval, curval):
-				writemsg_stdout("*")
-			vardb.update_ents(myupd, onProgress=onProgress)
+			def onUpdate(maxval, curval):
+				if curval > 0:
+					writemsg_stdout("*")
+			vardb.update_ents(myupd, onUpdate=onUpdate)
 			if bindb:
-				bindb.update_ents(myupd, onProgress=onProgress)
+				bindb.update_ents(myupd, onUpdate=onUpdate)
 		else:
 			do_upgrade_packagesmessage = 1
 
diff --git a/pym/portage/dbapi/__init__.py b/pym/portage/dbapi/__init__.py
index 2bdb3e7..435ffeb 100644
--- a/pym/portage/dbapi/__init__.py
+++ b/pym/portage/dbapi/__init__.py
@@ -200,13 +200,17 @@
 		else:
 			writemsg("!!! Invalid db entry: %s\n" % mypath, noiselevel=-1)
 
-	def update_ents(self, updates, onProgress=None):
+	def update_ents(self, updates, onProgress=None, onUpdate=None):
 		"""
 		Update metadata of all packages for package moves.
 		@param updates: A list of move commands
 		@type updates: List
 		@param onProgress: A progress callback function
 		@type onProgress: a callable that takes 2 integer arguments: maxval and curval
+		@param onUpdate: A progress callback function called only
+			for packages that are modified by updates.
+		@type onUpdate: a callable that takes 2 integer arguments:
+			maxval and curval
 		"""
 		cpv_all = self.cpv_all()
 		cpv_all.sort()
@@ -216,6 +220,8 @@
 		update_keys = ["DEPEND", "RDEPEND", "PDEPEND", "PROVIDE"]
 		from itertools import izip
 		from portage.update import update_dbentries
+		if onUpdate:
+			onUpdate(maxval, 0)
 		if onProgress:
 			onProgress(maxval, 0)
 		for i, cpv in enumerate(cpv_all):
@@ -223,6 +229,8 @@
 			metadata_updates = update_dbentries(updates, metadata)
 			if metadata_updates:
 				aux_update(cpv, metadata_updates)
+				if onUpdate:
+					onUpdate(maxval, i+1)
 			if onProgress:
 				onProgress(maxval, i+1)