annotate Scripts/lint-shlibs.sh @ 1258:2d76a344c29e

python/python: fix build and manual pages
author David Demelier <markand@malikania.fr>
date Wed, 03 Nov 2021 06:42:05 +0100
parents 297b5eef115e
children 9867e578b1a9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 #
1c119dbea5e6 vanilla: add basic script for checking dependencies
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 # Copyright (c) 2019 David Demelier <markand@malikania.fr>
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