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

Bug 515630

Summary: sys-apps/portage: doesn't try solving circular dependencies via using latter || () items
Product: Portage Development Reporter: Michał Górny <mgorny>
Component: Core - DependenciesAssignee: 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

Description Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2014-06-28 21:29:17 UTC
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.