aboutsummaryrefslogtreecommitdiffstats
path: root/devel.req
blob: 356512c6d1de62128e5d644b1b99757bdc22407b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/bin/sh
# .so files.
#
filelist=
while read instfile ; do
	filelist="$filelist $instfile"
done

# for objdump:
export LC_ALL=C

# --- Set needed to 0 for traditional find-requires behavior.
needed=1

for i in `echo $filelist | tr '[:blank:]' "\n" | egrep "(/usr)?/lib(|64)/[^/]+\.so$"`; do
    objd=`objdump -p ${i} | grep SONAME`
    lib64=`if file -L $i 2>/dev/null | grep "ELF 64-bit" >/dev/null; then echo "(64bit)"; fi` && \
    if [ -h ${i} -a -n "${objd}" ]; then
      if [ "$needed" -eq 0 ]; then
       ldd ${i} \
       | grep -v "statically linked" \
       | grep -v "/\(lib\|lib64\)/\(ld\|ld64\|ld-linux.*\)\.so" \
       | perl -p -e "s/\s+(\S+)\.so.*/devel(\1$lib64)/g"
      else
       objdump -p $i | grep -v "\(ld\|ld64\|ld-linux.*\)\.so" \
                     | awk 'BEGIN { START=0; }
       /^$/ { START=0; }
       /^Dynamic Section:$/ { START=1; }
       (START==1) && /NEEDED/ {
           sub(/^/, "devel(", $2) ;
           sub(/\.so.*$/, "'$lib64')", $2) ;
           print $2 ;
       }
       '
      fi
    fi
done | egrep -v 'devel\(linux-gate|linux-vdso32|linux-vdso64|lib(c|pthread|rt)(\(64bit\))?\)' | sort -u