Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 528610
Collapse All | Expand All

(-)a/pym/_emerge/depgraph.py (+8 lines)
Lines 1659-1664 class depgraph(object): Link Here
1659
		debug = "--debug" in self._frozen_config.myopts
1659
		debug = "--debug" in self._frozen_config.myopts
1660
		selective = "selective" in self._dynamic_config.myparams
1660
		selective = "selective" in self._dynamic_config.myparams
1661
		want_downgrade = None
1661
		want_downgrade = None
1662
		want_downgrade_parent = None
1662
1663
1663
		def check_reverse_dependencies(existing_pkg, candidate_pkg,
1664
		def check_reverse_dependencies(existing_pkg, candidate_pkg,
1664
			replacement_parent=None):
1665
			replacement_parent=None):
Lines 1706-1711 class depgraph(object): Link Here
1706
		for replacement_parent in self._iter_similar_available(dep.parent,
1707
		for replacement_parent in self._iter_similar_available(dep.parent,
1707
			dep.parent.slot_atom, autounmask_level=autounmask_level):
1708
			dep.parent.slot_atom, autounmask_level=autounmask_level):
1708
1709
1710
			if replacement_parent < dep.parent:
1711
				if want_downgrade_parent is None:
1712
					want_downgrade_parent = self._downgrade_probe(
1713
						dep.parent)
1714
				if not want_downgrade_parent:
1715
					continue
1716
1709
			if not check_reverse_dependencies(dep.parent, replacement_parent):
1717
			if not check_reverse_dependencies(dep.parent, replacement_parent):
1710
				continue
1718
				continue
1711
1719
(-)a/pym/portage/tests/resolver/test_slot_operator_update_probe_parent_downgrade.py (-1 / +68 lines)
Line 0 Link Here
0
- 
1
# Copyright 2014 Gentoo Foundation
2
# Distributed under the terms of the GNU General Public License v2
3
4
from portage.tests import TestCase
5
from portage.tests.resolver.ResolverPlayground import \
6
	ResolverPlayground, ResolverPlaygroundTestCase
7
8
class SlotOperatorUpdateProbeParentDowngradeTestCase(TestCase):
9
10
	def testSlotOperatorUpdateProbeParentDowngrade(self):
11
12
		ebuilds = {
13
			"net-nds/openldap-2.4.40-r3": {
14
				"EAPI": "5",
15
				"RDEPEND": "<sys-libs/db-6.0:= " + \
16
					"|| ( sys-libs/db:5.3 sys-libs/db:5.1 )"
17
			},
18
			"net-nds/openldap-2.4.40": {
19
				"EAPI": "5",
20
				"RDEPEND": "sys-libs/db"
21
			},
22
			"sys-libs/db-6.0": {
23
				"SLOT": "6.0",
24
			},
25
			"sys-libs/db-5.3": {
26
				"SLOT": "5.3",
27
			},
28
		}
29
30
		installed = {
31
			"net-nds/openldap-2.4.40-r3": {
32
				"EAPI": "5",
33
				"RDEPEND": "<sys-libs/db-6.0:5.3/5.3= " + \
34
					"|| ( sys-libs/db:5.3 sys-libs/db:5.1 )"
35
			},
36
			"sys-libs/db-6.0": {
37
				"SLOT": "6.0",
38
			},
39
			"sys-libs/db-5.3": {
40
				"SLOT": "5.3",
41
			},
42
		}
43
44
		world = (
45
			"net-nds/openldap",
46
		)
47
48
		test_cases = (
49
			# bug 528610 - openldap rebuild was triggered
50
			# inappropriately, due to slot_operator_update_probe
51
			# selecting an inappropriate replacement parent of
52
			# a lower version than desired.
53
			ResolverPlaygroundTestCase(
54
				["@world"],
55
				success = True,
56
				options = { "--update": True, "--deep": True },
57
				mergelist = []),
58
		)
59
60
		playground = ResolverPlayground(ebuilds=ebuilds,
61
			installed=installed, world=world, debug=False)
62
		try:
63
			for test_case in test_cases:
64
				playground.run_TestCase(test_case)
65
				self.assertEqual(test_case.test_success,
66
					True, test_case.fail_msg)
67
		finally:
68
			playground.cleanup()

Return to bug 528610