Add macro %isu_package to generate ISU Package
[platform/upstream/rpm.git] / scripts / find-provides.ksyms
1 #! /bin/bash
2
3 IFS=$'\n'
4
5 is_opensuse=false
6
7 if test "$1" = "--opensuse"; then
8     if test "$2" -gt 0; then
9         is_opensuse=true
10     fi
11     shift 2
12 fi
13
14 if ! $is_opensuse; then
15     trap 'rm -f "$tmp"' EXIT
16     tmp=$(mktemp)
17 fi
18
19
20 while read f; do
21     test -e "$f" || continue
22     is_module=""
23     case "$f" in
24     *.debug)
25         continue
26         ;;
27     */boot/vmlinu[xz]-*)
28         flavor=${f##*/vmlinu[xz]-}
29         flavor=${flavor%.gz}
30         echo "kernel-uname-r = $flavor"
31         version=${flavor}
32         flavor=${flavor##*-}
33         ;;
34     */lib/modules/*/*.ko | */lib/modules/*/*.ko.gz | */boot/vmlinu[xz]*)
35         is_module="1"
36         ;;
37     *)
38         continue
39     esac
40     if $is_opensuse; then
41         continue
42     fi
43     unzip=false
44     case "$f" in
45     *.gz | */boot/vmlinuz*)
46         unzip=true
47     esac
48     if $unzip && gzip -cd "$f" >"$tmp"; then
49         f=$tmp
50     fi
51     if test -z "$flavor" -a -n "$is_module" ; then
52         flavor=$(/sbin/modinfo -F vermagic "$f")
53         flavor=${flavor%% *}
54         version=${flavor}
55         flavor=${flavor##*-}
56     fi
57     if test -z "$flavor"; then
58         echo "warning: cannot determine kernel flavor from $(/sbin/modinfo -F vermagic "$f" 2>&1)" >&2
59         continue
60     fi
61     objdir=$(readlink /lib/modules/$version/build)
62     objdir_build=$RPM_BUILD_ROOT$(readlink $RPM_BUILD_ROOT/lib/modules/$version/build)
63     for i in $objdir_build $objdir ; do
64             ksym_provides=$i/scripts/mod/ksym-provides
65             [ -x $ksym_provides ] && break
66     done
67     if [ -x $ksym_provides ] ; then
68             $ksym_provides $flavor $f
69     else
70             major=${version%%.*}
71             sub=${version#*.}
72             sub=${sub%%.*}
73             if [ "$major" -ge 4 -a "$sub" -ge 10 ] ; then
74                     echo "error: cannot determine ksym provides of $f - missing ksym-povides tool." >&2
75             else
76                     nm "$f" \
77                             | sed -r -ne "s/^0*([0-9a-f]+) A __crc_(.+)/ksym($flavor:\\2) = \\1/p"
78             fi
79     fi
80 done \
81 | sort -u