Gentoo Archives: gentoo-soc

From: Lucian Poston <lucianposton@×××××.com>
To: gentoo-soc@l.g.o
Cc: Marius Mauch <google-soc@××××××.de>
Subject: [gentoo-soc] Progress Report - Revdep-rebuild
Date: Thu, 26 Jun 2008 01:30:12
Message-Id: c4cdc1420806251830g7c70758dp53f3c334b80f2305@mail.gmail.com
1 As mentioned last week, I created lists of "needed" libs and
2 "installed" libs. I was hoping that the difference would produce a set
3 of "missing" libs, but I encountered several problems with that, which
4 I discuss below.
5
6 The list of "needed" libraries is found by calling findProviders() on
7 all installed files listed in each atom's CONTENTS. It's inefficient,
8 but once I'm able to find a solution to the problems mentioned below,
9 I will try a different implementation to build a list of "needed"
10 libs, most likely by creating another method in LinkageMap (if that is
11 okay).
12
13 A couple libraries that I've questions about:
14
15
16 libodbc.so; libodbcinst.so; libgdbm.so.2; libdb-3.1.so; libcrypto.so.0.9.6:
17
18 dev-java/sun-jdk-1.6.0.05/NEEDED.ELF.2:
19 386;/opt/sun-jdk-1.6.0.05/jre/lib/i386/libJdbcOdbc.so;libJdbcOdbc.so;$ORIGIN;libodbcinst.so,libodbc.so,libjvm.so,libc.so.6
20 app-office/openoffice-bin-2.4.0/NEEDED.ELF.2:
21 386;/usr/lib/openoffice/program/python-core-2.3.4/lib/lib-dynload/dbm.so;;;libgdbm.so.2,libpthread.so.0,libc.so.6
22
23 These libraries are needed as shown above; however, they are not in
24 the filesystem and consequently have no scanelf entries in any NEEDED
25 file. How are they dynamically linked when the library isn't
26 installed? I'm not sure what's going on with these libraries at all.
27
28
29 ld-linux.so.2 -> ld-2.6.1.so:
30
31 This is installed by sys-libs/glibc-2.6.1; however, it has no entry in
32 any NEEDED file. Scanning the library myself produces
33 EM_386;/lib/ld-2.6.1.so;ld-linux.so.2;;. I'd assume that the dynamic
34 linker would also have a NEEDED file entry for consistency, but it
35 doesn't. Is there a reason why?
36
37
38 libGLcore.so.1; libnvidia-tls.so.1:
39
40 Similar to above, these libraries from
41 x11-drivers/nvidia-drivers-169.09-r1 are installed and dynamically
42 linked to other libraries, but they have no entry in a NEEDED file.
43 For libGLcore.so.1, scanelf produced
44 EM_386;/usr/lib/opengl/nvidia/lib/libGLcore.so.169.09;libGLcore.so.1;;
45
46
47 libmix.so:
48
49 dev-libs/libmix-2.05/NEEDED.ELF.2:
50 386;/usr/lib/libmix.so;;;libc.so.6
51
52 It is a part of dev-libs/libmix-2.05 and needed by /usr/bin/nc, which
53 is in net-analyzer/netcat-110-r8. This library is installed and has an
54 entry in a NEEDED file, but that scanelf entry has no soname.
55
56
57 A couple other libraries (eg libpython2.3.so.1.0, libview.so.2,
58 libatkmm-1.6.so.1, libcrypto.so.0.9.7, libglibmm-2.4.so.1), which are
59 part of app-office/openoffice-bin-2.4.0 or
60 app-emulation/vmware-workstation-5.5.5.56455, are located in
61 directories, which are not in portage.util.getlibpaths().
62
63
64 As a consequence of the previous situations, the dict returned by
65 findProviders() includes all the previously needed libraries as keys,
66 but their associated values are the empty set. I'm unsure if these
67 libraries should be ignored or if some other action should be taken.
68
69 My current problem is that I was expecting findProviders() to return
70 the empty set for binaries which are missing libraries, and thus those
71 binaries need to be re-emerged, but the above situations complicate
72 things because those libraries also map to the empty set. Hopefully, I
73 am able to reduce these irregularities into more general cases so that
74 what I've done so far has not been in vain. :)
75
76 For the next week, I'll attempt to resolve these issues, which will
77 likely lead me back to reading the old revdep-rebuild script.
78
79 The code is hosted at
80 http://repo.or.cz/w/revdep-rebuild-reimplementation.git?a=tree
81
82
83 -Lucian
84 --
85 gentoo-soc@l.g.o mailing list

Replies

Subject Author
Re: [gentoo-soc] Progress Report - Revdep-rebuild Marius Mauch <google-soc@××××××.de>