summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2011-02-11 00:57:11 -0800
committerZac Medico <zmedico@gentoo.org>2011-02-11 00:57:11 -0800
commite4bcbdace3e0c28c39fdc9a92da38b21611638bf (patch)
tree06e68a2efa04ae3d8fe672208dd22fb02a7bbbe1
parent88249c4a47c0354724f1d7e387c1695e4953e2d6 (diff)
downloadportage-e4bcbdace3e0c28c39fdc9a92da38b21611638bf.tar.gz
portage-e4bcbdace3e0c28c39fdc9a92da38b21611638bf.tar.bz2
portage-e4bcbdace3e0c28c39fdc9a92da38b21611638bf.zip
depgraph: avoid reinstall of identical binpkg
This will fix bug #354441.
-rw-r--r--pym/_emerge/depgraph.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
index 245e38e59..0cfd1137d 100644
--- a/pym/_emerge/depgraph.py
+++ b/pym/_emerge/depgraph.py
@@ -3006,6 +3006,7 @@ class depgraph(object):
existing_node = None
myeb = None
rebuilt_binaries = 'rebuilt_binaries' in self._dynamic_config.myparams
+ usepkg = "--usepkg" in self._frozen_config.myopts
usepkgonly = "--usepkgonly" in self._frozen_config.myopts
empty = "empty" in self._dynamic_config.myparams
selective = "selective" in self._dynamic_config.myparams
@@ -3117,6 +3118,20 @@ class depgraph(object):
# to a KEYWORDS mask. See bug #252167.
if pkg.type_name != "ebuild" and matched_packages:
+ # Don't re-install a binary package that is
+ # identical to the currently installed package
+ # (see bug #354441).
+ identical_binary = False
+ if usepkg and pkg.installed:
+ for selected_pkg in matched_packages:
+ if selected_pkg.type_name == "binary" and \
+ selected_pkg.cpv == pkg.cpv and \
+ selected_pkg.metadata.get('BUILD_TIME') == \
+ pkg.metadata.get('BUILD_TIME'):
+ identical_binary = True
+ break
+
+ if not identical_binary:
# If the ebuild no longer exists or it's
# keywords have been dropped, reject built
# instances (installed or binary).