find-provides: clean up
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
This commit is contained in:
parent
50eacae8a7
commit
bef045eaf5
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user