Mercurial > vanilla
annotate Scripts/lint-shlibs.sh @ 1305:d6172cfe210f
graphics/pixman: upgrade to 0.40.0
author | David Demelier <markand@malikania.fr> |
---|---|
date | Thu, 11 Nov 2021 20:27:07 +0100 |
parents | 9867e578b1a9 |
children |
rev | line source |
---|---|
1115
297b5eef115e
vanilla: change shebangs to /bin/sh
David Demelier <markand@malikania.fr>
parents:
1090
diff
changeset
|
1 #!/bin/sh |
1090
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 # |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 # lint-shlibs.sh -- quick and dirty script to check shared libraries |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 # |
1288
9867e578b1a9
misc: update copyright years
David Demelier <markand@malikania.fr>
parents:
1115
diff
changeset
|
5 # Copyright (c) 2019-2021 David Demelier <markand@malikania.fr> |
1090
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 # |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 # Permission to use, copy, modify, and/or distribute this software for any |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 # purpose with or without fee is hereby granted, provided that the above |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 # copyright notice and this permission notice appear in all copies. |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 # |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 # |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 . $(busybox dirname $0)/scripts.subr |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 dependencies() |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 { |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 vpk info -l $1 | while read -r file; do |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 if ! file /$file | grep -q "dynamically linked"; then |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 continue |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 fi |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 # TODO: this is absolutely insane. |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 readelf -d /$file | grep -E 'Shared library' | awk '{ print $5 }' | sed -e "s/\[//" | sed -e "s/\]//" | while read -r library; do |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 echo "$library" |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 done |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 done | sort | uniq |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 } |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 check() |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 { |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 printf "${BOLD}==> checking shared libraries for $1:${RESET}\n" |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 if ! vpk info $1 > /dev/null 2>&1; then |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 echo "warning: not installed, can't verify" 1>&2 |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 return 1; |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 fi |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
44 |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 dependencies $1 | while read -r lib; do |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 # Skip implicit dependencies |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 case $lib in |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 "libc.so"*|"libc++.so"*|"libc++abi.so"*|"libunwind.so"*) |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 continue |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 ;; |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 esac |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 # Find in which package this library belong to. |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 local pkg=$(basename $(grep -l $lib /var/lib/vpk/* | head -n1)) |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 # Skip the dependency for itself. |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 if [ "$pkg" = "$1" ]; then |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 continue |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 fi |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 # Check if this package is dependency of it. |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
62 if ! vpk info -m "depends" $1 | grep -q $pkg; then |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 echo "$pkg dependency missing (shared library: $lib)" |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
64 fi |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
65 done |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
66 } |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
67 |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
68 list() |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
69 { |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
70 if [ "$#" -eq 0 ]; then |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 vpk list | tr '\n' ' ' |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
72 else |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 echo "$@" |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
74 fi |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
75 } |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 for pkg in $(list "$@"); do |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 check $pkg |
1c119dbea5e6
vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 done |