Gentoo Archives: gentoo-dev

From: Alex Alexander <alex.alexander@×××××.com>
To: Gentoo-ML-dev <gentoo-dev@l.g.o>
Subject: [gentoo-dev] blocking mixed versions of split QT libraries
Date: Mon, 18 May 2009 10:04:30
Message-Id: 225000070905180304u49e9a50btcc0f8935368afc03@mail.gmail.com
1 QT doesn't work well when mixed versions of its core libraries are
2 installed. Usually an emerge -avDu world solves the problem, but some
3 users tend to avoid this.
4
5 For example, lets say you have parts of QT 4.4.2 on your system. QT
6 4.5.1 is available and a user decides to manually update qt-core, or
7 to install KDE which has a QT dependency on a QT library not
8 installed. In these cases, portage will update only a part of the
9 installed QT libraries, leaving the system in a mixed state.
10
11 QT based apps don't like that. Others will refuse to build, others
12 will fail to run.
13
14 We've managed to experimentally block partial QT upgrades by adding an
15 RDEPEND to all QT libraries [1] in qting-edge overlay. Portage
16 understands this and throws out B blocks if you try to change versions
17 only in parts of QT, but upgrades/downgrades fine if you do them all
18 at once (or use -Du world).
19
20 This "fix" also catches stale QT libraries that nothing depends on
21 anymore because the user has removed whatever required them (and never
22 ran --depclean).
23
24 Unfortunately we've got reports from paludis users stating that they
25 can't update QT from qting-edge anymore.
26
27 What I'd like to discuss is the following:
28
29 1) Is there a saner way to achieve our goal of doing whatever is
30 possible to avoid mixed QT versions?
31 2) Is our implementation considered correct and acceptable by the PMS guys?
32 3) Whats the general Gentoo Policy on mixed versions? Do we care, or
33 is our policy "please -Du world"?
34
35 We've also managed to achieve the same thing by adding PDEPENDs to
36 each QT library for any other QT libraries that depend on it:
37
38 i.e. if qt-xmlpatterns depends on qt-gui, we add the following to qt-gui:
39 PDEPEND="
40 || ( !x11-libs/qt-xmlpatterns ~x11-libs/qt-xmlpatterns-${PV} )
41 "
42
43 the above (expanded for all libraries) has the same effect as the [1]
44 RDEPEND but looks a bit more hackish.
45
46 thanks
47
48 [1] lines 30-59
49 http://github.com/gentoo-qt/qting-edge/blob/master/eclass/qt4-build-edge.eclass
50
51 --
52 Alex Alexander || wired
53 Gentoo QT && KDE Herd Tester
54 http://www.linuxized.com

Replies

Subject Author
Re: [gentoo-dev] blocking mixed versions of split QT libraries Alistair Bush <ali_bush@g.o>
Re: [gentoo-dev] blocking mixed versions of split QT libraries Ciaran McCreesh <ciaran.mccreesh@××××××××××.com>