----- Zac Medico <zmed...@gentoo.org> a écrit : > It's capable of considering older versions, but maybe there's some > deficiency in the algorithm. We should analyze a specific example in > order to understand the behavior. > > Maybe you're referring to this code which forces the highest version in > the event of a conflict: > > https://gitweb.gentoo.org/proj/portage.git/commit/?id=a9064d08ef4c92a5d0d1bfb3dc8a01b7850812b0 >
Yes, this seems to be the cause of the problem, thank you. For testing, I created two ebuilds (and tested with "emerge -pv --autounmask-backtrack y net-misc/pdepa"): ## net-misc/pdepa-1.0 EAPI=6 KEYWORDS="amd64" SLOT="1" IUSE="feature" REQUIRED_USE="" DEPEND="" ## net-misc/pdepa-2.0 EAPI=6 KEYWORDS="amd64" SLOT="1" IUSE="feature" REQUIRED_USE="^^ ( feature )" # feature is not set => not installable DEPEND="" Like you said, due to SLOT conflict, only net-misc/pdepa-2.0 is tried, and emerge fails. Changing the SLOT of net-misc/pdepa-2.0 to 2 "solves the issue": emerge succeeds and propose to install net-misc/pdepa-1.0 However, this solution is only local: if in net-misc/pdepa-2.0 I replace REQUIRED_USE="" # now the package has no configuration problem DEPEND="!virtual/libc" # but it conflicts with an important library then emerge fails again, saying that virtual/libc blocks net-misc/pdepa-2.0 I don't know how many actual packages cannot be installed due to this optimization. I noticed this behavior in a previous version of the portage tree, when trying to install sys-auth/polkit without configuring it: - old version: REQUIRED_USE="??( systemd consolekit )" - more recent version REQUIRED_USE="^^ ( consolekit, elogind systemd )" In practice however, this was not a problem, as some dependencies of polkit deep in the tree did require one of ( systemd consolekit ) to be set. If you want, I can implement a test that check if this optimization is a problem in practice. Checking the issue shouldn't be too difficult (I think I just need to check that all REQUIRED_USE and *DEPEND are equivalent for a SLOT). Best, Michael