Gentoo Archives: gentoo-dev

From: Rich Freeman <rich0@g.o>
To: gentoo-dev <gentoo-dev@l.g.o>
Subject: Re: [gentoo-dev] Imprecise dependency specification causing problems with cave
Date: Mon, 13 May 2013 01:46:20
Message-Id: CAGfcS_mYDLaVLrf7ttu_k08-ynHzsvHRUvJe7HVgq=zO5dPS8Q@mail.gmail.com
In Reply to: [gentoo-dev] Imprecise dependency specification causing problems with cave by Taahir Ahmed
1 On Sun, May 12, 2013 at 9:29 PM, Taahir Ahmed <ahmedtd@××××.edu> wrote:
2 > It should be noted that the first position (that the dependencies specified in
3 > the ebuilds are not sufficient) is the position of cave's developers. I tend
4 > to agree -- How is cave to know that there hasn't been a brekaing change in a
5 > library's API?
6
7 If a dependency does not specify a version then any version of that
8 package must be able to satisfy the dependency. That certainly sounds
9 like it is the case with the examples you cited.
10
11 That doesn't mean that you can simply replace foo-1 with foo-2 and not
12 have stuff break - it might require some rebuilding. Certainly a
13 package with a := slot-operator dependency should be considered likely
14 to break if the dependency changes subslots.
15
16 How exactly cave handles these situations is up to its maintainers.
17 I'd think that they should gracefully handle subslot changes since
18 EAPI5 finally has enough information to take care of this (more or
19 less). For pre-EAPI5 packages I could see why they'd keep the old
20 versions around to avoid breaking linkage, but that is an
21 implementation decision. Keep in mind that even if the dependency is
22 EAPI5 it might have reverse dependencies that do not specify subslot
23 operator dependencies in which case a package manager can't be sure
24 how to handle things. If you have even a single package which does
25 not give a subslot operator then the package manager can't be sure
26 what will happen if the old version is removed.
27
28 The behavior of emerge is to rebuild if there is a subslot operator
29 dependency, keep the old lib around while unmerging it if
30 preserve-libs is enabled until it is no longer referenced, or just
31 break stuff if neither of those is the case. That certainly isn't the
32 only way to do things.
33
34 Rich