home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 February / PCWorld_2000-02_cd.bin / live / sbin / update-modules < prev   
Text File  |  1999-01-23  |  2KB  |  106 lines

  1. #! /bin/sh -e
  2. #
  3. # This is the update-modules script for Debian GNU/Linux.
  4. # Written by Wichert Akkerman <wakkerma@debian.org>
  5. # Copyright (C) 1998, 1999 Software in the Public Interest
  6. #
  7.  
  8. CFGFILE=/etc/conf.modules
  9. ARCHDIR=/etc/modutils/arch
  10. HEADER="### This file is automatically generated by update-modules"
  11.  
  12. arch() {
  13.     local model=`uname -m`
  14.     case $model in
  15.         i[0-9]86) model=i386; ;;
  16.         sun4u) model=sparc64; ;;
  17.         arm*) model=arm; ;;
  18.         ppc) model=powerpc; ;;
  19.     esac
  20.     echo $model
  21. }
  22.  
  23. archmodel() {
  24.     local arch=`arch`
  25.     local model=""
  26.     if [ $arch = "m68k" ]; then
  27.         if [ -f /proc/hardware ]; then
  28.             model=`cat /proc/hardware | sed -ne 's/^Model:[[:space:]]*//p'`
  29.             case $model in
  30.                 Atari*) model="atari"; ;;
  31.                 Amiga*) model="amiga"; ;;
  32.                 Macintosh*) model="mac"; ;;
  33.                 Motorola*) model="MVME"; ;;
  34.                 *) model="generic"; ;;
  35.             esac
  36.             model=".${model}"
  37.         else
  38.             echo "/proc/hardware does not exist, assuming general m68k system"
  39.         fi
  40.     fi
  41.     echo "${arch}${model}"
  42. }
  43.  
  44.  
  45. if [ -f $CFGFILE ]; then
  46.     if ! head -1 $CFGFILE | grep -q "^$HEADER" ; then
  47.         echo "Error: the current $CFGFILE is not automatically generated."
  48.         if [ "$1" != "force" ]; then
  49.             echo "Use \"`basename $0` force\" to force (re)generation."
  50.             exit 1
  51.         else
  52.             echo "force specified, (re)gerating file anyway."
  53.         fi
  54.     fi
  55. fi
  56.  
  57. if [ `id -u` != "0" ]; then
  58.     echo "You have to be root to do this."
  59.     exit 2
  60. fi
  61.  
  62. model=`archmodel`
  63. oldmodel=$model
  64.  
  65. while [ ! -f ${ARCHDIR}/${model} ]; do
  66.     oldmodel=$model
  67.     model=`echo $oldmodel | sed -e 's/\.[^.]\+//'`
  68.     if [ "$model" = "$oldmodel" ]; then
  69.         break
  70.     fi
  71.     echo "Configuration for $oldmodel not found, trying $model"
  72. done
  73.  
  74. CONF="${ARCHDIR}/${model}"
  75.  
  76. if [ ! -f $CONF ]; then
  77.     echo "Architecture-specific modutils configuration not found, using defaults"
  78.     CONF="${ARCHDIR}/generic"
  79. fi
  80.  
  81. if [ -e $CFGFILE ]; then
  82.   mv $CFGFILE ${CFGFILE}.old
  83. fi
  84.  
  85. echo $HEADER > $CFGFILE
  86. cat <<EOF >> $CFGFILE
  87. #
  88. # Please do not edit this file directly. If you want to change or add
  89. # anything please take a look at the files in /etc/modutils and read
  90. # the manpage for update-modules.
  91. #
  92. EOF
  93.  
  94. for cfg in /etc/modutils/* $CONF ; do
  95.     if [ -f $cfg ]; then # this check is necesarry to skip /etc/modutils/archs
  96.         if ! echo $cfg | grep -q '\(\.dpkg-orig\|\.dpkg-dist\|~\)$' ; then
  97.             if [ -x $cfg ]; then
  98.                 $cfg >> $CFGFILE
  99.             else
  100.                 cat $cfg >> $CFGFILE
  101.             fi
  102.         fi
  103.     fi
  104. done
  105.  
  106.