commit:     de71f70eac5f8f82d739c2d6e5da8e7680e89efe
Author:     Sebastian Luther <SebastianLuther <AT> gmx <DOT> de>
AuthorDate: Sat Apr 26 19:21:04 2014 +0000
Commit:     Sebastian Luther <SebastianLuther <AT> gmx <DOT> de >
CommitDate: Sat Apr 26 19:43:56 2014 +0000
URL:        
http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=de71f70e

Prevent rebuild code from performing unwanted repo changes

---
 pym/_emerge/depgraph.py                            |  2 ++
 .../tests/resolver/test_slot_conflict_rebuild.py   | 41 ++++++++++++++++++++++
 2 files changed, 43 insertions(+)

diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
index 737ed66..28d4026 100644
--- a/pym/_emerge/depgraph.py
+++ b/pym/_emerge/depgraph.py
@@ -1631,6 +1631,8 @@ class depgraph(object):
                                                        # different 
slot_operator is an older version
                                                        if not want_downgrade:
                                                                continue
+                                               if pkg.version == 
dep.child.version and not dep.child.built:
+                                                       continue
 
                                        insignificant = False
                                        if not slot_conflict and \

diff --git a/pym/portage/tests/resolver/test_slot_conflict_rebuild.py 
b/pym/portage/tests/resolver/test_slot_conflict_rebuild.py
index 17737cf..b39eaf0 100644
--- a/pym/portage/tests/resolver/test_slot_conflict_rebuild.py
+++ b/pym/portage/tests/resolver/test_slot_conflict_rebuild.py
@@ -406,3 +406,44 @@ class SlotConflictRebuildTestCase(TestCase):
                                self.assertEqual(test_case.test_success, True, 
test_case.fail_msg)
                finally:
                        playground.cleanup()
+
+       def testSlotConflictMultiRepoUpdates(self):
+               """
+               Bug 508236 (similar to testSlotConflictMultiRepo)
+               Different repositories contain the same cpv with different 
sub-slots for
+               a slot operator child. For both the installed version and an 
updated version.
+
+               """
+               ebuilds = {
+                       "net-firewall/iptables-1.4.21::overlay" : { "EAPI": 
"5", "SLOT": "0/10" },
+                       "net-firewall/iptables-1.4.21-r1::overlay" : { "EAPI": 
"5", "SLOT": "0/10" },
+                       "sys-apps/iproute2-3.11.0::overlay" : { "EAPI": "5", 
"RDEPEND": "net-firewall/iptables:=" },
+
+                       "net-firewall/iptables-1.4.21" : { "EAPI": "5", "SLOT": 
"0" },
+                       "net-firewall/iptables-1.4.21-r1" : { "EAPI": "5", 
"SLOT": "0" },
+                       "sys-apps/iproute2-3.12.0": { "EAPI": "5", "RDEPEND": 
"net-firewall/iptables:=" },
+               }
+
+               installed = {
+                       "net-firewall/iptables-1.4.21::overlay" : { "EAPI": 
"5", "SLOT": "0/10" },
+                       "sys-apps/iproute2-3.12.0": { "EAPI": "5", "RDEPEND": 
"net-firewall/iptables:0/10=" },
+               }
+
+               world = ["sys-apps/iproute2"]
+
+               test_cases = (
+                       ResolverPlaygroundTestCase(
+                               ["@world"],
+                               options = {"--deep": True, "--update": True, 
"--verbose": True},
+                               success = True,
+                               mergelist = 
["net-firewall/iptables-1.4.21-r1::overlay"]),
+               )
+
+               playground = ResolverPlayground(ebuilds=ebuilds,
+                       installed=installed, world=world, debug=False)
+               try:
+                       for test_case in test_cases:
+                               playground.run_TestCase(test_case)
+                               self.assertEqual(test_case.test_success, True, 
test_case.fail_msg)
+               finally:
+                       playground.cleanup()

Reply via email to