[yocto] .rpm packaging weirdness of dynamic libraries

Hans Beckérus hans.beckerus at gmail.com
Thu May 23 07:50:01 PDT 2013


Hello. On the rootfs all of user added packages with dynamic libraries
(/usr/lib) are missing the .so file soft link? If I check in the
source folder in .libs created by libtool they are all there and links
correctly. Eg. for the linx package:

[git/lib/.libs]: ls -l liblinx*
-rw-r--r-- 1 xxxxxxx rnd 46558 May 22 17:51 liblinx.a
lrwxrwxrwx 1 xxxxxxx rnd    13 May 22 17:51 liblinx.la -> ../liblinx.la
-rw-r--r-- 1 xxxxxxx rnd   911 May 22 17:51 liblinx.lai
lrwxrwxrwx 1 xxxxxxx rnd    16 May 22 17:51 liblinx.so -> liblinx.so.0.0.0
lrwxrwxrwx 1 xxxxxxx rnd    16 May 22 17:51 liblinx.so.0 -> liblinx.so.0.0.0
-rwxr-xr-x 1 xxxxxxx rnd 43883 May 22 17:51 liblinx.so.0.0.0

Also in the package folder everything looks ok

[linx/1.0-r0/package]: ls -l usr/lib/liblinx*
-rw-r--r-- 2 xxxxxxx rnd 46558 May 22 17:51 usr/lib/liblinx.a
-rwxr-xr-x 2 xxxxxxx rnd   911 May 22 17:51 usr/lib/liblinx.la
lrwxrwxrwx 1 xxxxxxx rnd    16 May 22 17:51 usr/lib/liblinx.so ->
liblinx.so.0.0.0
lrwxrwxrwx 1 xxxxxxx rnd    16 May 22 17:51 usr/lib/liblinx.so.0 ->
liblinx.so.0.0.0
-rwxr-xr-x 2 xxxxxxx rnd 10356 May 22 17:52 usr/lib/liblinx.so.0.0.0

But in the rpm, the libs are packaged incorrectly (or at least not as expected)

[1.0-r0/deploy-rpms/cortexa9_vfp]: rpm -q -filesbypkg -p
linx-1.0-r0.cortexa9_vfp.rpm
warning: linx-1.0-r0.cortexa9_vfp.rpm: Header V4 DSA signature: NOKEY,
key ID e747fcfb
linx                      /etc
linx                      /etc/linxdisc.conf
linx                      /usr
linx                      /usr/bin
linx                      /usr/bin/linx_basic_client
linx                      /usr/bin/linx_basic_server
linx                      /usr/bin/linx_bmark
linx                      /usr/bin/linxcfg
linx                      /usr/bin/linxdisc
linx                      /usr/bin/linxgwcmd
linx                      /usr/bin/linxgws
linx                      /usr/bin/linxstat
linx                      /usr/bin/mkcmclcon
linx                      /usr/bin/mkethcon
linx                      /usr/bin/mkhdlccon
linx                      /usr/bin/mklink
linx                      /usr/bin/mkriocon
linx                      /usr/bin/mkshmcon
linx                      /usr/bin/mksriocon
linx                      /usr/bin/mktcpcon
linx                      /usr/bin/rmcmclcon
linx                      /usr/bin/rmethcon
linx                      /usr/bin/rmhdlccon
linx                      /usr/bin/rmlink
linx                      /usr/bin/rmriocon
linx                      /usr/bin/rmshmcon
linx                      /usr/bin/rmsriocon
linx                      /usr/bin/rmtcpcon
linx                      /usr/bin/uselgws
linx                      /usr/lib
linx                      /usr/lib/libcfg.so.0
linx                      /usr/lib/libcfg.so.0.0.0
linx                      /usr/lib/libgw.so.0
linx                      /usr/lib/libgw.so.0.0.0
linx                      /usr/lib/liblinx.so.0
linx                      /usr/lib/liblinx.so.0.0.0
linx                      /usr/lib/libusel_linx.so.0
linx                      /usr/lib/libusel_linx.so.0.0.0

As can be seen in the end, there are no .so files :(, only .so.0
pointing to the exact version of the library. Has this been observed
before? Have we made something wrong in our .bb file that results in
this abnormality? From what I know (and also from what some of our
system software require) there should always be a plain .so file for
dynamic library version(s) to work as expected.

I am currently on poky/master, but this has been confirmed also on
official danny releases.

Hans



More information about the yocto mailing list