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! You just need to extract libA and use readelf on it!