Alex Alexander wrote:
> QT doesn't work well when mixed versions of its core libraries are
> installed. Usually an emerge -avDu world solves the problem, but some
> users tend to avoid this.
> 
> For example, lets say you have parts of QT 4.4.2 on your system. QT
> 4.5.1 is available and a user decides to manually update qt-core, or
> to install KDE which has a QT dependency on a QT library not
> installed. In these cases, portage will update only a part of the
> installed QT libraries, leaving the system in a mixed state.
> 
> QT based apps don't like that. Others will refuse to build, others
> will fail to run.
> 
> We've managed to experimentally block partial QT upgrades by adding an
> RDEPEND to all QT libraries [1] in qting-edge overlay. Portage
> understands this and throws out B blocks if you try to change versions
> only in parts of QT, but upgrades/downgrades fine if you do them all
> at once (or use -Du world).
> 
> This "fix" also catches stale QT libraries that nothing depends on
> anymore because the user has removed whatever required them (and never
> ran --depclean).
> 
> Unfortunately we've got reports from paludis users stating that they
> can't update QT from qting-edge anymore.

>From what I understand you are utilizing portages ability to
automagically resolve blockers when all blockers will be resolved within
the current command.  Agree?? or is it the fact that you are doing
!>x11-libs/qt-assistant-${PV}-r9999 that is causing the paludis problem?

I would suggest that you just tell paludis users to use --dl-blocks
discard when updating qt.  After looking at the eclass im not sure
whether it will work or not.  im assuming that discarding blocks will
just ignore everything, but I haven't tested it so can't be sure.

> 
> What I'd like to discuss is the following:
> 
> 1) Is there a saner way to achieve our goal of doing whatever is
> possible to avoid mixed QT versions?

I don't believe so, not within current ways of declaring dependencies.

> 2) Is our implementation considered correct and acceptable by the PMS guys?
> 3) Whats the general Gentoo Policy on mixed versions? Do we care, or
> is our policy "please -Du world"?

I say we should be stopping them from happening.

> 
> We've also managed to achieve the same thing by adding PDEPENDs to
> each QT library for any other QT libraries that depend on it:
> 
> i.e. if qt-xmlpatterns depends on qt-gui, we add the following to qt-gui:
> PDEPEND="
> || ( !x11-libs/qt-xmlpatterns ~x11-libs/qt-xmlpatterns-${PV} )
> "
> 
> the above (expanded for all libraries) has the same effect as the [1]
> RDEPEND but looks a bit more hackish.
> 

And I would agree with the hackish comment.

> thanks

Good work btw.

Alistair.

Reply via email to