5 trap 'rm -rf "$tmpdir"' 0 1 2 3 15
9 echo >&2 "Usage: $0 srclib destlib library ..."
22 echo "$lib" >> "$tmpdir"/todo
28 libfile="$destlib"/"$libname"
29 if [ ! -f "$libfile" ]; then
30 echo >&2 "$libfile not found"
33 "$READELF" -d "$libfile" | awk '$1=="0x00000001" {print $NF}' | tr -d '][' | grep '\.so\.' | sort >> "$tmpdir"/worklist
39 libfile=`echo "$libname" | sed -e 's/\.so\..*/.so/'`
40 cp "$srclib"/"$libname" "$destlib"/"$libfile"
41 echo "$libfile" >> "$tmpdir"/worklist
42 for deplib in `"$READELF" -d "$destlib"/"$libfile" | awk '$1=="0x00000001" {print $NF}' | tr -d '][' | grep '\.so\.' | sort`; do
43 echo "$deplib $libname" >> "$tmpdir"/liblist
47 rm -f "$tmpdir"/liblist
48 touch "$tmpdir"/liblist
49 sort "$tmpdir"/todo > "$tmpdir"/processed
50 while [ -s "$tmpdir"/todo ]; do
51 rm -f "$tmpdir"/worklist
52 touch "$tmpdir"/worklist
53 cat "$tmpdir"/todo | while read lib; do
54 if [ ! -z "$lib" ]; then
58 sort "$tmpdir"/worklist | uniq > "$tmpdir"/todo.tmp
59 comm -13 "$tmpdir"/processed "$tmpdir"/todo.tmp > "$tmpdir"/todo
60 sort -m "$tmpdir"/processed "$tmpdir"/todo | uniq > "$tmpdir"/processed.tmp
61 mv "$tmpdir"/processed.tmp "$tmpdir"/processed
62 rm -f "$tmpdir"/worklist
63 touch "$tmpdir"/worklist
64 cat "$tmpdir"/todo | while read lib; do
65 if [ ! -z "$lib" ]; then
69 mv "$tmpdir"/worklist "$tmpdir"/todo
71 tsort "$tmpdir"/liblist