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

Allan McRae allan at archlinux.org
Sun Mar 1 00:52:26 EST 2009


Thomas Bächler wrote:
> Aaron Griffin schrieb:
>>>> Packages affected, according to the web interface:
>>>>    * abook
>>>>    * afterstep
>>>>    * archboot
>>>>    * bash
>>>>    * bc
>>>>    * cdcd
>>>>    * clisp
>>>>    * device-mapper
>>>>    * freeciv
>>>>    * fvwm
>>>>    * fvwm-devel
>>>>    * gftp
>>>>    * gnuchess
>>>>    * gnutls
>>>>    * gphoto2
>>>>    * gutenprint
>>>>    * hugs98
>>>>    * inetutils
>>>>    * jack-audio-connection-kit
>>>>    * lftp
>>>>    * libxml2
>>>>    * lua
>>>>    * maxima
>>>>    * mysql-clients
>>>>    * ntp
>>>>    * pal
>>>>    * php
>>>>    * pilot-link
>>>>    * postgresql-libs
>>>>    * python24
>>>>    * r
>>>>    * ratpoison
>>>>    * rosegarden
>>>>    * ruby
>>>>    * socat
>>>>    * sqlite3
>>>>    * sqlite3 (testing)
>>>>    * swi-prolog
>>>>    * tunepimp
>>>>    * uml_utilities
>>>>    * unixodbc
>>>>    * wvstreams
>
> Add the new wpa_supplicant to that list (wpa_cli now uses readline).
>
>
>>> #! /bin/bash
>>>
>>> # Run in minimal chroot to avoid false positives due to dependancies.
>>> # Chroot can be built with:
>>> # sudo mkarchroot <chrootdir>/root glibc coreutils findutils grep 
>>> tar gzip
>>>
>>> # Copy script to <chrootdir>/root/tmp and packages to
>>> <chrootdir>/root/tmp/pkg
>>>
>>> # Usage:
>>> # ./rebuildlist <library>
>>> # <library> does not contain ".so"
>>>
>>>
>>> library=$1
>>> if [ "x$library" == "x" ]; then
>>>        echo "Usage $0 <library>"
>>>        exit
>>> fi
>>>
>>> for pkg in $(ls pkg); do
>>>        echo $pkg
>>>        mkdir tmp
>>>        cp pkg/$pkg tmp
>>>        cd tmp
>>>        tar -xf $pkg
>>>        rm $pkg
>>>        found=$(ldd $(find .) 2>/dev/null | grep "${library}.so" | wc 
>>> -l)
>>>        if [ $found -ne 0 ]; then
>>>                echo $pkg >> ../rebuildlist.txt
>>>        fi
>>>        cd ..
>>>        rm -rf tmp
>>> done
>
> 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.

Allan





More information about the arch-dev-public mailing list