Created attachment 379866 [details]
Consider the three following proof-of-concept ebuilds:
sys-devel/pseudo-gcc-0.ebuild that has:
# no RDEPEND
# no DEPEND nor RDEPEND
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.