aboutsummaryrefslogtreecommitdiffstats
path: root/kmod.prov
diff options
context:
space:
mode:
Diffstat (limited to 'kmod.prov')
-rw-r--r--kmod.prov41
1 files changed, 15 insertions, 26 deletions
diff --git a/kmod.prov b/kmod.prov
index 6ad60b6..f02d8a0 100644
--- a/kmod.prov
+++ b/kmod.prov
@@ -1,28 +1,17 @@
-#!/bin/sh
+#!/bin/sh +x
-provideslist=`sed "s/['\"]/\\\&/g"`
-modulelist=$(echo "$provideslist" | egrep '^.*(/lib/modules/|/var/lib/dkms/).*\.ko(\.[g,x]z)?$')
-echo $modulelist | xargs -r /sbin/modinfo | \
- perl -lne '
-$name = $1 if m!^filename:\s*(?:.*/)?([^/]+)\.k?o!;
-$ver = $1 if /^version:\s*[a-zA-Z]{0,6}\-?(\d+[\.\:\-\[\]]?\d*[\.\:\-\[\]]?\d*[\.\:\-\[\]]?\d*[\.\:\-\[\]]?\d*-?[a-zA-Z]{0,6}\d?).*/;
-$ver =~ s/(\[|\]|\:|-)/_/;
-if (/^vermagic:/) {
- print "kmod\($name\)" . ($ver ? " = $ver" : "") if $name;
- undef $name; undef $ver;
-}
-'
-dkmslist=$(echo "$provideslist" | egrep '(/var/lib/dkms-binary/[^/]+/[^/]+|/usr/src)/[^/]+/dkms.conf$')
-[ -n "$dkmslist" ] && for d in $dkmslist; do
- VERSION=`sed -rne 's/^PACKAGE_VERSION="?([^"]+)"?$/\1/;T;p' $d`
- [ -z "$VERSION" ] && continue
- PACKAGE_NAME=`sed -rne 's/^PACKAGE_NAME="?([^"]+)"?$/\1/;T;p' $d`
- MODULES=`sed -rne 's/^DEST_MODULE_NAME\[[0-9]+\]="?([^"]+)"?$/\1/;T;p' $d`
- [ -z "$MODULES" ] && MODULES=`sed -rne 's/^BUILT_MODULE_NAME\[[0-9]+\]="?([^"]+)"?$/\1/;T;p' $d`
- # default on PACKAGE_NAME if no BUILT_MODULE_NAME is specified
- [ -z "$MODULES" ] && MODULES=$PACKAGE_NAME
- echo "$MODULES" | sed -re "s/\\\$PACKAGE_NAME/$PACKAGE_NAME/" | while read m; do
- echo "kmod($m) = $VERSION"
- done
+IFS=$'\n'
+
+for i in $(grep -E '(/lib/modules/.*\.ko|/lib/modules/.*/modules.builtin)');
+do
+ kmod=$(basename $i | sed -e 's/.[xg]z//');
+
+ if [ $kmod == "modules.builtin" ]; then
+ for j in $(cat $i); do
+ j=$(basename $j);
+ echo "kmod($j)"
+ done
+ else
+ echo "kmod($kmod)"
+ fi
done
-exit 0