[prev in list] [next in list] [prev in thread] [next in thread]
List: gentoo-portage-dev
Subject: =?utf-8?Q?Re=C2=A0:_Re:_[gentoo-portage-dev]_Constraint-?= =?utf-8?Q?Based_Dependency_Solver_for_Por
From: michael.lienhardt () laposte ! net
Date: 2019-06-21 10:41:16
Message-ID: 1508358953.2810448.1561113676512.JavaMail.zimbra () laposte ! net
[Download RAW message or body]
----- Zac Medico <zmedico@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
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic