[Pkg-dkms-commits] [SCM] Dynamic Kernel Module Support branch, master, updated. debian/2.1.0.1-3-3-g974c907
Giuseppe Iuculano
iuculano at debian.org
Fri Dec 11 08:12:24 UTC 2009
The following commit has been merged in the master branch:
commit fdaa28915aff346dc2ffb99e480d5deab9019252
Author: Giuseppe Iuculano <iuculano at debian.org>
Date: Fri Dec 11 09:09:46 2009 +0100
Use new upstream patch for optimized init.
Closes: #560267
diff --git a/debian/patches/04_optimize_init.patch b/debian/patches/04_optimize_init.patch
index c34e953..aa154e4 100644
--- a/debian/patches/04_optimize_init.patch
+++ b/debian/patches/04_optimize_init.patch
@@ -10,18 +10,37 @@ LP: #484386
dkms_autoinstaller | 80 ++++++++++++++++++++++-------------------------------
1 file changed, 34 insertions(+), 46 deletions(-)
---- dkms.orig/dkms_autoinstaller
-+++ dkms/dkms_autoinstaller
+--- a/dkms_autoinstaller
++++ b/dkms_autoinstaller
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
#
# dkms_autoinstaller A service to automatically install DKMS modules
# for new kernels.
-@@ -25,24 +25,24 @@ fi
+@@ -15,195 +15,140 @@
+ # Description: A service to automatically install DKMS modules for new kernels.
+ ### END INIT INFO
- test -f /usr/sbin/dkms || exit 0
+-#use LSB functions for logging on Debian/Ubuntu
++test -f /usr/sbin/dkms || exit 0
++
++#We only have these functions on debian/ubuntu
++# so on other distros just stub them out
+ if [ -f /lib/lsb/init-functions ]; then
+ . /lib/lsb/init-functions
+- if [ -f /etc/debian_version ]; then
+- DEBIAN_STYLE_LOGGING="yes"
++ if [ ! -f /etc/debian_version ]; then
++ alias log_daemon_msg=echo
++ log_end_msg() { if [ "$1" = "0" ]; then echo " Done. "; else echo " Failed. "; fi }
++ alias log_action_begin_msg=log_daemon_msg
++ alias log_action_end_msg=log_end_msg
+ fi
+ fi
+-test -f /usr/sbin/dkms || exit 0
+-
-function invoke_command ()
+invoke_command ()
{
@@ -29,39 +48,101 @@ LP: #484386
local exitval_file=`mktemp /tmp/dkms.XXXXXX`
- [ -z "$verbose" ] && echo -en "$2..." >>$output_loc || echo -e "$1" >>$output_loc
- if [ "$3" == background ] && [ -z "$verbose" ]; then
-+ [ -z "$verbose" ] && echo -n "$2..." >>$output_loc || echo "$1" >>$output_loc
-+ if [ "$3" = background ] && [ -z "$verbose" ]; then
- (eval $1 >/dev/null 2>&1; echo "exitval=$?" >> "$exitval_file") &
- while [ -e "$exitval_file" ] && ! [ -s "$exitval_file" ]; do
- sleep 3
+- (eval $1 >/dev/null 2>&1; echo "exitval=$?" >> "$exitval_file") &
+- while [ -e "$exitval_file" ] && ! [ -s "$exitval_file" ]; do
+- sleep 3
- echo -en "." >>$output_loc
-+ echo -n "." >>$output_loc
- done
- . "$exitval_file"
+- done
+- . "$exitval_file"
++ if [ "$3" = background ] && [ -z "$verbose" ]; then
++ (eval $1 >/dev/null 2>&1; echo "exitval=$?" >> "$exitval_file") &
++ while [ -e "$exitval_file" ] && ! [ -s "$exitval_file" ]; do
++ sleep 3
++ done
++ . "$exitval_file"
else
- eval $1; exitval=$?
+- eval $1; exitval=$?
++ eval $1; exitval=$?
fi
- [ $exitval -gt 0 ] && echo -en "(bad exit status: $exitval)" >>$output_loc
-+ [ $exitval -gt 0 ] && echo -n "(bad exit status: $exitval)" >>$output_loc
++ [ $exitval -gt 0 ] && logger -t dkms_autoinstaller "(bad exit status: $exitval)"
rm -f "$exitval_file"
- echo -en "\n" >>$output_loc
-+ echo >>$output_loc
return $exitval
}
-@@ -52,7 +52,7 @@ output_loc="/var/log/dkms_autoinstaller"
- [ -n "$2" ] && kernel=$2 && output_loc="/dev/stdout" || kernel=`uname -r`
- kernelver_rpm=`rpm -qf "/lib/modules/$kernel" 2>/dev/null | grep -v "not owned by any package" | grep kernel | head -1`
- if ! arch=`rpm -q --queryformat "%{ARCH}" "$kernelver_rpm" 2>/dev/null`; then
+
+ # Set Variables
+-output_loc="/var/log/dkms_autoinstaller"
+-[ -n "$2" ] && kernel=$2 && output_loc="/dev/stdout" || kernel=`uname -r`
+-kernelver_rpm=`rpm -qf "/lib/modules/$kernel" 2>/dev/null | grep -v "not owned by any package" | grep kernel | head -1`
+-if ! arch=`rpm -q --queryformat "%{ARCH}" "$kernelver_rpm" 2>/dev/null`; then
- [ `uname -m` == "x86_64" ] && [ `cat /proc/cpuinfo | grep -c "Intel"` -gt 0 ] && [ `ls $install_tree/$kernel/build/configs 2>/dev/null | grep -c "ia32e"` -gt 0 ] && arch="ia32e" || arch=`uname -m`
-+ [ `uname -m` = "x86_64" ] && [ `cat /proc/cpuinfo | grep -c "Intel"` -gt 0 ] && [ `ls $install_tree/$kernel/build/configs 2>/dev/null | grep -c "ia32e"` -gt 0 ] && arch="ia32e" || arch=`uname -m`
- fi
+-fi
++uname=`uname -mr`
++[ -n "$2" ] && kernel=$2 || kernel=${uname% *}
++arch=${uname#* }
kernel_preparation_done=""
dkms_tree="/var/lib/dkms"
-@@ -68,75 +68,64 @@ case "$1" in
- fi
- echo "" >>$output_loc
-
+ . /etc/dkms/framework.conf 2>/dev/null
+-
++echo $arch
++echo $kernel
+ # See how we were called.
+ case "$1" in
+ start)
+- if [ ! -z "$DEBIAN_STYLE_LOGGING" ]; then
+- log_daemon_msg "Running DKMS auto installation service for kernel $kernel"
++ log_daemon_msg "Running DKMS auto installation service for kernel $kernel"
++
++ # Iterate over the modules
++ for modulepath in $(find "$dkms_tree" -maxdepth 1 -mindepth 1 -type d); do
++
++ module_in_tree=${modulepath##*/}
++ # Determine which versions to show status for
++ do_autoinstall=""
++ version_count=0
++ already_installed=""
++ already_installed_version=""
++ for versioned_path in $(find "$modulepath" -maxdepth 1 -mindepth 1 -type d -a -not -name original_module); do
++ version_count=$(($version_count + 1))
++ version_in_tree="${versioned_path##*/}"
++
++ if [ -f $versioned_path/source/dkms.conf ]; then
++ do_autoinstall=$(sed -n -e 's/^\(str *\)\?AUTOINSTALL=\(.*\)$/\2/gp;' $versioned_path/source/dkms.conf)
++ else
++ current_state="broken"
++ continue
++ fi
++
++ # Get the current state
++ # a mod can be both built and installed-weak (stupid, but could be)
++ # but installed-weak comes last, so use tail
++ current_state=`dkms status -m $module_in_tree -v $version_in_tree -k $kernel -a $arch 2>/dev/null | awk {'print $5'} | tail -n 1`
++ [ "$current_state" = "installed" -o "$current_state" = "installed-weak" ] && already_installed="true" && already_installed_version=$version_in_tree
++ done
++
++ log_action_begin_msg " $module_in_tree ($version_in_tree)"
++
++ # Based on what we know, either do it or not
++ if [ "$current_state" = "broken" ]; then
++ logger -t dkms_autoinstaller "$module_in_tree ($version_in_tree): Unable to locate $versioned_path/source/dkms.conf"
++ logger -t dkms_autoinstaller " DKMS tree must be manually fixed"
++ log_action_end_msg 1
++ continue
++ elif [ -n "$already_installed" ]; then
++ log_action_end_msg 0
++ elif [ -z "$do_autoinstall" ]; then
++ logger -t dkms_autoinstaller "$module_in_tree ($version_in_tree): AUTOINSTALL not set in its dkms.conf."
++ log_action_end_msg 0
++ elif [ -n "$do_autoinstall" ] && [ "$version_count" -gt 1 ]; then
++ logger -t dkms_autoinstaller "$module_in_tree: Multiple versions in DKMS. Unsure what to do. Resolve manually."
++ log_action_end_msg 1
+ else
+- echo "Running DKMS auto installation service for kernel $kernel"
+- fi
+- echo "" >>$output_loc
+-
- for filename in `ls "$dkms_tree"`; do
- if [ -d "$dkms_tree/$filename" ] && ! [ -h "$dkms_tree/$filename" ]; then
- modules_needing_status="$modules_needing_status $filename"
@@ -75,129 +156,168 @@ LP: #484386
- if [ -d "$dkms_tree/$module_in_tree" ]; then
-
- # Determine which versions to show status for
-+ # Determine which versions to show status for
- do_autoinstall=""
- version_count=0
- already_installed=""
- already_installed_version=""
+- do_autoinstall=""
+- version_count=0
+- already_installed=""
+- already_installed_version=""
- for filename in `ls "$dkms_tree/$module_in_tree"`; do
- if [ -d "$dkms_tree/$module_in_tree/$filename" ] && ! [ -h "$dkms_tree/$module_in_tree/$filename" ] && [ "$filename" != "original_module" ]; then
-+ for filename in $(find "$dkms_tree" -maxdepth 2 -mindepth 2 -type d -a -not -name original_module); do
- version_count=$(($version_count + 1))
+- version_count=$(($version_count + 1))
- version_in_tree="$filename"
-+ version_in_tree="$(basename $filename)"
-
+-
- # Source in its dkms.conf to see if we should autoinstall
-+ # Source in its dkms.conf to see if we should autoinstall
- AUTOINSTALL=""
+- AUTOINSTALL=""
- if [ -f $dkms_tree/$module_in_tree/$version_in_tree/source/dkms.conf ]; then
- . $dkms_tree/$module_in_tree/$version_in_tree/source/dkms.conf
-+ if [ -f $filename/source/dkms.conf ]; then
-+ . $filename/source/dkms.conf
- else
- current_state="broken"
- continue
- fi
+- else
+- current_state="broken"
+- continue
+- fi
- [ `echo "$AUTOINSTALL" | grep -ic "^y"` -gt 0 ] && do_autoinstall="yes"
-+ case $AUTOINSTALL in
-+ [yY]*)
-+ do_autoinstall="yes"
-+ ;;
-+ esac
-
- # Get the current state
- # a mod can be both built and installed-weak (stupid, but could be)
- # but installed-weak comes last, so use tail
+-
+- # Get the current state
+- # a mod can be both built and installed-weak (stupid, but could be)
+- # but installed-weak comes last, so use tail
- current_state=`dkms status -m $module_in_tree -v $version_in_tree -k $kernel -a $arch 2>/dev/null | awk {'print $5'} | tail -n 1`
- [ "$current_state" == "installed" -o "$current_state" == "installed-weak" ] && already_installed="true" && already_installed_version=$version_in_tree
- fi
- done
-+ current_state=`dkms status -m $PACKAGE_NAME -v $version_in_tree -k $kernel -a $arch 2>/dev/null | awk {'print $5'} | tail -n 1`
-+ [ "$current_state" = "installed" -o "$current_state" = "installed-weak" ] && already_installed="true" && already_installed_version=$version_in_tree
-
- if [ ! -z "$DEBIAN_STYLE_LOGGING" ]; then
+-
+- if [ ! -z "$DEBIAN_STYLE_LOGGING" ]; then
- log_action_begin_msg " $module_in_tree ($version_in_tree)"
-+ log_action_begin_msg " $PACKAGE_NAME ($version_in_tree)"
- fi
-
- # Based on what we know, either do it or not
- if [ "$current_state" = "broken" ]; then
+- fi
+-
+- # Based on what we know, either do it or not
+- if [ "$current_state" = "broken" ]; then
- echo "$module_in_tree ($version_in_tree): Unable to locate $dkms_tree/$module_in_tree/$version_in_tree/source/dkms.conf" >>$output_loc
- echo -e "\tDKMS tree must be manually fixed." >>$output_loc
-+ echo "$PACKAGE_NAME ($version_in_tree): Unable to locate $dkms_tree/$module_in_tree/$version_in_tree/source/dkms.conf" >>$output_loc
-+ printf "\tDKMS tree must be manually fixed.\n" >>$output_loc
- if [ ! -z "$DEBIAN_STYLE_LOGGING" ]; then
- log_action_end_msg 1
- fi
- continue
- elif [ -n "$already_installed" ]; then
+- if [ ! -z "$DEBIAN_STYLE_LOGGING" ]; then
+- log_action_end_msg 1
+- fi
+- continue
+- elif [ -n "$already_installed" ]; then
- echo "$module_in_tree ($already_installed_version): Already installed on this kernel." >>$output_loc
-+ echo "$PACKAGE_NAME ($already_installed_version): Already installed on this kernel." >>$output_loc
- if [ ! -z "$DEBIAN_STYLE_LOGGING" ]; then
- log_action_end_msg 0
- fi
- elif [ -z "$do_autoinstall" ]; then
+- if [ ! -z "$DEBIAN_STYLE_LOGGING" ]; then
+- log_action_end_msg 0
+- fi
+- elif [ -z "$do_autoinstall" ]; then
- echo "$module_in_tree ($version_in_tree): AUTOINSTALL not set in its dkms.conf." >>$output_loc
-+ echo "$PACKAGE_NAME ($version_in_tree): AUTOINSTALL not set in its dkms.conf." >>$output_loc
- if [ ! -z "$DEBIAN_STYLE_LOGGING" ]; then
- log_action_end_msg 0
- fi
- elif [ -n "$do_autoinstall" ] && [ "$version_count" -gt 1 ]; then
+- if [ ! -z "$DEBIAN_STYLE_LOGGING" ]; then
+- log_action_end_msg 0
+- fi
+- elif [ -n "$do_autoinstall" ] && [ "$version_count" -gt 1 ]; then
- echo "$module_in_tree: Multiple versions in DKMS. Unsure what to do. Resolve manually." >>$output_loc
-+ echo "$PACKAGE_NAME: Multiple versions in DKMS. Unsure what to do. Resolve manually." >>$output_loc
- if [ ! -z "$DEBIAN_STYLE_LOGGING" ]; then
- log_action_end_msg 1
- fi
- else
+- if [ ! -z "$DEBIAN_STYLE_LOGGING" ]; then
+- log_action_end_msg 1
+- fi
+- else
- echo "$module_in_tree ($version_in_tree): Installing module." >>$output_loc
-+ echo "$PACKAGE_NAME ($version_in_tree): Installing module." >>$output_loc
- if [ "$current_state" != "built" ] && ! [ -e /lib/modules/$kernel/build/include ]; then
- echo " Kernel headers for $kernel are not installed. Cannot install this module." >>$output_loc
- echo " Try installing linux-headers-$kernel or equivalent." >>$output_loc
-@@ -144,15 +133,15 @@ case "$1" in
- elif [ "$current_state" != "built" ] && [ -e /lib/modules/$kernel/build/include ]; then
- return_status=""
- if [ -z "$kernel_preparation_done" ]; then
+- if [ "$current_state" != "built" ] && ! [ -e /lib/modules/$kernel/build/include ]; then
+- echo " Kernel headers for $kernel are not installed. Cannot install this module." >>$output_loc
+- echo " Try installing linux-headers-$kernel or equivalent." >>$output_loc
+- log_action_end_msg 1
+- elif [ "$current_state" != "built" ] && [ -e /lib/modules/$kernel/build/include ]; then
+- return_status=""
+- if [ -z "$kernel_preparation_done" ]; then
- invoke_command "dkms build -m $module_in_tree -v $version_in_tree -k $kernel -a $arch -q --no-clean-kernel >>$output_loc" "." background
-+ invoke_command "dkms build -m $PACKAGE_NAME -v $version_in_tree -k $kernel -a $arch -q --no-clean-kernel >>$output_loc" "." background
- return_status="$?"
- kernel_preparation_done="true"
- else
+- return_status="$?"
+- kernel_preparation_done="true"
+- else
- invoke_command "dkms build -m $module_in_tree -v $version_in_tree -k $kernel -a $arch --no-prepare-kernel --no-clean-kernel -q >>$output_loc" "." background
-+ invoke_command "dkms build -m $PACKAGE_NAME -v $version_in_tree -k $kernel -a $arch --no-prepare-kernel --no-clean-kernel -q >>$output_loc" "." background
- return_status="$?"
- fi
- if [ "$return_status" -eq 0 ]; then
+- return_status="$?"
+- fi
+- if [ "$return_status" -eq 0 ]; then
- invoke_command "dkms install -m $module_in_tree -v $version_in_tree -k $kernel -a $arch -q >>$output_loc" "." background
-+ invoke_command "dkms install -m $PACKAGE_NAME -v $version_in_tree -k $kernel -a $arch -q >>$output_loc" "." background
- if [ ! -z "$DEBIAN_STYLE_LOGGING" ]; then
- log_action_end_msg 0
- else
-@@ -167,7 +156,7 @@ case "$1" in
- fi
- fi
- else
+- if [ ! -z "$DEBIAN_STYLE_LOGGING" ]; then
+- log_action_end_msg 0
+- else
+- echo "Done"
+- fi
+- else
+- echo " Build failed. Installation skipped." >>$output_loc
+- if [ ! -z "$DEBIAN_STYLE_LOGGING" ]; then
+- log_action_end_msg 1
+- else
+- echo " Failed."
+- fi
+- fi
+- else
- invoke_command "dkms install -m $module_in_tree -v $version_in_tree -k $kernel -a $arch -q >>$output_loc" "." background
-+ invoke_command "dkms install -m $PACKAGE_NAME -v $version_in_tree -k $kernel -a $arch -q >>$output_loc" "." background
- return_status=$?
- if [ "$return_status" -eq 101 ]; then
- echo " A newer module version than this already exists in this kernel." >>$output_loc
-@@ -176,8 +165,7 @@ case "$1" in
- echo " Installation failed!" >>$output_loc
- fi
- fi
+- return_status=$?
+- if [ "$return_status" -eq 101 ]; then
+- echo " A newer module version than this already exists in this kernel." >>$output_loc
+- echo " Skipping install... (you can manually install later with --force)" >>$output_loc
+- elif [ "$return_status" -ne 0 ]; then
+- echo " Installation failed!" >>$output_loc
+- fi
+- fi
- fi
- fi
-+ fi
- done
- if [ -z "$modules_needing_status" ]; then
- if [ ! -z "$DEBIAN_STYLE_LOGGING" ]; then
-@@ -203,7 +191,7 @@ case "$1" in
- exit 0
- ;;
+- done
+- if [ -z "$modules_needing_status" ]; then
+- if [ ! -z "$DEBIAN_STYLE_LOGGING" ]; then
+- log_end_msg 0
++ logger -t dkms_autoinstaller "$module_in_tree ($version_in_tree): Installing module on kernel $kernel."
++ if [ "$current_state" != "built" ] && ! [ -e /lib/modules/$kernel/build/include ]; then
++ logger -t dkms_autoinstaller " Kernel headers for $kernel are not installed. Cannot install this module."
++ logger -t dkms_autoinstaller " Try installing linux-headers-$kernel or equivalent."
++ log_action_end_msg 1
++ elif [ "$current_state" != "built" ] && [ -e /lib/modules/$kernel/build/include ]; then
++ return_status=""
++ if [ -z "$kernel_preparation_done" ]; then
++ invoke_command "dkms build -m $module_in_tree -v $version_in_tree -k $kernel -a $arch -q --no-clean-kernel" "." background
++ return_status="$?"
++ kernel_preparation_done="true"
++ else
++ invoke_command "dkms build -m $module_in_tree -v $version_in_tree -k $kernel -a $arch --no-prepare-kernel --no-clean-kernel -q" "." background
++ return_status="$?"
++ fi
++ if [ "$return_status" -eq 0 ]; then
++ invoke_command "dkms install -m $module_in_tree -v $version_in_tree -k $kernel -a $arch" "." background
++ log_action_end_msg 0
++ else
++ logger -t dkms_autoinstaller " Build failed. Installation skipped."
++ log_action_end_msg 1
++ fi
+ else
+- echo -n "."
++ invoke_command "dkms install -m $module_in_tree -v $version_in_tree -k $kernel -a $arch -q" "." background
++ return_status=$?
++ if [ "$return_status" -eq 101 ]; then
++ logger -t dkms_autoinstaller " A newer module version than this already exists in kernel."
++ logger -t dkms_autoinstaller " Skipping install... (you can manually install later with --force)"
++ elif [ "$return_status" -ne 0 ]; then
++ logger -t dkms_autoinstaller " Installation failed!"
++ fi
+ fi
+ fi
+- ;;
+- stop)
+- # ignore
+- ;;
+- restart)
+- # ignore
+- ;;
+- force-reload)
+- # ignore
+- ;;
+- status)
+- # ignore
+- ;;
+- reload)
+- exit 0
+- ;;
++ done
++ if [ -z "$modules_needing_status" ]; then
++ log_end_msg 0
++ fi
++ ;;
++ stop|restart|force-reload|status|reload)
++ # ignore
++ ;;
*)
- echo $"Usage: $0 {start|stop}"
-+ echo "Usage: $0 {start|stop}"
++ echo "Usage: $0 {start}"
esac
exit 0
--
Dynamic Kernel Module Support
More information about the Pkg-dkms-commits
mailing list