Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 05 Aug 2014 15:19:24 -0500
From:      Bryan Drewery <bdrewery@FreeBSD.org>
To:        Tijl Coosemans <tijl@FreeBSD.org>
Cc:        ports@freebsd.org, office@FreeBSD.org
Subject:   Re: Libreoffice library caching [was Re: Yet another pkg bug?]
Message-ID:  <53E13C4C.1020405@FreeBSD.org>
In-Reply-To: <20140805220710.5ebaaf63@kalimero.tijl.coosemans.org>
References:  <53DB9BF4.5070208@netfence.it>	<62714296e76c28f63d8b7ca430882a37@shatow.net>	<53E10592.1000308@FreeBSD.org>	<20140805212224.33dbbd7c@kalimero.tijl.coosemans.org>	<53E1313F.4090106@FreeBSD.org> <20140805220710.5ebaaf63@kalimero.tijl.coosemans.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 8/5/2014 3:07 PM, Tijl Coosemans wrote:
> 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@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.

Got it.

>
> 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.
>

Well the problem here was the instructions did not indicate to upgrade 
all ports so it would not have caught it anyhow. The instructions were 
to use portupgrade/portmaster to things depending on libgcrypt. Perhaps 
we need to change our instructions (or portupgrade/portmaster) to use 
registered library dependencies as well rather than just package deps.


-- 
Regards,
Bryan Drewery



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?53E13C4C.1020405>