3 # This script reads filenames from STDIN and outputs any relevant provides
4 # information that needs to be included in the package.
8 debuginfolist=($(printf "%s\n" "${filelist[@]}" | grep "/usr/lib/debug/"))
9 filelist=($(printf "%s\n" "${filelist[@]}" | grep -v "/usr/lib/debug/"))
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" | \
14 pythonlist=($(printf "%s\n" "${filelist[@]}" | egrep '/usr/bin/python.\..$'))
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)$"))
22 # --- Alpha does not mark 64bit dependencies
24 alpha*) mark64=false ;;
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##*/}"
35 if $mark64 && file -L "$f" 2>/dev/null | grep "ELF 64-bit" >/dev/null; then
36 lib64="()(64bit)" slib64="(64bit)"
41 objdump -p "$f" | awk '
43 /Version definitions:/ { START=1; }
44 /^[0-9]/ && (START==1) { print $4; }
47 while read symbol ; do
48 echo "$soname($symbol)$slib64"
54 [ -x /usr/lib/rpm/perl.prov ] &&
55 printf "%s\n" "${filelist[@]}" | grep '\.pm$' | /usr/lib/rpm/perl.prov | sort -u
59 [ -x /usr/lib/rpm/pythondeps.sh -a -n "$pythonlist" ] &&
60 printf "%s\n" "${pythonlist[@]}" | /usr/lib/rpm/pythondeps.sh -P | sort -u
64 [ -x /usr/lib/rpm/tcl.prov -a -n "$tcllist" ] &&
65 printf "%s\n" "${tcllist[@]}" | /usr/lib/rpm/tcl.prov | sort -u
69 [ -x /usr/lib/rpm/firmware.prov -a -n "$firmwarelist" ] &&
70 printf "%s\n" "${firmwarelist[@]}" | /usr/lib/rpm/firmware.prov | sort -u
74 [ -x /usr/lib/rpm/debuginfo.prov -a -n "$debuginfolist" ] &&
75 printf "%s\n" "${debuginfolist[@]}" | /usr/lib/rpm/debuginfo.prov | sort -u
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
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
91 [ -x /usr/lib/rpm/fontconfig.prov -a -n "$fontlist" ] &&
92 printf "%s\n" "${fontlist[@]}" | /usr/lib/rpm/fontconfig.prov | sort -u
95 # --- Kernel module exported symbols
96 [ -x /usr/lib/rpm/find-provides.ksyms ] &&
97 printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/find-provides.ksyms "$@"
100 # --- GStreamer provides, codecs
101 [ -x /usr/lib/rpm/gstreamer-provides ] &&
102 printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/gstreamer-provides | sort -u