~ubuntu-branches/debian/stretch/dkms/stretch

« back to all changes in this revision

Viewing changes to dkms_common.postinst

  • Committer: Bazaar Package Importer
  • Author(s): Giuseppe Iuculano, 8510207
  • Date: 2009-12-15 08:57:24 UTC
  • mfrom: (1.1.12 upstream) (7.1.1 sid)
  • Revision ID: james.westby@ubuntu.com-20091215085724-i177u1akx59x30ou
Tags: 2.1.1.0-2
[8510207] Do not install upstart job file

Show diffs side-by-side

added added

removed removed

Lines of Context:
6
6
 
7
7
set -e
8
8
 
 
9
# Check the existence of a kernel named as $1
 
10
_is_kernel_name_correct() {
 
11
    CORRECT="no"
 
12
    KERNEL_NAME=$1
 
13
    
 
14
    for kernel in /boot/config-*; do
 
15
        KERNEL=${kernel#*-}
 
16
        if [ ${KERNEL} = ${KERNEL_NAME} ]; then
 
17
            CORRECT="yes"
 
18
            break
 
19
        fi
 
20
    done
 
21
 
 
22
    echo $CORRECT
 
23
}
 
24
 
 
25
 
 
26
# Get the most recent kernel on Debian based systems. This keeps
 
27
# into account both the version and the ABI. If the current kernel
 
28
# is the most recent kernel then the function will print a null string.
 
29
_get_newest_kernel_debian() {
 
30
    NEWEST_KERNEL=
 
31
    NEWEST_VERSION=
 
32
    NEWEST_ABI=
 
33
    
 
34
    for kernel in /boot/config-*; do
 
35
        KERNEL=${kernel#*-}
 
36
        KERNEL_VERSION=${KERNEL%%-*}
 
37
        ABI=${KERNEL#*-}
 
38
        ABI=${ABI%%-*}
 
39
 
 
40
        if [ -z $NEWEST_KERNEL ]; then
 
41
            # The 1st time get a version which is bigger than $1
 
42
            COMPARE_TO=$1
 
43
        else
 
44
            # Get the biggest version
 
45
            COMPARE_TO="$NEWEST_VERSION-$NEWEST_ABI"
 
46
        fi
 
47
            
 
48
        # if $kernel is greater than $COMPARE_TO
 
49
        if [ `dpkg --compare-versions "$KERNEL_VERSION-$ABI" gt "$COMPARE_TO" && echo "yes" || \
 
50
              echo "no"` = "yes" ]; then
 
51
            NEWEST_KERNEL=$KERNEL
 
52
            NEWEST_VERSION=$KERNEL_VERSION
 
53
            NEWEST_ABI=$ABI
 
54
        fi
 
55
    done
 
56
 
 
57
    echo "$NEWEST_KERNEL"
 
58
}
 
59
 
 
60
# Get the most recent kernel in Rhel based systems. If the current kernel
 
61
# is the most recent kernel then the function will print a null string.
 
62
_get_newest_kernel_rhel() {
 
63
    NEWEST_KERNEL=
 
64
    
 
65
    LAST_INSTALLED_KERNEL=$(rpm -q --whatprovides kernel  --last | grep kernel -m1 | cut -f1 -d' ')
 
66
 
 
67
    LIK_FORMATTED_NAME=$(rpm -q $LAST_INSTALLED_KERNEL --queryformat="%{VERSION}-%{RELEASE}.%{ARCH}\n")
 
68
 
 
69
    if [ `echo $LIK_FORMATTED_NAME | grep 2.6 >/dev/null` ]; then
 
70
        # Fedora and Suse
 
71
        NEWEST_KERNEL=$LIK_FORMATTED_NAME
 
72
    else
 
73
        # Hack for Mandriva where $LIK_FORMATTED_NAME is broken
 
74
        LIK_NAME=$(rpm -q $LAST_INSTALLED_KERNEL --queryformat="%{NAME}\n") 
 
75
        LIK_TYPE=${LIK_NAME#kernel-}
 
76
        LIK_TYPE=${LIK_TYPE%%-*}
 
77
        LIK_STRIPPED=${LIK_NAME#kernel-}
 
78
        LIK_STRIPPED=${LIK_STRIPPED#$LIK_TYPE-}
 
79
        LIK_STRIPPED_BASE=${LIK_STRIPPED%%-*}
 
80
        LIK_STRIPPED_END=${LIK_STRIPPED#$LIK_STRIPPED_BASE-}
 
81
        LIK_FINAL=$LIK_STRIPPED_BASE-$LIK_TYPE-$LIK_STRIPPED_END
 
82
 
 
83
        NEWEST_KERNEL=$LIK_FINAL
 
84
    fi
 
85
 
 
86
    echo $NEWEST_KERNEL
 
87
}
 
88
 
 
89
# Get the newest kernel on Debian and Rhel based systems.
 
90
get_newest_kernel() {
 
91
    NEWEST_KERNEL=
 
92
    # Try Debian first as rpm can be installed in Debian based distros
 
93
    if [ -e /usr/bin/dpkg ]; then
 
94
        # If DEB based
 
95
        CURRENT_KERNEL=$1
 
96
        CURRENT_VERSION=${CURRENT_KERNEL%%-*}
 
97
        CURRENT_ABI=${CURRENT_KERNEL#*-}
 
98
        CURRENT_FLAVOUR=${CURRENT_ABI#*-}
 
99
        CURRENT_ABI=${CURRENT_ABI%%-*}
 
100
        NEWEST_KERNEL=$(_get_newest_kernel_debian "$CURRENT_VERSION-$CURRENT_ABI")
 
101
 
 
102
    elif [ `which rpm &>/dev/null` ]; then
 
103
        # If RPM based
 
104
        NEWEST_KERNEL=$(_get_newest_kernel_rhel)
 
105
    fi
 
106
 
 
107
    # Make sure that kernel name that we extracted corresponds to an installed
 
108
    # kernel
 
109
    if [ $NEWEST_KERNEL ] && [ `_is_kernel_name_correct $NEWEST_KERNEL` = "no" ]; then
 
110
        NEWEST_KERNEL=
 
111
    fi
 
112
 
 
113
    echo $NEWEST_KERNEL    
 
114
}
 
115
 
9
116
NAME=$1
10
117
VERSION=$2
11
118
TARBALL_ROOT=$3
76
183
    KERNELS=$CURRENT_KERNEL
77
184
fi
78
185
 
79
 
if [ ! -z "$ARCH" ]; then
 
186
# Here we look for the most recent kernel so that we can
 
187
# build the module for it (in addition to doing it for the
 
188
# current kernel.
 
189
NEWEST_KERNEL=$(get_newest_kernel "$KERNELS")
 
190
 
 
191
if [ -n "$NEWEST_KERNEL" ] && [ ${CURRENT_KERNEL} != ${NEWEST_KERNEL} ]; then
 
192
    echo "Building for $CURRENT_KERNEL and $NEWEST_KERNEL"
 
193
    KERNELS="$KERNELS $NEWEST_KERNEL"
 
194
else
 
195
    echo "Building only for $CURRENT_KERNEL"
 
196
fi
 
197
 
 
198
 
 
199
if [ -n "$ARCH" ]; then
80
200
    echo "Building for architecture $ARCH"
81
201
    ARCH="-a $ARCH"
82
202
fi
116
236
        dkms install -m $NAME -v $VERSION -k $KERNEL $ARCH
117
237
    fi
118
238
done
 
239