[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

dpkg-slibdep, fakeroot, sonames



I don't understand this.

Fakeroot uses a library "libfakeroot.so.0.0", that gets created with:

  gcc -g -shared -Wl,-soname,libfakeroot.so.0 -o libfakeroot.so.0.0 libfakeroot.o -ldl -lc

It is my understanding that the soname of libfakeroot.so.0.0 created
this way is "0". Please correct me if I'm wrong.

Fakeroot itself (or any other binary for that matter) does not use
this library itself. So, just doing:

$ ldd ./fakeroot
        libstdc++.so.272 => /usr/lib/libg++-dbg/libstdc++.so.272 (0x4000f000)
        libg++.so.272 => /usr/lib/libg++-dbg/libg++.so.272 (0x40046000)
        libc.so.6 => /lib/libc.so.6 (0x4007f000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

does not show libfakeroot. But fakeroot execs its children with:
  LD_PRELOAD=/usr/lib/libfakeroot.so.0
so its children do use it:

$ ./fakeroot /usr/bin/ldd ./fakeroot
        /usr/lib/libfakeroot.so.0 => /usr/lib/libfakeroot.so.0 (0x4000c000)
        libstdc++.so.272 => /usr/lib/libg++-dbg/libstdc++.so.272 (0x40015000)
        libg++.so.272 => /usr/lib/libg++-dbg/libg++.so.272 (0x4004c000)
        libc.so.6 => /lib/libc.so.6 (0x40085000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

To me, this output looks as though the soname of libfakeroot is indeed
"0", and not "0.0", but this is from my "debian/rules binary" stage:

dpkg-shlibdeps ./fakeroot 
dpkg-shlibdeps.orig: warning: unable to find dependency information for shared library /usr/lib/libfakeroot (soname 0.0, path /usr/lib/libfakeroot.so.0.0, dependency field Depends)
dpkg-gencontrol

Does anyone know why dpkg-shlibdeps thinks the /usr/lib/libfakeroot soname
is 0.0?

BTW, I do have a shlibs file setup for libfakeroot (soname "0"):

$ cat /var/lib/dpkg/info/fakeroot.shlibs 
libfakeroot      0       libc6



PS, note that the current fakeroot version (-8) still does
    LD_PRELOAD=/usr/lib/libfakeroot.so.0.0 (with extra 0), but I
    wanted to change that in -9. Doesn't seem to work.

PSS Yes, the library in /usr/lib/libfakeroot.so.0.0 is really built the
    way I describe above (even though it still comes from -8).

-- 
joost witteveen, joostje@debian.org
#!/usr/bin/perl -sp0777i<X+d*lMLa^*lN%0]dsXx++lMlN/dsM0<j]dsj
$/=unpack('H*',$_);$_=`echo 16dio\U$k"SK$/SM$n\EsN0p[lN*1
lK[d2%Sa2/d0$^Ixp"|dc`;s/\W//g;$_=pack('H*',/((..)*)$/)
#what's this? see http://www.dcs.ex.ac.uk/~aba/rsa/


--
TO UNSUBSCRIBE FROM THIS MAILING LIST: e-mail the word "unsubscribe" to
debian-devel-request@lists.debian.org . 
Trouble?  e-mail to templin@bucknell.edu .


Reply to: