Gentoo Archives: gentoo-portage-dev

From: tvali <qtvali@×××××.com>
To: gentoo-portage-dev@l.g.o
Subject: Re: [gentoo-portage-dev] DB and binary dependency
Date: Fri, 24 Mar 2006 11:34:04
Message-Id: cea53e3c0603240333q7afa9279u@mail.gmail.com
In Reply to: Re: [gentoo-portage-dev] DB and binary dependency by Paul de Vrieze
1 On 24/03/06, Paul de Vrieze <pauldv@g.o> wrote:
2 > On Thursday 23 March 2006 21:35, tvali wrote:
3 > >
4 > > BINSLOT is a new word for me.
5 >
6 > Ok BINSLOT is normally slot. However in some cases packages are in the
7 > same slot, but not binary compatible (like their libraries having a
8 > different SONAME e.g. openssl-0.9.6 and 0.9.7 (iirc)).
9 >
10 > Calculating after build is only for validating configurations. It allows
11 > one to see whether one can merge binary package A on the current system
12
13 Ok, i'm starting to fully understand it :)
14
15 So it is something what could be helpful even on other linux systems
16 than gentoo?
17
18 > Header files come from packages that should be mentioned in the
19 > dependencies.
20
21 Yes i'm here thinking about my code-deps :)
22
23 > Calculating dependencies automatically is diabolically hard. The fact that
24 > we have a tree that largely works shows that predicting them works well.
25 > The reason is that the dependencies are statically defined by the source
26 > of the package. At those parts where people make mistakes, or the build
27 > systems are broken, occur the dependencies could be verified by automatic
28 > tools that check most dependencies. Doing that for native code is easiest
29 > done by disecting the libraries and executables. For header files,
30 > inclusion parsing is probably a good approach. But then look at what is
31 > installed, not what was started with. The reason being that at what is
32 > installed is no longer dynamic based on a configure script, but totally
33 > static. The only disadvantage being that this only checks the current
34 > combination of useflags+context. Many checks by many users would however
35 > give a good test coverage.
36
37 If i can understand you now, then i would think that you didnt
38 understand me fully. I will write my script, then..
39
40 > Not really, with a static library A and a static library B that uses the
41 > static A, this dependency is only runtime when the interface of B exposes
42 > the headers of A. If not, one could unmerge both the static library and
43 > the headers and one could still compile against the library.
44
45 I meant headers as .h or .hpp files, which contain function headers.
46 They're needed, but they are in many cases, included in pack which
47 uses them, even if that means putting some .h's into all libs.
48
49 > Ok, let me clarify. With a binary dependency I mean the actual
50 > requirements of a package once it has been compiled. In general one could
51 > say that given a depend atom "sys-libs/db-4.*" could be statisfied by
52 > ebuilds in 5 slots: db-4.{0,1,2,3,4}. The sourcecode does not care which
53 > one is used. However, code compiled agaist db-4.0.14 will not run against
54 > any libdb-4.{1,2,3,4}.*. This is because these should libraries live in
55 > different BINSLOT's (in other words, they are incompatible). As these
56 > libraries have different SLOT's they can coexist though. For a binary
57 > package therefore it is necessary to record the version of db it was
58 > actually compiled against. As this might be very strict I also want to
59 > say that any package within the same BINSLOT with a higher version than
60 > the one compiled against also works (as it does).
61
62 Cant understand it. Do the *headers* change so much through versions?
63 Is there no backward-compability in so many cases?
64
65 > Paul
66 >
67 > --
68 > Paul de Vrieze
69 > Gentoo Developer
70 > Mail: pauldv@g.o
71 > Homepage: http://www.devrieze.net
72 >
73 >
74 >
75
76
77 --
78 tvali
79
80 Measuring programming progress by lines of code is like measuring
81 aircraft building progress by weight. -Bill Gates
82
83 For every complex problem there is an answer that is clear, simple,
84 and wrong. -H L Mencken
85
86 Theory is when you know something, but it doesn't work. Practice is
87 when something works, but you don't know why. Programmers combine
88 theory and practice: Nothing works and they don't know why.
89
90 http://www.eskimo.com/~hottub/software/programming_quotes.html
91 http://www.softwarequotes.com/
92
93 --
94 gentoo-portage-dev@g.o mailing list

Replies

Subject Author
Re: [gentoo-portage-dev] DB and binary dependency Paul de Vrieze <pauldv@g.o>