diff --git a/find-provides b/find-provides index be1669d..2726fc7 100755 --- a/find-provides +++ b/find-provides @@ -3,48 +3,52 @@ # This script reads filenames from STDIN and outputs any relevant provides # information that needs to be included in the package. -if [ "$1" ] -then +unset package_name +if [ "$1" ]; then package_name="$1" fi +# Read stdin, backslash-quoting ' and " filelist=`sed "s/['\"]/\\\&/g"` [ -x /usr/lib/rpm/rpmdeps -a -n "$filelist" ] && echo $filelist | tr '[:blank:]' \\n | /usr/lib/rpm/rpmdeps --provides +# (maybe use printf "%s\n" "$filelist" instead?) +# (why are we replacing witespace with newlines?) -# -# --- any other extra find-provides scripts -for i in /usr/lib/rpm/redhat/find-provides.d/*.prov -do +# Run any other extra find-provides scripts +for i in /usr/lib/rpm/redhat/find-provides.d/*.prov; do [ -x $i ] && (echo $filelist | tr '[:blank:]' \\n | $i | sort -u) done -# -# --- Kernel module imported symbols +# Find symbols provided by the kernel or modules # # Since we don't (yet) get passed the name of the package being built, we # cheat a little here by looking first for a kernel, then for a kmod. -# +# the logic is broken, see comments: +unset is_kernel +# assume it's external modules is_kmod=1 for f in $filelist; do - if [ $(echo "$f" | sed -r -ne 's:^.*/lib/modules/(.*)/(.*).ko$:\2:p') ] - then - is_kernel=1; + # If it is a /lib/modules/*/*.ko, it is from a kernel package + if [ $(echo "$f" | sed -r -ne 's:^.*/lib/modules/(.*)/(.*).ko$:\2:p') ]; then + is_kernel=1 fi - if [ $(echo "$f" | sed -r -ne 's:^.*/boot/(.*):\1:p') ] - then - unset is_kmod; + # If it is a /boot/*, it is the kernel image itself (not an external module) + if [ $(echo "$f" | sed -r -ne 's:^.*/boot/(.*):\1:p') ]; then + unset is_kmod fi done -if [ ! "$is_kernel" ] || [ "$package_name" == "kernel" ] -then +# if it is not /lib/modules/*/*.ko, or if not "kernel", then... it is not an external module??? +if [ ! "$is_kernel" ] || [ "$package_name" == "kernel" ]; then unset is_kmod fi +# run find-provides.ksyms only if SOME files were external modules??? [ -x /usr/lib/rpm/redhat/find-provides.ksyms ] && [ "$is_kmod" ] && printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/redhat/find-provides.ksyms +# (er? why "${filelist[@]}"? it is not even an array!?) exit 0