Libreoffice library caching [was Re: Yet another pkg bug?]

Tijl Coosemans tijl at FreeBSD.org
Tue Aug 5 20:08:23 UTC 2014


On Tue, 05 Aug 2014 14:32:15 -0500 Bryan Drewery wrote:
> On 8/5/2014 2:22 PM, Tijl Coosemans wrote:
>> On Tue, 05 Aug 2014 11:25:54 -0500 Bryan Drewery wrote:
>>> Can office@ chime in on this?
>>>
>>> On 8/1/2014 7:27 PM, Bryan Drewery wrote:
>>>> On 2014-08-01 08:53, Andrea Venturoli wrote:
>>>>> On a 10.0/amd64 system:
>>>>>
>>>>>> # cat /usr/ports/UPDATING
>>>>>> ...
>>>>>> 20140730:
>>>>>>    AFFECTS: users of security/libgcrypt
>>>>>>    AUTHOR: pi at FreeBSD.org
>>>>>>
>>>>>>    libgcrypt has been updated to 1.6.1 and all shared libraries
>>>>>> versions have
>>>>>>    been bumped. So you need to rebuild all applications that depend on
>>>>>>    libgcrypt.
>>>>>>
>>>>>>    # portmaster -r libgcrypt
>>>>>>      or
>>>>>>    # portupgrade -fr security/libgcrypt
>>>>>>      or
>>>>>>    # pkg install -fR security/libgcrypt
>>>>>> ...
>>>>>> # pkg info -r libgcrypt|less
>>>>>> libgcrypt-1.6.1_1:
>>>>>>          libgnome-keyring-2.32.0_8
>>>>>>          gnupg-2.0.25_1
>>>>>>          libxslt-1.1.28_4
>>>>>> # pkg info -r libxslt | less
>>>>>> libxslt-1.1.28_4:
>>>>>>          rarian-0.8.1_1
>>>>>>          gnome-doc-utils-0.20.10_2
>>>>>>          gtk-doc-1.18_1
>>>>>>          inkscape-0.48.4_4
>>>>>>          vala-0.20.1_1
>>>>>>          policykit-gnome-0.9.2_7
>>>>>>          raptor2-2.0.14
>>>>>>          xmlto-0.0.26_2
>>>>>>          shiboken-1.2.2
>>>>>>          apiextractor-0.10.10_2
>>>>>>          libreoffice-4.2.5_3
>>>>>> # portupgrade -frn libgcrypt
>>>>>> --->  Listing the results (+:done / -:ignored / *:skipped / !:failed)
>>>>>>          + security/libgcrypt (libgcrypt-1.6.1_1 -> libgcrypt-1.6.1_1)
>>>>>>          + textproc/libxslt (libxslt-1.1.28_4 -> libxslt-1.1.28_4)
>>>>>>          + security/gnupg (gnupg-2.0.25_1 -> gnupg-2.0.25_1)
>>>>>>          + security/libgnome-keyring (libgnome-keyring-2.32.0_8 ->
>>>>>> libgnome-keyring-2.32.0_8)
>>>>>
>>>>> So, libreoffice is not rebuilt and after "portupgrade -fr libgcrypt"...
>>>>>
>>>>>> # libchk -v | less -S
>>>>>> ...
>>>>>> Binaries that are linked with: /usr/local/lib/compat/pkg/libgcrypt.so.19
>>>>>>          /usr/local/lib/compat/pkg/libsoup-gnome-2.4.so.1.5.0
>>>>>>          /usr/local/lib/libreoffice/program/libxsltfilterlo.so
>>>>>
>>>>> ... libreoffice is still using the old library.
>>>>>
>>>>>
>>>>
>>>> Agreed it is not a pkg problem, nor a portupgrade problem.
>>>>
>>>> libreoffice is not directly depending on libgcrypt so it was not
>>>> rebuilt. Only direct dependencies are rebuilt. But this is not really
>>>> the problem. The problem is that Libreoffice seems to be doing something
>>>> special by building its own libxsltfilterlo.so into its own directory.
>>>> So the libxslt rebuild had no idea about it. It's not a file actually
>>>> provided by libxslt.
>>>>
>>>> # pkg info -l libxslt|grep /usr/local/lib
>>>>          /usr/local/lib/libexslt.a
>>>>          /usr/local/lib/libexslt.la
>>>>          /usr/local/lib/libexslt.so
>>>>          /usr/local/lib/libexslt.so.8
>>>>          /usr/local/lib/libxslt.a
>>>>          /usr/local/lib/libxslt.la
>>>>          /usr/local/lib/libxslt.so
>>>>          /usr/local/lib/libxslt.so.2
>>>>
>>>> Note the lack of libxsltfilterlo.so.
>>>>
>>>> I'd say the instructions were lacking. My guess is a small handfull of
>>>> people realize what's going on here and none of the other committers do.
>>>> So it's very likely that many UPDATING entries need special libreoffice
>>>> care as well and have not had it documented. I.e., every dependency of
>>>> libreoffice would require rebuilding libreoffice.
>>>>
>>>> I'm not sure what this program/ dir is, perhaps some cache. It would be
>>>> safer to have it disabled so this special care is not needed.
>>
>> It's not a special cache.  It's just a normal library that libreoffice
>> builds and installs.  The library probably links to libexslt using
>> "pkgconf --libs libexslt" which include -lgcrypt.  Libreoffice should
>> have had its PORTREVISION bumped as part of the libgcrypt update.  There
>> are other ports that should have been bumped.  I'll look into it.
> 
> Hm, it seems to be building its own libxslt library though and placing 
> it in its own directory. The rebuilding of libxslt did not update the 
> one in the libreoffice dir.
> 
> libreoffice->libxslt->libgcrypt
> 
> Rebuilding libxslt should be enough to link against the newer libgcrypt 
> and since libxslt has not change it should not require rebuilding 
> libreoffice.

Libreoffice links with libgcrypt directly.  The reason it does so is
because the output of "pkgconf --libs libexslt" is this:

-lexslt -lxslt  -lz -lm -lgcrypt -lgpg-error -L/usr/local/lib -lxml2

It's an example of how pkgconfig files can cause overlinking.

Libreoffice comes up in this list:
pkg rquery '%o %B' | grep libgcrypt.so | sort

So it should have been bumped as part of the libgcrypt update.  I had
actually specifically asked for that list of ports to be included.


More information about the freebsd-ports mailing list