[pacman-dev] [RFC] Find real library names with libdepends/libprovides
Allan McRae
allan at archlinux.org
Thu May 9 02:38:36 EDT 2013
On 09/05/13 14:52, Mohammad_Alsaleh wrote:
> I'm going to reply here before going into details about the individual
> patches if that's okay.
>
> On Wed, May 08, 2013 at 07:59:53PM -0400, Dave Reisner wrote:
>> On Thu, May 09, 2013 at 12:15:27AM +0300, Mohammad Alsaleh wrote:
>>>
>>> makepkg only handles libprovides/libdepends correctly if the naming
>>> scheme is:
>>>
>>> lib${name}.so --> lib$name.so.$ver
>>>
>>> But it is not uncommon for libname.so to link to a '.so' file that
>>> does not follow this naming scheme. For example, these 2 schemes are
>>> sometimes used:
>>> lib$name.so --> libname$major.$major.$minor
>>> lib$name.so --> libname-$major.$major.$minor
>>>
>>> There exists other schemes.
>>
>> Can you point out where these exist in the wild? They're hugely
>> non-conformant, and glibc's ldconfig won't even read these files without
>> specific nudging. I'm not sure how other implementations behave.
>>
>
> Attaching a small script that should list all cases in '/usr/lib'.
> There are 72 library names detected by this script in my system.
>
> Actually, I came across this when I wanted to suggest adding libprovides
> to popular libraries after libpng's upgrade. And when I tested adding
> 'libpng.so' to provides. I discovered that current code in makepkg
> wouldn't work.
>
> Investigating this further, I discovered that libpng is not a corner
> case as shown by the output of the small script attached.
>
Ah. So libpng is interesting... it has:
libpng.so -> libpng16.so -> libpng16.so.16.2.0
Putting libpng.so in provides does not work. But putting libpng16.so
does. And the actual library software links to is libpng16.so meaning
that should be in the depends line too.
I refuse to have makepkg actually change the specified dependency. It
is only allowed to add a version to it. So this is not a bug.
Allan
More information about the pacman-dev
mailing list