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

« back to all changes in this revision

Viewing changes to dkms_autoinstaller

  • Committer: Bazaar Package Importer
  • Author(s): Giuseppe Iuculano, David Paleino, Giuseppe Iuculano
  • Date: 2010-01-27 10:02:27 UTC
  • mfrom: (1.1.13 upstream)
  • Revision ID: james.westby@ubuntu.com-20100127100227-p8fawacw9e4e2spw
Tags: 2.1.1.1-1
[ David Paleino ]
* [19ac85e] Added DKMS debhelper script (Closes: #553665)

[ Giuseppe Iuculano ]
* [9d66264] Imported Upstream version 2.1.1.1
* [0735c11] Removed 01_upstart.patch
* [ec26539] Merge from Ubuntu: Remove the init script and Upstart job.
  There is no reason that DKMS needs to run on boot; you can build
  modules for non-running kernels just fine at installation time.
* [48ff9a4] Correct a minor shell error in dkms_autoinstaller
* [5c76a45] Fixed a minor spelling error in dh_dkms man page
* [c611461] debian/preinst: Use set -e

Show diffs side-by-side

added added

removed removed

Lines of Context:
34
34
    local exitval=0
35
35
    local exitval_file=`mktemp /tmp/dkms.XXXXXX`
36
36
    if [ "$3" = background ] && [ -z "$verbose" ]; then
37
 
    (eval $1 >/dev/null 2>&1; echo "exitval=$?" >> "$exitval_file") &
38
 
    while [ -e "$exitval_file" ] && ! [ -s "$exitval_file" ]; do
39
 
        sleep 3
40
 
    done
41
 
    . "$exitval_file"
 
37
        (eval $1 >/dev/null 2>&1; echo "exitval=$?" >> "$exitval_file") &
 
38
        while [ -e "$exitval_file" ] && ! [ -s "$exitval_file" ]; do
 
39
            sleep 3
 
40
        done
 
41
        . "$exitval_file"
42
42
    else
43
 
    eval $1; exitval=$?
 
43
        eval $1; exitval=$?
44
44
    fi
45
45
    [ $exitval -gt 0 ] && logger -t dkms_autoinstaller "(bad exit status: $exitval)"
46
46
    rm -f "$exitval_file"
47
47
    return $exitval
48
48
}
49
49
 
50
 
emit_module_status ()
51
 
{
52
 
    #$1 is the signal to emit (successful|failed)
53
 
    #$2 is the module name in question
54
 
    if [ -x /sbin/initctl ]; then
55
 
        initctl emit build-$1 MODULE=$2 2>/dev/null
56
 
    fi
57
 
}
58
 
 
59
50
# Set Variables
60
51
uname=`uname -mr`
61
 
[ -n "$2" ] && kernel=$2 || kernel=${uname% *}
 
52
[ -n "$2" ] && kernel=$2
62
53
arch=${uname#* }
63
54
kernel_preparation_done=""
64
55
dkms_tree="/var/lib/dkms"
69
60
  start)
70
61
    log_daemon_msg "Running DKMS auto installation service for kernel $kernel"
71
62
 
 
63
    if [ -z "$kernel" ]; then
 
64
        if [ -L /vmlinuz -a -e /vmlinuz ]; then
 
65
            linktarget="$(basename "$(readlink /vmlinuz)")"
 
66
            kernel="${linktarget##vmlinuz-}"
 
67
        else
 
68
            kernel=${uname% *}
 
69
        fi
 
70
    fi
 
71
 
72
72
    # Iterate over the modules
73
73
    for modulepath in $(find "$dkms_tree" -maxdepth 1 -mindepth 1 -type d); do
74
74
 
105
105
            log_action_end_msg 1
106
106
            continue
107
107
        elif [ -n "$already_installed" ]; then
108
 
            emit_module_status successful $module_in_tree
109
108
            log_action_end_msg 0
110
109
        elif [ -z "$do_autoinstall" ]; then
111
110
            logger -t dkms_autoinstaller "$module_in_tree ($version_in_tree): AUTOINSTALL not set in its dkms.conf."
112
111
            log_action_end_msg 0
113
112
        elif [ -n "$do_autoinstall" ] && [ "$version_count" -gt 1 ]; then
114
113
            logger -t dkms_autoinstaller "$module_in_tree: Multiple versions in DKMS. Unsure what to do. Resolve manually."
115
 
            emit_module_status failed $module_in_tree
116
114
            log_action_end_msg 1
117
115
        else
118
116
            logger -t dkms_autoinstaller "$module_in_tree ($version_in_tree): Installing module on kernel $kernel."
132
130
                fi
133
131
                if [ "$return_status" -eq 0 ]; then
134
132
                    invoke_command "dkms install -m $module_in_tree -v $version_in_tree -k $kernel -a $arch" "." background
135
 
                    emit_module_status successful $module_in_tree
136
133
                    log_action_end_msg 0
137
134
                else
138
135
                    logger -t dkms_autoinstaller "  Build failed.  Installation skipped."
139
 
                    emit_module_status failed $module_in_tree
140
136
                    log_action_end_msg 1
141
137
                fi
142
138
            else
143
139
                invoke_command "dkms install -m $module_in_tree -v $version_in_tree -k $kernel -a $arch -q" "." background
144
140
                return_status=$?
145
141
                if [ "$return_status" -eq 0 ]; then
146
 
                    emit_module_status successful $module_in_tree
147
142
                elif [ "$return_status" -eq 101 ]; then
148
143
                    logger -t dkms_autoinstaller "  A newer module version than this already exists in kernel."
149
144
                    logger -t dkms_autoinstaller "  Skipping install... (you can manually install later with --force)"
150
 
                    emit_module_status successful $module_in_tree
151
145
                elif [ "$return_status" -ne 0 ]; then
152
146
                    logger -t dkms_autoinstaller "  Installation failed!"
153
 
                    emit_module_status failed $module_in_tree
154
147
                fi
155
148
            fi
156
149
        fi