[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.16 and 1.30

version 1.16, 2009/01/13 21:47:49 version 1.30, 2009/12/10 18:21:51
Line 1 
Line 1 
 #!/bin/sh  #!/bin/sh
 # $RedRiver: update_openbsd,v 1.15 2008/11/19 23:02:38 andrew Exp $  # $RedRiver: update_openbsd,v 1.29 2009/12/10 06:51:28 andrew Exp $
   
 installed_sets() {  installed_sets() {
     local misc=/usr/share/doc/README      local misc=/usr/share/doc/README
Line 23 
Line 23 
             echo -n " $_d"              echo -n " $_d"
         fi          fi
     done      done
   
       sendmail -d0.1 -bt < /dev/null | grep -q SASL
       if [ $? == 0 ]; then
           echo -n ' sendmail-smtp_auth'
       fi
 }  }
   
 version_in() {  version_in() {
Line 90 
Line 95 
   
     fi      fi
   
     if [ X"" == X"${_v}" ]; then      if [ X"" != X"${MIRROR}" -a X"" == X"${_v}" ]; then
         if [ X"No" == X"${FORCE_DIR}" ]; then          if [ X"No" == X"${FORCE_DIR}" ]; then
             _dir=${NEW_VER}              _dir=${NEW_VER}
         else          else
Line 141 
Line 146 
     fi      fi
   
     FILE_VER=$_v      FILE_VER=$_v
     FTP=${MIRROR}/${_dir}/`machine`      if [ X"" != X"${MIRROR}" ]; then
           FTP=${MIRROR}/${_dir}/`machine`
       fi
 }  }
   
 get_sets() {  get_sets() {
Line 164 
Line 171 
     done      done
   
     for _s in $INSTALLED_SETS; do      for _s in $INSTALLED_SETS; do
         if [ ! -e ./${_s}${_v}.tgz ]; then          local _file=${_s}${_v}.tgz
             echo $FTP_CMD ${FTP}/${_s}${_v}.tgz          if [ ${_s} == sendmail-smtp_auth ]; then
             $FTP_CMD ${FTP}/${_s}${_v}.tgz              _file=${_s}.gz
         fi          fi
   
           if [ ! -e ./${_file} ]; then
               echo $FTP_CMD ${FTP}/${_file}
               $FTP_CMD ${FTP}/${_file}
           fi
     done      done
   
     if [ ! -e MD5 ]; then      local _type
         echo $FTP_CMD ${FTP}/MD5      for _type in $CHECKSUM_TYPES; do
         $FTP_CMD ${FTP}/MD5          if [ ! -e $_type ]; then
               echo $FTP_CMD ${FTP}/$_type
               $FTP_CMD ${FTP}/$_type
           fi
       done
   }
   
   follow_symlink () {
       local _file=$1
       local _next=$( file $_file |
           grep 'symbolic link' |
           sed -e s/^.*\\\`// -e s/\\\'\$// )
       if [ -h $_next ]; then
           follow_symlink $_next
       else
           echo $_next
     fi      fi
   }
   
     ls bsd* *.tgz | sed -e 's/\(.*\)/(\1)/' > index  check_sum () {
     grep -f index MD5 | md5 -c      local _type=$1
       echo "### CHECKING $_type SUMS ###"
       cd $RELEASEDIR
   
       if [ ! -e $_type ]; then
           echo $_type File does not exist!
           return 1
       fi
   
       ls bsd* *gz | sed -e 's/\(.*\)/(\1)/' > index
       grep -f index $_type | sum -c
   
     if [ $? -ne 0 ]; then      if [ $? -ne 0 ]; then
         echo ERROR: MD5 does not match! >&2          echo ERROR: $_type does not match! >&2
         return 1          return 1
     fi      fi
 }  }
   
 install_kernel() {  check_sets() {
       echo '### CHECKING SETS ###'
       cd $RELEASEDIR
   
       local _missing_sets
       local _v=$FILE_VER
   
       for _b in `echo /bsd* bsd bsd.mp bsd.rd | sort -u`; do
           _b=${_b#/}
           local _n=$_b
           if [ X"bsd.sp" == X"${_n}" ]; then
               _n=bsd
           fi
           if [ -e /${_b} -a ! -e ./${_n} ]; then
               echo ${_n} does not exist
               _missing_sets=1
           fi
       done
   
       for _s in $INSTALLED_SETS; do
           local _file=${_s}${_v}.tgz
           if [ ${_s} == sendmail-smtp_auth ]; then
               _file=${_s}.gz
           fi
           if [ ! -e ./${_file} ]; then
               echo ${_file} does not exist
               _missing_sets=1
           fi
       done
   
       if [ X"" == X"${_missing_sets}" ]; then
           echo All OK
       fi
   
       local _type
       for _type in $CHECKSUM_TYPES; do
           if [ -e $_type ]; then
               check_sum $_type
           fi
       done
   }
   
   
   install_kernels() {
     echo '### INSTALLING KERNEL ###'      echo '### INSTALLING KERNEL ###'
     if [ X"$USER" != X"root" -a X"$SUDO" == X"" ]; then      if [ X"$USER" != X"root" -a X"$SUDO" == X"" ]; then
         echo ${0##*/} must be run as root or SUDO must be set! >&2          echo ${0##*/} must be run as root or SUDO must be set! >&2
Line 214 
Line 295 
     fi      fi
   
     local _v=$FILE_VER      local _v=$FILE_VER
     if [ -e base${_v}.tgz ]; then  
         echo Extracting new firmware and ifconfig from base${_v}.tgz  
         $SUDO tar -C $DESTDIR -xzphf base${_v}.tgz \  
                 ./etc/firmware ./sbin/ifconfig  
     fi  
   
     $SUDO rm -f /obsd      $SUDO rm -f /obsd
     $SUDO ln /bsd /obsd      $SUDO ln /bsd /obsd
     if [ $? -ne 0 ]; then      if [ $? -ne 0 ]; then
         echo "Error copying old kernel!"          echo "Error copying old kernel!" >&2
         exit 1          exit 1
     fi      fi
   
       local _true_bsd=`follow_symlink /bsd`
       _true_bsd=${_true_bsd#/}
       local _installed_new_bsd
   
     for _b in bsd*; do      for _b in bsd*; do
         $SUDO rm -f /nbsd          $SUDO rm -f /nbsd
   
         if [ X"${_b}" == X"bsd" ]; then          if [ X"${_b}" == X"bsd" ]; then
             echo Copying bsd to /bsd.sp              echo Copying bsd to /bsd.sp
             $SUDO cp bsd /nbsd && $SUDO mv /nbsd /bsd.sp              $SUDO cp bsd /nbsd && $SUDO mv /nbsd /bsd.sp
Line 237 
Line 316 
                 echo ERROR: Could not copy new SP kernel! >&2                  echo ERROR: Could not copy new SP kernel! >&2
                 exit 1                  exit 1
             fi              fi
               if [ X"${_true_bsd}" == X"bsd.sp" ]; then
                   _installed_new_bsd=1
               fi
         else          else
             if [ -e /$_b ]; then              if [ -e "/${_b}" ]; then
                 echo Copying $_b to /                  echo Copying $_b to /
                 $SUDO cp ${_b} /nbsd && $SUDO mv /nbsd /${_b}                  $SUDO cp ${_b} /nbsd && $SUDO mv /nbsd /${_b}
                 if [ $? -ne 0 ]; then                  if [ $? -ne 0 ]; then
                     echo ERROR: Could not copy new $_b kernel! >&2                      echo ERROR: Could not copy new $_b kernel! >&2
                     exit 1                      exit 1
                 fi                  fi
                   if [ X"${_true_bsd}" == X"${_b}" ]; then
                       _installed_new_bsd=1
                   fi
             fi              fi
         fi          fi
     done      done
Line 262 
Line 347 
             exit 1              exit 1
         fi          fi
     fi      fi
   
       if [ -z $_installed_new_bsd ]; then
           echo WARNING: Did not replace $_true_bsd kernel >&2
       fi
 }  }
   
 install_sets() {  install_sets() {
Line 280 
Line 369 
   
     local _v=$FILE_VER      local _v=$FILE_VER
   
     for _f in *${_v}.tgz; do      if [ $CUR_VER != $NEW_VER -a ! -e /sbin/oreboot ]; then
           $SUDO cp /sbin/reboot /sbin/oreboot
           if [ $? -ne 0 ]; then
               echo "Error copying old reboot command!" >&2
               exit 1
           fi
           echo "/sbin/reboot copied to /sbin/oreboot"
       fi
   
       local _sets=`ls *${_v}.tgz | grep -v ^base `
       for _f in ${_sets} base${_v}.tgz; do
         _path=$DESTDIR          _path=$DESTDIR
         if [ X"etc${_v}.tgz"  == X"$_f" \          if [ X"etc${_v}.tgz"  == X"$_f" \
             -o X"xetc${_v}.tgz" == X"$_f" ]; then              -o X"xetc${_v}.tgz" == X"$_f" ]; then
             if [ X"" != X"$SYSMERGE" ]; then              [ X"" != X"$SYSMERGE" ] && continue
                 continue  
             fi  
             _path=/var/tmp/temproot              _path=/var/tmp/temproot
         fi          fi
   
Line 300 
Line 397 
     done      done
   
     echo Extracted all sets.      echo Extracted all sets.
   
       if [ -e ${RELEASEDIR}/sendmail-smtp_auth.gz ]; then
           gzcat ${RELEASEDIR}/sendmail-smtp_auth.gz > \
               ${RELEASEDIR}/sendmail-smtp_auth
       fi
       if [ -e ${RELEASEDIR}/sendmail-smtp_auth ]; then
           if ! pkg_info -qe 'cyrus-sasl-*'; then
               $SUDO pkg_add -i cyrus-sasl
           fi
   
           $SUDO install -o root -g smmsp -m 2555 \
               ${RELEASEDIR}/sendmail-smtp_auth \
               /usr/libexec/sendmail/sendmail
   
           echo Installed sendmail with smtp_auth
       fi
 }  }
   
 update_etc() {  update_etc() {
Line 337 
Line 450 
         fi          fi
   
         local _v=$FILE_VER          local _v=$FILE_VER
           local _args=""
         if [ -e etc${_v}.tgz ]; then          if [ -e etc${_v}.tgz ]; then
             _args="$_args -s etc${_v}.tgz"              _args="$_args -s etc${_v}.tgz"
         fi          fi
Line 347 
Line 461 
             echo ERROR: No upgrade sets found! >&2              echo ERROR: No upgrade sets found! >&2
         else          else
             echo '### RUNNING SYSMERGE ###'              echo '### RUNNING SYSMERGE ###'
             _args="-a $_args"              if sysmerge 2>&1 | grep -- -a >/dev/null; then
                   _args="-a $_args"
               fi
             $SUDO $SYSMERGE $_args              $SUDO $SYSMERGE $_args
         fi          fi
     fi      fi
 }  }
   
   
 if [ -e /etc/update_openbsd.conf ]; then  if [ -e /etc/update_openbsd.conf ]; then
     . /etc/update_openbsd.conf      . /etc/update_openbsd.conf
 fi  fi
Line 361 
Line 478 
     . ${HOME}/.update_openbsdrc      . ${HOME}/.update_openbsdrc
 fi  fi
   
 MIRROR=${MIRROR:=ftp://ftp.openbsd.org/pub/OpenBSD}  #MIRROR=${MIRROR:=ftp://ftp.openbsd.org/pub/OpenBSD}
 FTP_CMD=${FTP_CMD:=ftp -V}  FTP_CMD=${FTP_CMD:=ftp -V}
 PKG_PATH=${PKG_PATH:=/usr/ports/packages/`machine`/all/:${MIRROR}/`uname -r`/packages/`machine`/}  PKG_PATH=${PKG_PATH:=/usr/ports/packages/`machine`/all/:${MIRROR}/`uname -r`/packages/`machine`/}
   
Line 371 
Line 488 
   
 INSTALLED_SETS=${INSTALLED_SETS:=`installed_sets`}  INSTALLED_SETS=${INSTALLED_SETS:=`installed_sets`}
   
   CHECKSUM_TYPES=${CHECKSUM_TYPES:=SHA256 MD5}
   
 set_version  set_version
 local _error=$?  local _error=$?
   
Line 394 
Line 513 
         exit ${_error}          exit ${_error}
 fi  fi
   
 get_sets  if [ X"" != X"${FTP}" ]; then
       get_sets
   fi
   
   check_sets || exit
   
 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.
     echo You may be asked for it again later in the process.      echo You may be asked for it again later in the process.
     $SUDO -v      $SUDO -v
 fi  fi
   
 install_kernel  install_kernels
   install_sets
   
 if [ $CUR_VER == $NEW_VER ]; then  if [ $CUR_VER == $NEW_VER ]; then
     install_sets      if [ -e /sbin/oreboot ]; then
           echo Removing /sbin/oreboot
           $SUDO rm -f /sbin/oreboot
       fi
     update_etc      update_etc
   
     echo '### UPDATING PACKAGES ###'      echo '### UPDATING PACKAGES ###'
Line 413 
Line 540 
   
 else  else
     echo Instructions for updating to the new version available from      echo Instructions for updating to the new version available from
     echo "  http://www.openbsd.org/faq/upgrade${_v}.html"      if [ X"snapshots" != X"$FORCE_DIR" ]; then
           echo "  http://www.openbsd.org/faq/current.html"
       else
           echo "  http://www.openbsd.org/faq/upgrade${FILE_VER}.html"
       fi
 fi  fi
   
 echo New kernel installed.  Please reboot!  echo New kernel installed.  Please reboot!
   if [ -e /sbin/oreboot ]; then
       echo Possibly using /sbin/oreboot
   fi

Legend:
Removed from v.1.16  
changed lines
  Added in v.1.30

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