#!/bin/sh provideslist=`sed "s/['\"]/\\\&/g"` modulelist=$(echo "$provideslist" | egrep '^.*(/lib/modules/|/var/lib/dkms/).*\.ko(\.gz)?$') 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?).*/; 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 done