Summary: | sys-apps/portage: doesn't try solving circular dependencies via using latter || () items | ||
---|---|---|---|
Product: | Portage Development | Reporter: | Michał Górny <mgorny> |
Component: | Core - Dependencies | Assignee: | Portage team <dev-portage> |
Status: | CONFIRMED --- | ||
Severity: | normal | CC: | kingjon3377 |
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Attachments: | test ebuilds |
Created attachment 379866 [details] test ebuilds Consider the three following proof-of-concept ebuilds: sys-devel/pseudo-gcc-0.ebuild that has: RDEPEND="sys-libs/pseudo-glibc[${MULTILIB_USEDEP}]" DEPEND=${RDEPEND} sys-devel/pseudo-glibc-0.ebuild: # no RDEPEND DEPEND=" || ( sys-devel/pseudo-gcc[${MULTILIB_USEDEP}] sys-devel/pseudo-gcc-stage1[${MULTILIB_USEDEP}] )" sys-devel/pseudo-gcc-stage1-0.ebuild: # no DEPEND nor RDEPEND Now: 1. if I have none of the ebuilds installed, trying to install either pseudo-gcc or pseudo-glibc fails due to circular dependency. 2. if I hint portage 'pseudo-glibc pseudo-gcc-stage1', it works. anything including 'pseudo-gcc' does not work. 3. now, if I have pseudo-gcc-stage1 installed already; 'pseudo-glibc' works, 'pseudo-gcc' and 'pseudo-gcc pseudo-glibc' fail due to circular dep. 'pseudo-gcc pseudo-gcc-stage1' and 'pseudo-glibc pseudo-gcc pseudo-gcc-stage1' work. 4. now, if I have all three installed and change USE flags included in MULTILIB_USEDEP, it's even worse. I need to explicitly tip it with 'pseudo-gcc-stage1' even if it's installed properly already. What I would really love to see is portage being able to try other || () solutions in DEPEND if the first one ends up in circular dep.