Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 515630 - sys-apps/portage: doesn't try solving circular dependencies via using latter || () items
Summary: sys-apps/portage: doesn't try solving circular dependencies via using latter ...
Status: CONFIRMED
Alias: None
Product: Portage Development
Classification: Unclassified
Component: Core - Dependencies (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Portage team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-06-28 21:29 UTC by Michał Górny
Modified: 2016-12-26 23:08 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
test ebuilds (test-ebuilds.tar,10.00 KB, application/x-tar)
2014-06-28 21:29 UTC, Michał Górny
Details

Note You need to log in before you can comment on or make changes to this bug.
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.