1 |
On Wednesday 15 March 2006 16:13, Gustavo Sverzut Barbieri wrote: |
2 |
> Hello, |
3 |
> |
4 |
> There is any provision for binary dependency on Gentoo/Portage? The |
5 |
> way it works now is quite messy with things like revdep-rebuild. |
6 |
> |
7 |
> I have an idea to "solve" this problem: after software is build, you |
8 |
> check which files it links (ldd binaries libraries) and check the used |
9 |
> against installed packages. If a library is not provided by an |
10 |
> installed package we could have a policy to inform user or just abort |
11 |
> installation. |
12 |
> |
13 |
> Also, if we implement these dependencies in rpm-generator, we could |
14 |
> just generate RPM packages and install it in the RPM-DB and let it |
15 |
> handle these kind of things. |
16 |
> |
17 |
> With these in place emerge would handle the build stage (where it |
18 |
> excels), but rpm would handle the binary installation and dependencies |
19 |
> (where it excels). |
20 |
|
21 |
Solving this is not trivial. Basically suppose application X depends on |
22 |
sys-libs/db-4.* |
23 |
|
24 |
This can be resolved by differently slotted libraries. We need to record |
25 |
which one was actually used (not easy by itself, but more an issue of the |
26 |
ebuild itself, if more than 1 candidate is available). But suppose that |
27 |
we know that the application was compiled to use db-4.3.29. We must then |
28 |
know that it is ok to replace the db-4.3.29 package with 4.3.30, but that |
29 |
it isn't ok to replace it by 4.3.28 or 4.4.20. |
30 |
|
31 |
To make this things worse, the above example assumes that within a slot, |
32 |
the libraries are binary compatible. There are examples of libraries that |
33 |
are not. And what about a library whose interface is dependent on a third |
34 |
library: B uses A, C uses B, but B exports A. So B is dependent on A, and |
35 |
the binary package of C must record that B was compiled with A. |
36 |
|
37 |
In short, welcome to binary package hell. This is the reason that binary |
38 |
distributions must use versions. Even debian. It is just very very hard |
39 |
to fix these kinds of indirect dependencies. |
40 |
|
41 |
Paul |
42 |
|
43 |
-- |
44 |
Paul de Vrieze |
45 |
Gentoo Developer |
46 |
Mail: pauldv@g.o |
47 |
Homepage: http://www.devrieze.net |