Contents of /trunk/depend-tools/discover_direct_libs.sh
Parent Directory | Revision Log
Revision 1539 -
(show annotations)
(download)
(as text)
Mon Dec 5 19:49:36 2011 UTC (12 years, 9 months ago) by niro
File MIME type: application/x-sh
File size: 1748 byte(s)
Mon Dec 5 19:49:36 2011 UTC (12 years, 9 months ago) by niro
File MIME type: application/x-sh
File size: 1748 byte(s)
-added direct -lib script
1 | #!/bin/bash |
2 | |
3 | SOURCE="$1" |
4 | if [[ $2 = --references ]] || [[ $2 = -r ]] |
5 | then |
6 | shift;shift |
7 | for i in $1 |
8 | do |
9 | REFERENCES="${REFERENCES} $(< ${i})" |
10 | done |
11 | fi |
12 | |
13 | COLRED="\033[1;6m\033[31m" |
14 | COLDEFAULT="\033[0m" |
15 | |
16 | not_in_list() |
17 | { |
18 | local deplist="$1" |
19 | local dep="$2" |
20 | local i |
21 | |
22 | for i in ${deplist} |
23 | do |
24 | [[ ${i} = ${dep} ]] && return 1 |
25 | done |
26 | |
27 | return 0 |
28 | } |
29 | |
30 | echo -n "resolving linking libs ... " |
31 | |
32 | # first binaries: |
33 | for bin in $(find ${SOURCE} | xargs file | grep "executable" | grep ELF | cut -f 1 -d :) \ |
34 | $(find ${SOURCE} | xargs file | grep "shared object" | grep ELF | cut -f 1 -d :) |
35 | do |
36 | for dep in $(ldd -u ${bin} | sed -e '/^Unused.*/d;' -e '/^[\t]$/d;') |
37 | do |
38 | if [[ ${X11HACK} = true ]] |
39 | then |
40 | dep=$(echo ${dep} | sed "s:/usr/X11R6/:/usr/:g") |
41 | fi |
42 | if [[ -z $(echo ${dep} | grep "notfound") ]] |
43 | then |
44 | if not_in_list "${ALL_DEPS}" "${dep}" |
45 | then |
46 | ALL_DEPS="${ALL_DEPS} ${dep}" |
47 | fi |
48 | fi |
49 | done |
50 | done |
51 | echo "done" |
52 | |
53 | if [[ ${DEBUG} = true ]] |
54 | then |
55 | echo |
56 | for i in $(echo ${ALL_DEPS} | sort ) |
57 | do |
58 | echo ${i} |
59 | done |
60 | echo |
61 | fi |
62 | |
63 | echo -n "resolving packages ... " |
64 | for i in ${ALL_DEPS} |
65 | do |
66 | pkg=$(/sbin/magequery -f "${i}") |
67 | if [[ -z ${pkg} ]] |
68 | then |
69 | NO_PACKAGE_FOUND="${NO_PACKAGE_FOUND}:${i} -> no pkg found." |
70 | continue |
71 | fi |
72 | for z in ${pkg} |
73 | do |
74 | if not_in_list "${ALL_PACKAGES}" "${z}" |
75 | then |
76 | ALL_PACKAGES="${ALL_PACKAGES} ${z}" |
77 | [[ ${DEBUG} = true ]] && echo "DEBUG: ${z} ${i}" |
78 | fi |
79 | done |
80 | done |
81 | echo "done" |
82 | |
83 | echo |
84 | for i in ${ALL_PACKAGES} |
85 | do |
86 | if not_in_list "${REFERENCES}" "${i}" |
87 | then |
88 | echo "${i}" |
89 | else |
90 | echo -e "${COLRED}${i}${COLDEFAULT}" |
91 | fi |
92 | done | sort |
93 | echo |
94 | |
95 | if [[ ${PRINT_NOT_FOUND} = true ]] |
96 | then |
97 | echo |
98 | echo "Non resolved libs:" |
99 | OLDIFS="${IFS}" |
100 | IFS=: |
101 | for i in ${NO_PACKAGE_FOUND} |
102 | do |
103 | echo ${i} |
104 | done | sort |
105 | IFS="${OLDIFS}" |
106 | echo |
107 | fi |