[arch-dev-public] bash 4.0 / readline 6.0 rebuilds

Allan McRae allan at archlinux.org
Sun Mar 1 11:08:54 EST 2009


Thomas Bächler wrote:
> Allan McRae schrieb:
>>> Don't use ldd here, as it also covers indirect dependencies. If libA 
>>> depends on libB and libB depends on libC, then only libB needs 
>>> updating when libC changes the SOname, as long as libA never calls 
>>> libC directly.
>>>
>>> You should parse the output of readelf -d, which only shows direct 
>>> dependencies and thus allows you to distinguish between direct and 
>>> indirect dependencies ... at least as far as I understand it.
>>>
>>
>> That does not matter when done in a very minimal chroot as directed 
>> at the top of the script.  If libA depends on libB and libB depends 
>> on libC, and libB is not on the system, then "ldd libC" does not show 
>> libA.
>
> You're looking at this the wrong way: You want to know whether libA 
> needs a rebuild because of the libC SONAME bump. So, you install libA 
> and all its dependencies (libB and libC). Now ldd libA.so shows that 
> it depends on libC (but the truth is that only libB requires libC, but 
> libA does not), while readelf tells you libA does NOT need libC.
>
> Even better, you don't need to install all dependencies!

This is the point of this comment:
# Run in minimal chroot to avoid false positives due to dependencies. 
# Chroot can be built with:
# sudo mkarchroot <chrootdir>/root glibc coreutils findutils grep tar gzip

So, in your example, if you are testing if libA needs a rebuild due to 
libC, you only extract libA in your chroot, not libB.  The ldd can not 
chain its way to libC.  So ti ends up doing the same thing as readelf.

Allan




More information about the arch-dev-public mailing list