[BACK]Return to update_openbsd CVS log [TXT][DIR] Up to [local] / openbsd / update_openbsd

Diff for /openbsd/update_openbsd/update_openbsd between version 1.38 and 1.39

version 1.38, 2012/04/19 05:03:47 version 1.39, 2012/12/08 19:52:08
Line 1 
Line 1 
 #!/bin/sh  #!/bin/sh
 # $AFresh1: update_openbsd,v 1.37 2010/06/17 22:39:09 andrew Exp $  # $AFresh1: update_openbsd,v 1.38 2012/04/19 04:03:47 andrew Exp $
   
 installed_sets() {  installed_sets() {
     local misc=/usr/share/doc/README      local misc=/usr/share/doc/README
Line 30 
Line 30 
     fi      fi
 }  }
   
   kernel_file_version() {
       echo exit | config -e $1 | grep -A1 ^OpenBSD
       #what $1 | sed -ne 's/[[:blank:]]\{1,\}//p'
   }
   
 version_in() {  version_in() {
         local _proto=${FTP%%://*}          local _proto=${FTP%%://*}
         local _file          local _file
Line 149 
Line 154 
     if [ X"" != X"${MIRROR}" ]; then      if [ X"" != X"${MIRROR}" ]; then
         FTP=${MIRROR}/${_dir}/`machine`          FTP=${MIRROR}/${_dir}/`machine`
     fi      fi
   
       BOOT_KERNEL=`( \
           echo bsd; \
           [ -e /boot.conf ] && sed -E '/^ *(set +image|boot) +/!d ; \
               s///; s/^.*://; s/ .*$//' /boot.conf \
       ) | tail -1`
       BOOT_KERNEL="/${BOOT_KERNEL#/}"
       BOOT_KERNEL=`follow_symlink $BOOT_KERNEL`
   
       BOOT_KERNEL_VERSION=`kernel_file_version $BOOT_KERNEL`
   
       BOOTED_KERNEL_VERSION=`sysctl -n kern.version`
       NEW_KERNEL_VERSION=""
   
       # We want to default to what we had
       INSTALL_KERNELS="${BOOT_KERNEL#/}"
       # with a second option of an mp kernel if is is a likely candidate
       if [ X"$INSTALL_KERNELS" != X"bsd.mp" ]; then
           local _ncpu=$(sysctl -n hw.ncpufound)
           [ $_ncpu -gt 1 ] && INSTALL_KERNELS="$INSTALL_KERNELS bsd.mp"
       fi
       # or just bsd otherwise
       if [ X"${INSTALL_KERNELS% *}" != X"bsd" ]; then
           INSTALL_KERNELS="$INSTALL_KERNELS bsd"
       fi
       BOOT_KERNELS=$INSTALL_KERNELS
       INSTALL_KERNELS="$INSTALL_KERNELS bsd.rd"
 }  }
   
 get_sets() {  get_sets() {
Line 163 
Line 195 
   
     local _v=$FILE_VER      local _v=$FILE_VER
   
     for _b in `echo /bsd* bsd bsd.mp bsd.rd | sort -u`; do      for _b in $INSTALL_KERNELS; do
         if [ -e /${_b} -a ! -e ./${_b} ]; then          if [ -e /${_b} -a ! -e ./${_b} ]; then
             echo $FTP_CMD ${FTP}/${_b}              echo $FTP_CMD ${FTP}/${_b}
             $FTP_CMD ${FTP}/${_b}              $FTP_CMD ${FTP}/${_b}
Line 229 
Line 261 
     local _missing_sets      local _missing_sets
     local _v=$FILE_VER      local _v=$FILE_VER
   
     for _b in `echo /bsd* bsd bsd.mp bsd.rd | sort -u`; do      for _n in $INSTALL_KERNELS; do
         _b=${_b#/}          local _o=$_n
         local _n=$_b          [ X"bsd" == X"${_o}" -a -e /bsd.sp ] && _o=bsd.sp
         if [ X"bsd.sp" == X"${_n}" ]; then          if [ -e /${_o} -a ! -e ./${_n} ]; then
             _n=bsd              echo ${_o} does not exist
         fi  
         if [ -e /${_b} -a ! -e ./${_n} ]; then  
             echo ${_n} does not exist  
             _missing_sets=1              _missing_sets=1
         fi          fi
   
           if [ X"${BOOT_KERNEL}" == X"/${_o}" -a -e ./${_n} ]; then
               NEW_KERNEL_VERSION=`kernel_file_version ./${_n}`
           fi
     done      done
   
       if [ X"$NEW_KERNEL_VERSION" == X"" ]; then
           echo Missing replacement for boot kernel $BOOT_KERNEL >&2
           _missing_sets=1
       fi
   
     for _s in $INSTALLED_SETS; do      for _s in $INSTALLED_SETS; do
         local _file=${_s}${_v}.tgz          local _file=${_s}${_v}.tgz
         if [ ${_s} == sendmail-smtp_auth ]; then          if [ ${_s} == sendmail-smtp_auth ]; then
Line 275 
Line 313 
     if [ X"" == X"$RELEASEDIR" ]; then      if [ X"" == X"$RELEASEDIR" ]; then
         echo ERROR: no source for new kernels! >&2          echo ERROR: no source for new kernels! >&2
         exit 1          exit 1
     else  
         cd $RELEASEDIR  
     fi      fi
   
     if [ ! -e bsd ]; then      echo "Backing up $BOOT_KERNEL to /obsd"
         echo ERROR: new bsd kernel does not exist! >&2      $SUDO ln -f $BOOT_KERNEL /obsd
         exit 1  
     fi  
   
     if [ -e /bsd.mp -a ! -e bsd.mp ]; then  
         echo ERROR: new bsd.mp kernel does not exist! >&2  
         exit 1  
     fi  
   
     if [ ! -e bsd.rd ]; then  
         echo ERROR: new bsd.rd kernel does not exist! >&2  
         exit 1  
     fi  
   
     local _v=$FILE_VER  
   
     $SUDO rm -f /obsd  
     $SUDO ln /bsd /obsd  
     if [ $? -ne 0 ]; then      if [ $? -ne 0 ]; then
         echo "Error copying old kernel!" >&2          echo "Error copying old kernel!" >&2
         exit 1          exit 1
     fi      fi
   
     local _true_bsd=`follow_symlink /bsd`      cd $RELEASEDIR
     _true_bsd=${_true_bsd#/}  
     local _installed_new_bsd  
   
     for _b in bsd*; do      for _b in $INSTALL_KERNELS; do
         $SUDO rm -f /nbsd          $SUDO rm -f /nbsd
         if [ X"${_b}" == X"bsd" ]; then          local _bd=$_b
             echo Copying bsd to /bsd.sp          [ X"${_b}" == X"bsd" ] && _bd="bsd.sp"
             $SUDO cp bsd /nbsd && $SUDO mv /nbsd /bsd.sp  
             if [ $? -ne 0 ]; then  
                 echo ERROR: Could not copy new SP kernel! >&2  
                 exit 1  
             fi  
             if [ X"${_true_bsd}" == X"bsd.sp" ]; then  
                 _installed_new_bsd=1  
             fi  
         else  
             if [ -e "/${_b}" ]; then  
                 echo Copying $_b to /  
                 $SUDO cp ${_b} /nbsd && $SUDO mv /nbsd /${_b}  
                 if [ $? -ne 0 ]; then  
                     echo ERROR: Could not copy new $_b kernel! >&2  
                     exit 1  
                 fi  
                 if [ X"${_true_bsd}" == X"${_b}" ]; then  
                     _installed_new_bsd=1  
                 fi  
             fi  
         fi  
     done  
   
     if [ ! -h /bsd ]; then          local _is_boot=""
         cd /          [ X"$BOOT_KERNEL" == X"/${_bd}" ] && _is_boot="# boot kernel"
         if [ -e /bsd.mp ]; then  
             echo linking /bsd.mp to /bsd          echo "Copying $_b to /$_bd $_is_boot"
             $SUDO ln -sf /bsd.mp bsd          $SUDO cp ${_b} /nbsd && $SUDO mv /nbsd /${_bd}
         else  
             echo linking /bsd.sp to /bsd  
             $SUDO ln -sf /bsd.sp bsd  
         fi  
         if [ $? -ne 0 ]; then          if [ $? -ne 0 ]; then
             echo ERROR: Could not symlink new kernel! >&2              echo ERROR: Could not copy new $_bd kernel! >&2
             exit 1              exit 1
         fi          fi
         cd $OLDPWD      done
     fi  
   
     if [ -z $_installed_new_bsd ]; then      cd $OLDPWD
         echo WARNING: Did not replace $_true_bsd kernel >&2  
       if [ ! -h /bsd ]; then
               cd /
           for _b in $BOOT_KERNELS; do
               [ X"$_b" == X"bsd" ] && _b="bsd.sp"
               if [ -e $_b ]; then
                   echo symlinking $_b to /bsd
                   $SUDO ln -sf $_b bsd
                   if [ $? -ne 0 ]; then
                       echo ERROR: Could not symlink new kernel! >&2
                       exit 1
                   fi
                   break
               fi
           done
               cd $OLDPWD
     fi      fi
 }  }
   
Line 499 
Line 504 
 echo "-= update_openbsd - helper script to update OpenBSD =-"  echo "-= update_openbsd - helper script to update OpenBSD =-"
 echo "------------------------------------------------------"  echo "------------------------------------------------------"
 echo  echo
 echo "          SUDO: $SUDO"  echo "           SUDO: $SUDO"
 echo "      SYSMERGE: $SYSMERGE"  echo "       SYSMERGE: $SYSMERGE"
 echo "        MIRROR: $MIRROR"  echo "         MIRROR: $MIRROR"
 echo "    RELEASEDIR: $RELEASEDIR"  echo "     RELEASEDIR: $RELEASEDIR"
 echo "       DESTDIR: $DESTDIR"  echo "        DESTDIR: $DESTDIR"
 echo "INSTALLED_SETS: $INSTALLED_SETS"  echo "    BOOT_KERNEL: $BOOT_KERNEL"
   echo "INSTALL_KERNELS: $INSTALL_KERNELS"
   echo " INSTALLED_SETS: $INSTALLED_SETS"
 echo  echo
 echo "       CUR_VER: $CUR_VER"  echo "        CUR_VER: $CUR_VER"
 echo "       NEW_VER: $NEW_VER"  echo "        NEW_VER: $NEW_VER"
 #echo "      FILE_VER: $FILE_VER"  #echo "       FILE_VER: $FILE_VER"
 echo  echo
   
 if [ ${_error} -ne 0 ]; then  if [ ${_error} -ne 0 ]; then
Line 520 
Line 527 
 fi  fi
   
 check_sets || exit  check_sets || exit
   
   echo "Last booted:\n$BOOTED_KERNEL_VERSION"
   if [ X"$BOOT_KERNEL_VERSION" != X"$BOOTED_KERNEL_VERSION" \
     -a X"$BOOT_KERNEL_VERSION" != X"$NEW_KERNEL_VERSION" ]; then
       echo "Next boot (unless replaced):\n$BOOT_KERNEL_VERSION"
   fi
   if [ -n "$NEW_KERNEL_VERSION" ]; then
       echo "New $BOOT_KERNEL:\n$NEW_KERNEL_VERSION";
   else
       echo "\n!!! WARNING: Will not replace boot kernel $BOOT_KERNEL! !!!\n" >&2
       echo "ctrl+C to cancel, enter to continue anyway" >&2
       local _temp
       read _temp
   fi
   
 if [ X"" != X"$SUDO" ]; then  if [ X"" != X"$SUDO" ]; then
     echo Please enter your sudo password if prompted.      echo Please enter your sudo password if prompted.

Legend:
Removed from v.1.38  
changed lines
  Added in v.1.39

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>