public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Zac Medico" <zmedico@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/portage:master commit in: pym/_emerge/resolver/
Date: Wed, 27 Feb 2013 23:39:49 +0000 (UTC)	[thread overview]
Message-ID: <1362008373.25c7d335991f9ca7a60b2fbf091f553419a75296.zmedico@gentoo> (raw)

commit:     25c7d335991f9ca7a60b2fbf091f553419a75296
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Wed Feb 27 23:39:33 2013 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Wed Feb 27 23:39:33 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=25c7d335

Display: eliminate duplicate vardb.match() calls

---
 pym/_emerge/resolver/output.py         |   37 ++++++++++++++++---------------
 pym/_emerge/resolver/output_helpers.py |    3 +-
 2 files changed, 21 insertions(+), 19 deletions(-)

diff --git a/pym/_emerge/resolver/output.py b/pym/_emerge/resolver/output.py
index 6aeadee..335cf27 100644
--- a/pym/_emerge/resolver/output.py
+++ b/pym/_emerge/resolver/output.py
@@ -116,12 +116,10 @@ class Display(object):
 		else:
 			self.blockers.append(addl)
 
-	def _display_use(self, pkg, myoldbest, myinslotlist):
+	def _display_use(self, pkg, pkg_info):
 		""" USE flag display
 
 		@param pkg: _emerge.Package.Package instance
-		@param myoldbest: list of installed versions
-		@param myinslotlist: list of installed slots
 		Modifies class globals: self.forced_flags, self.cur_iuse,
 			self.old_iuse, self.old_use, self.use_expand
 		"""
@@ -134,12 +132,8 @@ class Display(object):
 			if flag in pkg.iuse.all]
 		self.cur_iuse = sorted(pkg.iuse.all)
 
-		if myoldbest and myinslotlist:
-			previous_cpv = myoldbest[0].cpv
-		else:
-			previous_cpv = pkg.cpv
-		if self.vardb.cpv_exists(previous_cpv):
-			previous_pkg = self.vardb.match_pkgs('=' + previous_cpv)[0]
+		if pkg_info.previous_pkg is not None:
+			previous_pkg = pkg_info.previous_pkg
 			self.old_iuse = sorted(previous_pkg.iuse.all)
 			self.old_use = previous_pkg.use.enabled
 			self.is_new = False
@@ -343,14 +337,13 @@ class Display(object):
 		if self.quiet_repo_display:
 			# overlay verbose
 			# assign index for a previous version in the same slot
-			slot_matches = self.vardb.match_pkgs(pkg.slot_atom)
-			if slot_matches:
-				repo_name_prev = slot_matches[0].repo
+			if pkg_info.previous_pkg is not None:
+				repo_name_prev = pkg_info.previous_pkg.repo
 			else:
 				repo_name_prev = None
 
 			# now use the data to generate output
-			if pkg.installed or not slot_matches:
+			if pkg.installed or pkg_info.previous_pkg is None:
 				self.repoadd = self.conf.repo_display.repoStr(
 					pkg_info.repo_path_real)
 			else:
@@ -666,6 +659,15 @@ class Display(object):
 			else:
 				if pkg_info.ebuild_path is not None:
 					self.restrict_fetch_list[pkg] = pkg_info
+
+		if self.vardb.cpv_exists(pkg.cpv):
+			# Do a cpv match first, in case the SLOT has changed.
+			pkg_info.previous_pkg = self.vardb.match_pkgs('=' + pkg.cpv)[0]
+		else:
+			slot_matches = self.vardb.match_pkgs(pkg.slot_atom)
+			if slot_matches:
+				pkg_info.previous_pkg = slot_matches[0]
+
 		return pkg_info
 
 
@@ -676,15 +678,14 @@ class Display(object):
 		@param pkg_info: dictionay
 		Modifies self.changelogs
 		"""
-		inst_matches = self.vardb.match(pkg.slot_atom)
-		if inst_matches:
+		if pkg_info.previous_pkg is not None:
 			ebuild_path_cl = pkg_info.ebuild_path
 			if ebuild_path_cl is None:
 				# binary package
 				ebuild_path_cl = self.portdb.findname(pkg.cpv, myrepo=pkg.repo)
 			if ebuild_path_cl is not None:
 				self.changelogs.extend(_calc_changelog(
-					ebuild_path_cl, inst_matches[0], pkg.cpv))
+					ebuild_path_cl, pkg_info.previous_pkg, pkg.cpv))
 		return
 
 
@@ -747,7 +748,7 @@ class Display(object):
 		installed_versions = self.vardb.match_pkgs(pkg.cp)
 		if self.vardb.cpv_exists(pkg.cpv):
 			pkg_info.attr_display.replace = True
-			installed_version = self.vardb.match_pkgs(pkg.cpv)[0]
+			installed_version = pkg_info.previous_pkg
 			if installed_version.slot != pkg.slot or installed_version.sub_slot != pkg.sub_slot or \
 				not self.quiet_repo_display and installed_version.repo != pkg.repo:
 				myoldbest = [installed_version]
@@ -843,7 +844,7 @@ class Display(object):
 				self.verboseadd = ""
 				if self.quiet_repo_display:
 					self.repoadd = None
-				self._display_use(pkg, pkg_info.oldbest_list, myinslotlist)
+				self._display_use(pkg, pkg_info)
 				self.recheck_hidden(pkg)
 				if self.conf.verbosity == 3:
 					if self.quiet_repo_display:

diff --git a/pym/_emerge/resolver/output_helpers.py b/pym/_emerge/resolver/output_helpers.py
index ccaa0f2..cfa6910 100644
--- a/pym/_emerge/resolver/output_helpers.py
+++ b/pym/_emerge/resolver/output_helpers.py
@@ -619,7 +619,7 @@ class PkgInfo(object):
 	
 	__slots__ = ("attr_display", "built", "cp",
 		"ebuild_path", "fetch_symbol", "merge",
-		"oldbest", "oldbest_list", "operation", "ordered",
+		"oldbest", "oldbest_list", "operation", "ordered", "previous_pkg",
 		"repo_name", "repo_path_real", "slot", "sub_slot", "system", "use", "ver", "world")
 
 
@@ -633,6 +633,7 @@ class PkgInfo(object):
 		self.oldbest_list = []
 		self.operation = ''
 		self.ordered = False
+		self.previous_pkg = None
 		self.repo_path_real = ''
 		self.repo_name = ''
 		self.slot = ''


             reply	other threads:[~2013-02-27 23:39 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-27 23:39 Zac Medico [this message]
  -- strict thread matches above, loose matches on Subject: below --
2017-10-04  0:30 [gentoo-commits] proj/portage:master commit in: pym/_emerge/resolver/ Zac Medico
2016-12-19  5:15 Zac Medico
2016-05-27  8:33 Alexander Berntsen
2015-08-03 18:36 Zac Medico
2015-07-29 18:44 Zac Medico
2014-12-13 14:51 Arfrever Frehtes Taifersar Arahesis
2014-08-23  7:21 Zac Medico
2014-02-23 21:38 Sebastian Luther
2014-02-05 19:42 Sebastian Luther
2014-02-05 19:42 Sebastian Luther
2013-03-20 20:32 Zac Medico
2013-03-20 19:23 Zac Medico
2013-03-18 21:28 Zac Medico
2013-03-18 21:12 Zac Medico
2013-03-18 20:58 Zac Medico
2013-02-28  0:25 Zac Medico
2013-02-28  0:12 Zac Medico
2013-01-24  1:18 Zac Medico
2012-10-15 17:17 Arfrever Frehtes Taifersar Arahesis
2012-10-15  4:06 Arfrever Frehtes Taifersar Arahesis
2012-10-14 20:02 Arfrever Frehtes Taifersar Arahesis
2012-10-14 19:54 Arfrever Frehtes Taifersar Arahesis
2012-10-14  2:53 Zac Medico
2012-10-14  2:44 Zac Medico
2012-09-25  2:00 Zac Medico
2012-09-24  3:12 Zac Medico
2012-09-14  2:08 Zac Medico
2012-09-14  1:04 Zac Medico
2012-06-27 21:56 Zac Medico
2012-06-23  6:00 Zac Medico
2012-06-21  4:43 Zac Medico
2012-06-20 21:24 Zac Medico
2012-04-05 19:37 Zac Medico
2012-03-22 19:00 Zac Medico
2012-03-22 18:10 Zac Medico
2012-03-22 17:38 Zac Medico
2012-03-22 17:15 Zac Medico
2012-03-13 17:22 Zac Medico
2012-01-28  2:23 Arfrever Frehtes Taifersar Arahesis
2012-01-28  1:51 Arfrever Frehtes Taifersar Arahesis
2012-01-23 17:13 Arfrever Frehtes Taifersar Arahesis
2012-01-22  3:57 Arfrever Frehtes Taifersar Arahesis
2012-01-22  3:47 Arfrever Frehtes Taifersar Arahesis
2011-11-18  5:58 Zac Medico
2011-11-18  1:43 Zac Medico
2011-11-07 18:34 Zac Medico
2011-11-07  7:37 Zac Medico
2011-10-19 21:32 Zac Medico
2011-10-19 21:25 Zac Medico
2011-10-02 20:11 Zac Medico
2011-09-17 17:51 Zac Medico
2011-07-27 10:34 Zac Medico
2011-07-10 13:35 Zac Medico
2011-07-10 12:23 Zac Medico
2011-07-10 10:41 Zac Medico
2011-07-10  1:58 Zac Medico
2011-07-10  1:31 Zac Medico
2011-07-09 22:24 Zac Medico
2011-06-21  8:15 Zac Medico
2011-06-11  1:31 Zac Medico
2011-03-15 22:59 Zac Medico

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1362008373.25c7d335991f9ca7a60b2fbf091f553419a75296.zmedico@gentoo \
    --to=zmedico@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox