Fix building issue for tizen_base(configure: error: --with-msm given, but attr/xattr...
[platform/upstream/rpm.git] / autodeps / linux.prov
1 #!/bin/bash
2
3 # This script reads filenames from STDIN and outputs any relevant provides
4 # information that needs to be included in the package.
5 IFS=$'\n'
6 filelist=($(cat))
7
8 debuginfolist=($(printf "%s\n" "${filelist[@]}" | grep "/usr/lib/debug/"))
9 filelist=($(printf "%s\n" "${filelist[@]}" | grep -v "/usr/lib/debug/"))
10
11 solist=($(printf "%s\n" "${filelist[@]}" | grep "\\.so" | grep -v "^/lib/ld.so" | \
12           tr '\n' '\0' | xargs -0 -r file -L | grep "ELF.*shared object" | \
13           cut -d: -f1))
14 pythonlist=($(printf "%s\n" "${filelist[@]}" | egrep '/usr/bin/python.\..$'))
15 tcllist=
16 monolist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.(exe|dll)\$"))
17 firmwarelist=($(printf "%s\n" "${filelist[@]}" | grep "/lib/firmware/"))
18 pkgconfiglist=($(printf "%s\n" "${filelist[@]}" | egrep '\.pc$'))
19 fontlist=($(printf "%s\n" "${filelist[@]}" | egrep -i "/usr/share/fonts/.*\.(ttf|otf|pfa)$"))
20
21 #
22 # --- Alpha does not mark 64bit dependencies
23 case `uname -m` in
24   alpha*)       mark64=false ;;
25   *)            mark64=true ;;
26 esac
27
28 #
29 # --- Library sonames and weak symbol versions (from glibc).
30 for f in "${solist[@]}"; do
31     soname=$(objdump -p "$f" | awk '/SONAME/ {print $2}')
32     [ -n "$soname" -a -L "$f" ] && continue
33     [ -z "$soname" ] && soname="${f##*/}"
34
35     if $mark64 && file -L "$f" 2>/dev/null | grep "ELF 64-bit" >/dev/null; then
36         lib64="()(64bit)" slib64="(64bit)"
37     else
38         lib64= slib64=
39     fi
40     echo "$soname$lib64"
41     objdump -p "$f" | awk '
42         BEGIN { START=0 ; }
43         /Version definitions:/ { START=1; }
44         /^[0-9]/ && (START==1) { print $4; }
45         /^$/ { START=0; }
46     ' | \
47         while read symbol ; do
48             echo "$soname($symbol)$slib64"
49         done
50 done | sort -u
51
52 #
53 # --- Perl modules.
54 [ -x /usr/lib/rpm/perl.prov ] &&
55     printf "%s\n" "${filelist[@]}" | grep '\.pm$' | /usr/lib/rpm/perl.prov | sort -u
56
57 #
58 # --- Python modules.
59 [ -x /usr/lib/rpm/pythondeps.sh -a -n "$pythonlist" ] &&
60     printf "%s\n" "${pythonlist[@]}" | /usr/lib/rpm/pythondeps.sh -P | sort -u
61
62 #
63 # --- Tcl modules.
64 [ -x /usr/lib/rpm/tcl.prov -a -n "$tcllist" ] &&
65     printf "%s\n" "${tcllist[@]}" | /usr/lib/rpm/tcl.prov | sort -u
66
67 #
68 # --- firmware files
69 [ -x /usr/lib/rpm/firmware.prov -a -n "$firmwarelist" ] &&
70      printf "%s\n" "${firmwarelist[@]}" | /usr/lib/rpm/firmware.prov | sort -u
71
72 #
73 # --- debuginfo files
74 [ -x /usr/lib/rpm/debuginfo.prov -a -n "$debuginfolist" ] &&
75      printf "%s\n" "${debuginfolist[@]}" | /usr/lib/rpm/debuginfo.prov | sort -u
76
77 #
78 # --- Mono exes/dlls
79 : ${MONO_PREFIX=/usr}
80 if [ -x $MONO_PREFIX/bin/mono -a -n "$monolist" ] ; then
81     printf "%s\n" "${monolist[@]}" | MONO_PATH=$MONO_PREFIX/lib${MONO_PATH:+:$MONO_PATH} prefix=$MONO_PREFIX $MONO_PREFIX/bin/mono-find-provides || echo "WARNING: MONO RPM PROVIDES WERE NOT GENERATED FOR THIS BUILD!!" 1>&2
82 fi
83
84 #
85 # --- pkgconfig provides
86 [ -x /usr/lib/rpm/pkgconfigdeps.sh -a -n "$pkgconfiglist" ] &&
87      printf "%s\n" "${pkgconfiglist[@]}" | /usr/lib/rpm/pkgconfigdeps.sh -P | sort -u
88
89 #
90 # --- font provides
91 [ -x /usr/lib/rpm/fontconfig.prov -a -n "$fontlist" ] &&
92      printf "%s\n" "${fontlist[@]}" | /usr/lib/rpm/fontconfig.prov | sort -u
93
94 #
95 # --- Kernel module exported symbols
96 [ -x /usr/lib/rpm/find-provides.ksyms ] &&
97     printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/find-provides.ksyms "$@"
98
99 #
100 # --- GStreamer provides, codecs
101 [ -x /usr/lib/rpm/gstreamer-provides ] &&
102     printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/gstreamer-provides | sort -u
103
104 exit 0