]>
Commit | Line | Data |
---|---|---|
74f36968 JR |
1 | #!/bin/sh |
2 | ||
3 | # Kernel module dependency extractor. | |
4 | # | |
5 | # Author(s): Danny Tholen <obiwan@mandriva.org> | |
b6c3f478 | 6 | # Olivier Blin <blino@mandriva.org> |
74f36968 JR |
7 | # Per Øyvind Karlsen <peroyvind@mandriva.org> |
8 | # | |
9 | ||
10 | provides=0 | |
11 | requires=0 | |
12 | modinfo=/sbin/modinfo | |
13 | ||
14 | while [ "$#" -ne 0 ]; do | |
15 | case $1 in | |
16 | -P|--provides) | |
17 | provides=1 | |
18 | ;; | |
19 | -R|--requires) | |
20 | requires=1 | |
21 | ;; | |
22 | --modinfo) | |
23 | shift | |
24 | modinfo=$1 | |
25 | ;; | |
26 | esac | |
27 | shift | |
28 | done | |
29 | ||
30 | if [ $requires -eq 1 ]; then | |
31 | echo "--requires not implemented!" 1>&2 | |
32 | exit 1 | |
33 | fi | |
34 | ||
35 | if [ $provides -eq 1 ]; then | |
36 | provideslist=`sed "s/['\"]/\\\&/g"` | |
b6c3f478 | 37 | modulelist=$(echo "$provideslist" | grep -E '^.*(/lib/modules/|/var/lib/dkms/).*\.ko(\.gz|\.xz)?$') |
74f36968 JR |
38 | echo $modulelist | xargs -r $modinfo | \ |
39 | perl -lne ' | |
40 | $name = $1 if m!^filename:\s*(?:.*/)?([^/]+)\.k?o!; | |
41 | $ver = $1 if /^version:\s*[a-zA-Z]{0,6}\-?(\d+[\.\:\-\[\]]?\d*[\.\:\-\[\]]?\d*[\.\:\-\[\]]?\d*[\.\:\-\[\]]?\d*-?[a-zA-Z]{0,6}\d?).*/; | |
42 | $ver =~ s/(\:|-)/_/; | |
43 | if (/^vermagic:/) { | |
44 | print "kmod\($name\)" . ($ver ? " = $ver" : "") if $name; | |
45 | undef $name; undef $ver; | |
46 | } | |
47 | ' | |
b6c3f478 | 48 | dkmslist=$(echo "$provideslist" | grep -E '(/var/lib/dkms-binary/[^/]+/[^/]+|/usr/src)/[^/]+/dkms.conf$') |
74f36968 JR |
49 | [ -n "$dkmslist" ] && for d in $dkmslist; do |
50 | VERSION=`sed -rne 's/^PACKAGE_VERSION="?([^"]+)"?$/\1/;T;p' $d` | |
51 | [ -z "$VERSION" ] && continue | |
52 | PACKAGE_NAME=`sed -rne 's/^PACKAGE_NAME="?([^"]+)"?$/\1/;T;p' $d` | |
53 | MODULES=`sed -rne 's/^DEST_MODULE_NAME\[[0-9]+\]="?([^"]+)"?$/\1/;T;p' $d` | |
54 | [ -z "$MODULES" ] && MODULES=`sed -rne 's/^BUILT_MODULE_NAME\[[0-9]+\]="?([^"]+)"?$/\1/;T;p' $d` | |
55 | # default on PACKAGE_NAME if no BUILT_MODULE_NAME is specified | |
56 | [ -z "$MODULES" ] && MODULES=$PACKAGE_NAME | |
57 | echo "$MODULES" | sed -re "s/\\\$PACKAGE_NAME/$PACKAGE_NAME/" | while read m; do | |
58 | echo "kmod($m) = $VERSION" | |
59 | done | |
60 | done | |
61 | fi |