Gentoo Archives: gentoo-user

From: Fernando Rodriguez <frodriguez.developer@×××××××.com>
To: gentoo-user@l.g.o
Subject: Re: [gentoo-user] Endless preserved-rebuild loop, libmozalloc & more
Date: Tue, 25 Aug 2015 18:57:54
Message-Id: BLU437-SMTP71034D3BBC488208105E978D610@phx.gbl
In Reply to: Re: [gentoo-user] Endless preserved-rebuild loop, libmozalloc & more by Alan McKinnon
1 On Tuesday, August 25, 2015 7:58:44 PM Alan McKinnon wrote:
2 > On 25/08/2015 19:43, Fernando Rodriguez wrote:
3 > > On Tuesday, August 25, 2015 12:30:09 PM Alan McKinnon wrote:
4 > >> On 25/08/2015 04:28, Fernando Rodriguez wrote:
5 > >>> On Monday, August 24, 2015 9:31:38 PM Alan McKinnon wrote:
6 > >>>> Does anyone have an opinion to offer on bug 501468?
7 > >>>>
8 > >>>> https://bugs.gentoo.org/show_bug.cgi?id=501468
9 > >>>>
10 > >>>> It's been annoying me for a week now with this message:
11 > >>>>
12 > >>>> !!! existing preserved libs:
13 > >>>>>>> package: www-client/firefox-40.0.2
14 > >>>> * - /usr/lib64/firefox/libmozalloc.so
15 > >>>> * used by /usr/lib64/thunderbird/components/libdbusservice.so
16 > >>>> (mail-client/thunderbird-38.2.0)
17 > >>>> * used by /usr/lib64/thunderbird/components/libmozgnome.so
18 > >>>> (mail-client/thunderbird-38.2.0)
19 > >>>> * used by
20 > >>>> /usr/lib64/thunderbird/distribution/extensions/{e2fda1a4-762b-4020-
21 b5ad-
22 > >>> a41df1933103}/components/libcalbasecomps.so
23 > >>>> (mail-client/thunderbird-38.2.0)
24 > >>>> * used by 4 other files
25 > >>>>
26 > >>>>
27 > >>>> Both Mozilla products ship this file:
28 > >>>>
29 > >>>> $ locate libmozalloc
30 > >>>> /usr/lib64/firefox/libmozalloc.so
31 > >>>> /usr/lib64/thunderbird/libmozalloc.so
32 > >>>>
33 > >>>> and according to preserved libs, thunderbird linked to the firefox copy.
34 > >>>> The only offered solution on the bug is to use a MASK variable, which
35 > >>>> seems to me an ugly hammer to swat a fly.
36 > >>>>
37 > >>>> I was wondering if there's a better way been developed in the last
38 year.
39 > >>>
40 > >>> Actually, now I have a general idea of what's going on and that sounds
41 > > like an
42 > >>> acceptable solution but perhaps I could be better. This is what happens:
43 > >>>
44 > >>> 1. revdep-rebuild uses ldd to find breakage. It finds breakage in
45 > >>> libdbusservice.so because firefox uses tricks to preload the library from
46 > > it's
47 > >>> directory.
48 > >>> 2. revdep-rebuild find that thunderbird provides the library and thinks
49 it
50 > >>> needs to be rebuild. (And wrongly tells you that firefox links against
51 it).
52 > >>>
53 > >>> A better way would be:
54 > >>>
55 > >>> 1. same as step 1 above
56 > >>> 2. revdep-rebuild checks the package that provides the broken binary (in
57 > > this
58 > >>> case the firefox package), if this package also provides the missing
59 > > library
60 > >>> then it's safe to ignore the problem.
61 > >>> 3. same as step 2 above.
62 > >>>
63 > >>> Another solution is to make patch firefox to use RPATH so ldd can find the
64 > >>> labraries, this would also make prelink work better with firefox but it's
65 > >>> probably not ideal to mantain.
66 > >>
67 > >>
68 > >> that does make sense. In my case, it's not revdep-rebuild causing
69 > >> problems, it's the preserved-rebuild message at the end of emerge -v
70 > >>
71 > >> At this level is there a difference?
72 > >
73 > > I don't know the details but it seems to me that portage either uses
74 revdep-
75 > > rebuild to find breakage (without scanning the whole system) before
76 deleting
77 > > the old libs for good or duplicates some of it's logic. Come to think of
78 it,
79 > > the SEARCH_DIR_MASK may not be ideal because if I understand what it does
80 > > correctly then real breakage in firefox won't be detected.
81 > >
82 >
83 > My thought too. To me, SEARCH_DIR_MASK is fine for things like
84 > /opt/skype because it's binary and either works or it doesn't, and when
85 > it doesn't there's not much I can do about it.
86 >
87 > It may be the least sucky of all available solutions, but it's still
88 > swatting a fly with a hammer
89
90 Maybe the bug should be filed against portage to get the right people to look
91 at it. The fix should be simple, just check the package with the broken binary
92 first. It seems to use lexical order so it finds firefox before thunderbird.
93
94 It would benefit binary packages too. You cannot rebuild skype but you can
95 preserve the library until the vendor releases a new binary. You would get an
96 endless preseved-libs loop for it but that's preferable to a broken skype.
97
98 --
99 Fernando Rodriguez