[poky] Shared library packaging

Gary Thomas gary at mlbassoc.com
Wed Mar 16 15:27:50 PDT 2011


On 03/16/2011 04:23 PM, Mark Hatle wrote:
> On 3/16/11 5:10 PM, Gary Thomas wrote:
>> I'm working on a recipe which has a number of shared libraries (actually
>> this is just an import from OE (mozilla/nss) which has the same problem as listed below)
>> The package creates a number of libraries (from the work tree):
>>       image/usr/lib/libsmime3.so ->  libsmime3.so.1oe
>>       image/usr/lib/libsmime3.so.1oe
>>       image/usr/lib/libsoftokn3.so
>>       image/usr/lib/libfreebl3.so
>>       image/usr/lib/libnssutil3.so ->  libnssutil3.so.1oe
>>       image/usr/lib/libnssutil3.so.1oe
>>       image/usr/lib/libnss3.so ->  libnss3.so.1oe
>>       image/usr/lib/libnss3.so.1oe
>>       image/usr/lib/libssl3.so ->  libssl3.so.1oe
>>       image/usr/lib/libssl3.so.1oe
>>
>> The .so.1oe files are packaged in nss_XXX.ipk and the .so files are
>> put into nss-dev_XXX.ipk.  The problem is that there is code out there
>> that only wants to look for the .so files (no -dev packages installed)
>> and fail to find libsoftokn3.so and libfreebl3.so
>
> This sounds like an error in the SONAME embedded in the files.  For example if
> the soname of libnss2.so.1oe, is libnss3.so, both it and the link will be
> captured in the base package -- leaving the -dev empty.
>
> (If the SONAME is correct and it's not working this way that is likely a bug in
> the routines breaking up base and dev packages!)

How can I check this (not my comfort zone)?

>
>> Is there a way to [easily?] force these two libraries to be packaged
>> into nss-XXX.ipk?
>
> Assuming fixing the sonames is not an option, the alternative is to specify the
> packages and FILES_... list of files for each chunk instead of letting the
> system determine things automatically.  It's a bit messier, but you have
> ultimate control of what is and is not included...
>
>> My current workaround is to use a post-install script to create the .so
>> files from the .so.1oe files for these two libraries.  It gets my code
>> (chromium-11 browser!) to work, but it's not very satisfying.
>
> If possible, fix the soname item... otherwise there can be loader problems if
> the device doesn't end up with an ld.so.cache...  (which is why the link is
> working I suspect...)

I think the problem is in some very messy Mozilla code that uses dl_load() directly
and only looks for the .so file name.

I'll probably go with the FILES solution.

-- 
------------------------------------------------------------
Gary Thomas                 |  Consulting for the
MLB Associates              |    Embedded world
------------------------------------------------------------



More information about the poky mailing list