On 09/29/2017 06:16 AM, Brian Dolbec wrote:
> On Fri, 29 Sep 2017 00:26:01 -0700
> Zac Medico <zmed...@gentoo.org> wrote:
> 
>> When the slot conflict solver decides that it is "forced"
>> to choose a particular package, recursively force the
>> dependencies as well. Prior to this fix, substitution of
>> @world in the arguments for SlotConflictMaskUpdateTestCase
>> caused the test to fail because the solver removed
>> boost-build-1.53.0 from the graph event though it had
>> added the parent boost-1.53.0 package to the "forced"
>> set.
>>
>> X-Gentoo-bug: 632210
>> X-Gentoo-bug-url: https://bugs.gentoo.org/632210
>> ---
>>  pym/_emerge/depgraph.py                                 | 13
>> +++++++++++++ pym/portage/tests/resolver/test_slot_conflict_update.py
>> |  2 +- 2 files changed, 14 insertions(+), 1 deletion(-)
>>
>> diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
>> index 785c036b8..3b81c5c76 100644
>> --- a/pym/_emerge/depgraph.py
>> +++ b/pym/_emerge/depgraph.py
>> @@ -1457,6 +1457,19 @@ class depgraph(object):
>>  
>>              # Remove 'non_conflict_node' and or_tuples from
>> 'forced'. forced = set(pkg for pkg in forced if isinstance(pkg,
>> Package)) +
>> +            # Add dependendencies of forced packages.
>> +            stack = list(forced)
>> +            traversed = set()
>> +            while stack:
>> +                    pkg = stack.pop()
>> +                    traversed.add(pkg)
>> +                    for child in conflict_graph.child_nodes(pkg):
>> +                            if (isinstance(child, Package) and
>> +                                    child not in traversed):
>> +                                    forced.add(child)
>> +                                    stack.append(child)
>> +
>>              non_forced = set(pkg for pkg in conflict_pkgs if pkg
>> not in forced) 
>>              if debug:
>> diff --git a/pym/portage/tests/resolver/test_slot_conflict_update.py
>> b/pym/portage/tests/resolver/test_slot_conflict_update.py index
>> 331e5788b..f251d01f1 100644 ---
>> a/pym/portage/tests/resolver/test_slot_conflict_update.py +++
>> b/pym/portage/tests/resolver/test_slot_conflict_update.py @@ -80,7
>> +80,7 @@ class SlotConflictUpdateTestCase(TestCase): # this behavior
>> makes SlotConflictMaskUpdateTestCase # fail.
>>                      ResolverPlaygroundTestCase(
>> -                            world,
>> +                            ['@world'],
>>                              all_permutations = True,
>>                              options = {"--update": True,
>> "--deep": True}, success = True,
> 
> looks good
> 

Thanks, merged:

https://gitweb.gentoo.org/proj/portage.git/commit/?id=5a65670ec2b0850c278b85c6417c20d8a4ca7734

-- 
Thanks,
Zac

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to