Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 590514

Summary: sys-apps/portage: sub-optimal merge order triggered by PDEPEND and runtime dependency cycles
Product: Portage Development Reporter: Zac Medico <zmedico>
Component: Core - Interface (emerge)Assignee: Portage team <dev-portage>
Status: RESOLVED FIXED    
Severity: normal CC: esigra, sam
Priority: Normal Keywords: InVCS
Version: 2.2   
Hardware: All   
OS: All   
See Also: https://bugs.gentoo.org/show_bug.cgi?id=756199
Whiteboard:
Package list:
Runtime testing required: ---
Bug Depends on:    
Bug Blocks: 155723, 604854    

Description Zac Medico gentoo-dev 2016-08-04 22:04:34 UTC
There is a misbehavior in the depgraph._serialize_tasks method, where PDEPEND can cause the runtime cycle code to merge a very large runtime cycle and its dependencies, even though it would be more optimal to merge the dependencies first. In the main "while mygraph:" loop, the problem occurs when the prefer_asap flag is True, and there's a node in the asap_nodes list. The smallest_cycle variable ends up with a large runtime cycle along with some dependencies that are not involved in the cycle (which should therefore be merged earlier than the rest).
Comment 1 Zac Medico gentoo-dev 2016-08-04 22:18:28 UTC
Some existing relevant code is visible in these commits, but apparently it doesn't always work as intended:

https://gitweb.gentoo.org/proj/portage.git/commit/?id=603569311daee6e2460051f46728a05cbae66880
https://gitweb.gentoo.org/proj/portage.git/commit/?id=075ce106b3ae1e55cc810b4c946deea83bcb4a8e
Comment 2 Zac Medico gentoo-dev 2016-08-05 02:16:53 UTC
I have a working patch in the following branch:

https://github.com/zmedico/portage/tree/bug_590514

I'll submit it for review after I've added a test case.
Comment 5 Zac Medico gentoo-dev 2017-02-10 18:49:50 UTC
Fixed in portage-2.3.3.