diff -u dkms-2.1.0.1/debian/changelog dkms-2.1.0.1/debian/changelog --- dkms-2.1.0.1/debian/changelog +++ dkms-2.1.0.1/debian/changelog @@ -1,3 +1,12 @@ +dkms (2.1.0.1-0ubuntu2) UNRELEASED; urgency=low + + * dkms_autoinstall: optimize with a single find call instead of multiple + loops with ls. + * dkms_autoinstall: drop localization of the usage message - this is + inconsistent with all other init scripts on the system. + + -- Steve Langasek Tue, 17 Nov 2009 12:16:41 -0600 + dkms (2.1.0.1-0ubuntu1) karmic; urgency=low * New upstream version. diff -u dkms-2.1.0.1/debian/control dkms-2.1.0.1/debian/control --- dkms-2.1.0.1/debian/control +++ dkms-2.1.0.1/debian/control @@ -1,7 +1,8 @@ Source: dkms Section: kernel Priority: optional -Maintainer: Dynamic Kernel Modules Support Team +Maintainer: Ubuntu Developers +XSBC-Original-Maintainer: Dynamic Kernel Modules Support Team Uploaders: David Paleino , Mario Limonciello , Giuseppe Iuculano only in patch2: unchanged: --- dkms-2.1.0.1.orig/dkms_autoinstaller +++ dkms-2.1.0.1/dkms_autoinstaller @@ -25,24 +25,24 @@ test -f /usr/sbin/dkms || exit 0 -function invoke_command () +invoke_command () { local exitval=0 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 - echo -en "." >>$output_loc + echo -n "." >>$output_loc done . "$exitval_file" else 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 rm -f "$exitval_file" - echo -en "\n" >>$output_loc + echo >>$output_loc return $exitval } @@ -52,7 +52,7 @@ [ -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 kernel_preparation_done="" dkms_tree="/var/lib/dkms" @@ -68,44 +68,38 @@ 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" - fi - done - # Iterate over the modules - for module_in_tree in $modules_needing_status; do + for dirname in $(find "$dkms_tree" -maxdepth 1 -type d); do - # Make sure its in the tree - if [ -d "$dkms_tree/$module_in_tree" ]; then - - # Determine which versions to show status for + module_in_tree=${dirname##*/} + # Determine which versions to show status for 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 dirname in $(find "$dkms_tree/$module_in_tree" -maxdepth 1 -type d -a -not -name original_module); do version_count=$(($version_count + 1)) - version_in_tree="$filename" + version_in_tree="${dirname##*/}" - # Source in its dkms.conf to see if we should autoinstall + # Source in its dkms.conf to see if we should 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 $dirname/source/dkms.conf ]; then + . $dirname/source/dkms.conf else current_state="broken" continue fi - [ `echo "$AUTOINSTALL" | grep -ic "^y"` -gt 0 ] && do_autoinstall="yes" + case $AUTOINSTALL in + *y*) + 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 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 + [ "$current_state" = "installed" -o "$current_state" = "installed-weak" ] && already_installed="true" && already_installed_version=$version_in_tree done if [ ! -z "$DEBIAN_STYLE_LOGGING" ]; then @@ -114,8 +108,8 @@ # 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 "$module_in_tree ($version_in_tree): Unable to locate $dirname/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 @@ -176,8 +170,7 @@ 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 +196,7 @@ exit 0 ;; *) - echo $"Usage: $0 {start|stop}" + echo "Usage: $0 {start|stop}" esac exit 0