[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.2 and 1.42

version 1.2, 2008/08/12 23:07:05 version 1.42, 2012/12/09 03:41:41
Line 1 
Line 1 
 #!/bin/sh  #!/bin/sh
 # $RedRiver: update_openbsd,v 1.1 2008/08/12 18:45:47 andrew Exp $  # $AFresh1: update_openbsd,v 1.41 2012/12/08 19:55:39 andrew Exp $
   #
   # Copyright (c) 2012 Andrew Fresh <andrew@afresh1.com>
   #
   # Permission to use, copy, modify, and distribute this software for any
   # purpose with or without fee is hereby granted, provided that the above
   # copyright notice and this permission notice appear in all copies.
   #
   # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   #
   
 SYSMERGE=/usr/sbin/sysmerge  installed_sets() {
 MIRROR=ftp://ftp.openbsd.org/pub/OpenBSD      local misc=/usr/share/doc/README
 FTP_CMD='ftp -V'      local man=/usr/share/man/cat1/intro.0
 DESTDIR=/      local comp=/usr/bin/cc
       local game=/usr/games/
       local xbase=/usr/X11R6/
       local xetc=/etc/X11/xinit/xinitrc
       local xfont=/usr/X11R6/lib/X11/fonts
       local xserv=/usr/X11R6/bin/X
       local xshare=/usr/X11R6/bin/startx
   
 if [ -e /etc/update_openbsd.conf ]; then      local _c _d _e
     . /etc/update_openbsd.conf      echo -n base
 fi      echo -n ' etc'
       for _d in misc man comp game xbase xetc xfont xserv xshare; do
           eval _e=\$${_d}
           _c=`ls $_e 2> /dev/null | wc -l`
           #echo $_c $_d $_e
           if [ $_c -ne 0 ]; then
               echo -n " $_d"
           fi
       done
   
 if [ -e ${HOME}/.update_openbsdrc ]; then      sendmail -d0.1 --badoption </dev/null 2>/dev/null | grep -q SASL
     . ${HOME}/.update_openbsdrc      if [ $? == 0 ]; then
 fi          echo -n ' sendmail-smtp_auth'
       fi
   }
   
 installed_sets() {  kernel_file_version() {
     misc=/usr/share/doc/README      echo exit | config -e $1 | grep -A1 ^OpenBSD
     man=/usr/share/man/cat1/intro.0      #what $1 | sed -ne 's/[[:blank:]]\{1,\}//p'
     comp=/usr/bin/cc  }
     game=/usr/games/  
     xbase=/usr/X11R6/  
     xetc=/etc/X11/xinit/xinitrc  
     xfont=/usr/X11R6/lib/X11/fonts  
     xserv=/usr/X11R6/bin/X  
     xshare=/usr/X11R6/bin/startx  
   
     echo base  version_in() {
     echo etc          local _proto=${FTP%%://*}
     for d in misc man comp game xbase xetc xfont xserv xshare; do          local _file
         eval e=\$$d  
         c=`ls ${e} 2> /dev/null | wc -l`          if [ X"ftp" == X"${_proto}" ]; then
         #echo $c $d $e              local _list=`echo "ls base*.tgz" | ${FTP_CMD} ${FTP}/`
         if [ ${c} -ne 0 ]; then              _file=`echo ${_list} | awk '/base[0-9][0-9].tgz/ { print $9 }'`
             echo $d  
           elif [ X"http" == X"${_proto}" ]; then
               local _list=`${FTP_CMD} -V -o - ${FTP}/`
               _file=`echo ${_list} | awk '/[^x]base[0-9][0-9]*\.tgz/ {
                       sub("^.*base","base");
                       sub("\.tgz.*",".tgz");
                       print $0;
                   }'`
   
           elif [ X"scp" == X"${_proto}" ]; then
               echo SCP is not yet supported >&2
               return 2
   
           else
               echo Unsupported FTP ${FTP} >&2
               return 2
   
         fi          fi
     done  
           local _v=${_file##*base}
           _v=${_v%.tgz*}
           echo $_v
 }  }
   
 set_version() {  set_version() {
     CUR_VER=`uname -r`      CUR_VER=`uname -r`
     NEW_VER=`dc -e "${CUR_VER} 0.1 + p"`      NEW_VER=`dc -e "$CUR_VER 0.1 + p"`
       FILE_VER=""
       FTP=""
   
     if [ -d $NEW_VER ]; then      local _cv=`echo $CUR_VER | sed -e 's/\.//'`
         DIR=$NEW_VER      local _nv=`echo $NEW_VER | sed -e 's/\.//'`
     fi      local _v
   
     if [ -d $CUR_VER ]; then      if [ X"No" != X"$FORCE_DIR" -a -d $FORCE_DIR ]; then
           _dir=$FORCE_DIR
           if [ -e ${_dir}/base${_nv}.tgz ]; then
               _v=$_nv
           elif [ -e ${_dir}/base${_cv}.tgz ]; then
               NEW_VER=$CUR_VER
               _v=$_cv
           fi
   
       elif [ -d $CUR_VER ]; then
           _dir=$CUR_VER
         NEW_VER=$CUR_VER          NEW_VER=$CUR_VER
         DIR=$NEW_VER          if [ -e ${_dir}/base${_cv}.tgz ]; then
     fi              _v=$_cv
           fi
   
     if [ X"" != X"$FORCE_DIR" ]; then      elif [ -d $NEW_VER ]; then
         if [ -d $FORCE_DIR ]; then          _dir=$NEW_VER
             DIR=${FORCE_DIR}          if [ -e ${_dir}/base${_nv}.tgz ]; then
               _v=$_nv
             _cv=`echo $CUR_VER | sed -e 's/\.//'`  
             if [ -e $DIR/base${_cv}.tgz ]; then  
                 NEW_VER=$CUR_VER  
             fi  
         fi          fi
   
     fi      fi
   
     if [ X"" == X"$DIR" ]; then      if [ X"" != X"${MIRROR}" -a X"" == X"${_v}" ]; then
         FTP=${MIRROR}/${NEW_VER}/`machine`          if [ X"No" == X"${FORCE_DIR}" ]; then
               _dir=${NEW_VER}
           else
               _dir=${FORCE_DIR}
           fi
           FTP=${MIRROR}/${_dir}/`machine`
   
         #echo "ls\nquit\n" | ftp ${MIRROR} | grep "${NEW_VER}"          _v=`version_in`
         ${FTP_CMD} ${FTP}/MD5 > /dev/null  
   
         if [ -e MD5 ]; then          if [ X"" == X"${_v}" ]; then
             rm -f MD5              if [ X"No" != X"$FORCE_DIR" ]; then
         else                  echo No sets in forced [${FTP}] >&2
                   return 2
               fi
   
             NEW_VER=$CUR_VER              NEW_VER=$CUR_VER
               _dir=${NEW_VER}
               FTP=${MIRROR}/${_dir}/`machine`
   
               _v=`version_in`
         fi          fi
   
         if [ X"$FORCE_DIR" == X"" ]; then          if [ X"" == X"${_v}" ]; then
             DIR=$NEW_VER              echo No sets in [${FTP}] >&2
               return 2
           elif [ X"${_cv}" == X"${_v}" ]; then
               NEW_VER=$CUR_VER
           elif [ X"${_nv}" == X"${_v}" ]; then
               NEW_VER=$NEW_VER
         else          else
             DIR=$FORCE_DIR              echo Invalid version [$_v] >&2
               return 2
         fi          fi
   
         FTP=${MIRROR}/${DIR}/`machine`          if [ X"No" == X"$FORCE_DIR" ]; then
               _dir=$NEW_VER
           fi
   
     fi      fi
   
     if [ X"" != X"${RELEASEDIR}" ]; then      if [ X"" == X"${_v}" ]; then
         DIR=${RELEASEDIR}          echo ERROR: Unable to determine file version! >&2
           return 1
     fi      fi
   
     if [ -d $DIR ]; then      if [ X"" == X"$RELEASEDIR" ]; then
        cd $DIR          RELEASEDIR=`pwd`/$_dir
        RELEASEDIR=`pwd`  
     fi      fi
   
     _v=`echo $NEW_VER | sed -e 's/\.//'`      FILE_VER=$_v
       if [ X"" != X"${MIRROR}" ]; then
           FTP=${MIRROR}/${_dir}/`machine`
       fi
   
       BOOT_KERNEL=`( \
           echo bsd; \
           [ -e /boot.conf ] && sed -E '/^ *(set +image|boot) +/!d ; \
               s///; s/^.*://; s/ .*$//' /boot.conf \
       ) | tail -1`
       BOOT_KERNEL=`follow_symlink /$BOOT_KERNEL`
       BOOT_KERNEL="/${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() {
       echo '### GETTING SETS ###'
     if [ X"" == X"$FTP" ]; then      if [ X"" == X"$FTP" ]; then
         echo Error, no FTP site is set! >&2          echo ERROR: No FTP site set! >&2
         exit 1          return 1
     fi      fi
   
     if [ X"" == X"$RELEASEDIR" ]; then      mkdir -p ${RELEASEDIR}
         RELEASEDIR=$DIR      cd $RELEASEDIR
     fi  
   
     mkdir -p $RELEASEDIR      local _v=$FILE_VER
     cd ${RELEASEDIR}  
     RELEASEDIR=`pwd`  
   
     for _b in /bsd* bsd bsd.mp bsd.rd; 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}
         fi          fi
     done      done
   
     for _s in `installed_sets`; do      for _s in $INSTALLED_SETS; do
         echo ${FTP_CMD} ${FTP}/${_s}${_v}.tgz          local _file=${_s}${_v}.tgz
         ${FTP_CMD} ${FTP}/${_s}${_v}.tgz          if [ ${_s} == sendmail-smtp_auth ]; then
               _file=${_s}.gz
           fi
   
           if [ ! -e ./${_file} ]; then
               echo $FTP_CMD ${FTP}/${_file}
               $FTP_CMD ${FTP}/${_file}
           fi
     done      done
   
     echo ${FTP_CMD} ${FTP}/MD5      local _type
     ${FTP_CMD} ${FTP}/MD5      for _type in $CHECKSUM_TYPES; do
     ls bsd* *.tgz > index          [ -e $_type ] && break
     grep -f index MD5 | md5 -c          echo $FTP_CMD ${FTP}/$_type
           $FTP_CMD ${FTP}/$_type
       done
   }
   
     if [ $? -ne 0 ]; then  follow_symlink () {
         echo !!! WARNING: MD5 does not match !!! >&2      local _file=$1
         exit 1      # This could go circular, but I dunno how to fix that.
       if [ -h $_file ]; then
           follow_symlink $( file $_file |
               grep 'symbolic link' |
               sed -e s/^.*\\\`// -e s/\\\'\$// )
       else
           echo $_file
     fi      fi
 }  }
   
 install_kernel() {  check_sum () {
     if [ X"${USER}" != X"root" -a X"${SUDO}" == X"" ]; then      local _type=$1
         echo ${0##*/} must be run as root or SUDO must be set! >&2      echo "### CHECKING $_type SUMS ###"
         exit 1      cd $RELEASEDIR
   
       if [ ! -e $_type ]; then
           echo $_type File does not exist!
           return 1
     fi      fi
   
     if [ X"" == X"$RELEASEDIR" ]; then      ls bsd* *gz | sed -e 's/\(.*\)/(\1)/' > index
         echo "ERROR: no source for new kernels!" >&2      grep -f index $_type | sum -c
         exit 1  
     else      if [ $? -ne 0 ]; then
         cd $RELEASEDIR          echo ERROR: $_type does not match! >&2
           return 1
     fi      fi
   }
   
     if [ ! -e bsd ]; then  check_sets() {
         echo "new bsd kernel does not exist!" >&2      echo '### CHECKING SETS ###'
         exit 1      cd $RELEASEDIR
   
       local _missing_sets
       local _v=$FILE_VER
   
       for _n in $INSTALL_KERNELS; do
           local _o=$_n
           [ X"bsd" == X"${_o}" -a -e /bsd.sp ] && _o=bsd.sp
           if [ -e /${_o} -a ! -e ./${_n} ]; then
               echo ${_o} does not exist
               _missing_sets=1
           fi
   
           if [ X"${BOOT_KERNEL}" == X"/${_o}" -a -e ./${_n} ]; then
               NEW_KERNEL_VERSION=`kernel_file_version ./${_n}`
           fi
       done
   
       if [ X"$NEW_KERNEL_VERSION" == X"" ]; then
           echo Missing replacement for boot kernel $BOOT_KERNEL >&2
           _missing_sets=1
     fi      fi
   
     if [ -e /bsd.mp -a ! -e bsd.mp ]; then      for _s in $INSTALLED_SETS; do
         echo "new bsd.mp kernel does not exist!" >&2          local _file=${_s}${_v}.tgz
         exit 1          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      fi
   
     if [ ! -e bsd.rd ]; then      local _type
         echo "new bsd.rd kernel does not exist!" >&2      for _type in $CHECKSUM_TYPES; do
           if [ -e $_type ]; then
               check_sum $_type
           fi
       done
   }
   
   
   install_kernels() {
       echo '### INSTALLING KERNEL ###'
       if [ X"$USER" != X"root" -a X"$SUDO" == X"" ]; then
           echo ${0##*/} must be run as root or SUDO must be set! >&2
         exit 1          exit 1
     fi      fi
   
       if [ X"" == X"$RELEASEDIR" ]; then
     if [ -e base${_v}.tgz ]; then          echo ERROR: no source for new kernels! >&2
         echo Extracting new firmware from base${_v}.tgz          exit 1
         ${SUDO} tar -C ${DESTDIR} -xzphf base${_v}.tgz "*etc/firmware/*"  
     fi      fi
   
     ${SUDO} rm -f /obsd      echo "Backing up $BOOT_KERNEL to /obsd"
     ${SUDO} ln /bsd /obsd      $SUDO ln -f $BOOT_KERNEL /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
   
     for b in bsd*; do      cd $RELEASEDIR
         ${SUDO} rm -f /nbsd  
   
         if [ X"$b" == X"bsd" ]; then      for _b in $INSTALL_KERNELS; do
             echo Copying bsd to /bsd.sp          $SUDO rm -f /nbsd
             ${SUDO} cp bsd /nbsd && ${SUDO} mv /nbsd /bsd.sp          local _bd=$_b
             if [ $? -ne 0 ]; then          [ X"${_b}" == X"bsd" ] && _bd="bsd.sp"
                 echo "ERROR: Couldn't copy new SP kernel!" >&2  
                 exit 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: Couldn't copy new ${b} kernel!" >&2  
                     exit 1  
                 fi  
             fi  
         fi  
     done  
   
     if [ ! -h /bsd ]; then          local _is_boot=""
         if [ -e /bsd.mp ]; then          [ X"$BOOT_KERNEL" == X"/${_bd}" ] && _is_boot="# boot kernel"
             echo linking /bsd.mp to /bsd  
             ${SUDO} ln -sf /bsd.mp /bsd          echo "Copying $_b to /$_bd $_is_boot"
         else          $SUDO cp ${_b} /nbsd && $SUDO mv /nbsd /${_bd}
             echo linking /bsd.sp to /bsd  
             ${SUDO} ln -sf /bsd.sp /bsd  
         fi  
         if [ $? -ne 0 ]; then          if [ $? -ne 0 ]; then
             echo "ERROR: Couldn't symlink new kernel!" >&2              echo ERROR: Could not copy new $_bd kernel! >&2
             exit 1              exit 1
         fi          fi
       done
   
       cd $OLDPWD
   
       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
 }  }
   
 install_sets() {  install_sets() {
     if [ X"${USER}" != X"root" -a X"${SUDO}" == X"" ]; then      echo '### INSTALLING SETS ###'
       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
         exit 1          exit 1
     fi      fi
   
     if [ X"" == X"$RELEASEDIR" ]; then      if [ X"" == X"$RELEASEDIR" ]; then
         echo "ERROR: no source for sets!" >&2          echo ERROR: no source for sets! >&2
         exit 1          exit 1
     else      else
         cd $RELEASEDIR          cd $RELEASEDIR
     fi      fi
   
     for _f in *${_v}.tgz; do      local _v=$FILE_VER
         _path=${DESTDIR}  
         if [ X"etc${_v}.tgz"  == X"${_f}" \      if [ $CUR_VER != $NEW_VER -a ! -e /sbin/oreboot ]; then
             -o X"xetc${_v}.tgz" == X"${_f}" ]; then          $SUDO cp /sbin/reboot /sbin/oreboot
             if [ X"" != X"${SYSMERGE}" ]; then          if [ $? -ne 0 ]; then
                 continue              echo "Error copying old reboot command!" >&2
             fi              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
           if [ X"etc${_v}.tgz"  == X"$_f" \
               -o X"xetc${_v}.tgz" == X"$_f" ]; then
               [ X"" != X"$SYSMERGE" ] && continue
             _path=/var/tmp/temproot              _path=/var/tmp/temproot
         fi          fi
   
         echo Extracting ${_f} to $_path          echo Extracting $_f to $_path
         ${SUDO} mkdir -p $_path          $SUDO mkdir -p $_path
         ${SUDO} tar -C $_path -xzphf ${RELEASEDIR}/${_f}          $SUDO tar -C $_path -xzphf ${RELEASEDIR}/${_f}
         if [ $? -ne 0 ]; then          if [ $? -ne 0 ]; then
             echo "Error extracting ${_f}!" >&2              echo ERROR: Could not extract ${_f}! >&2
             exit 1              exit 1
         fi          fi
     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() {
     if [ X"" == X"${SYSMERGE}" ]; then      echo '### UPDATING ETC ###'
       if [ ! -e $SYSMERGE ]; then
           SYSMERGE=
       fi
   
       if [ X"" == X"$SYSMERGE" ]; then
         if [ -e /var/tmp/temproot ]; then          if [ -e /var/tmp/temproot ]; then
             MERGEMASTER=`which mergemaster`              MERGEMASTER=`which mergemaster`
   
             if [ $? != 0 ]; then              if [ $? != 0 ]; then
                 ${SUDO} pkg_add -i mergemaster                  $SUDO pkg_add -i mergemaster
   
                 MERGEMASTER=`which mergemaster`                  MERGEMASTER=`which mergemaster`
                 if [ $? != 0 ]; then                  if [ $? != 0 ]; then
                     echo ERROR: mergemaster not installed! >&2                      echo ERROR: mergemaster not installed! >&2
Line 259 
Line 457 
             fi              fi
   
             echo '### RUNNING MERGEMASTER ###'              echo '### RUNNING MERGEMASTER ###'
             ${SUDO} ${MERGEMASTER} -irv              $SUDO $MERGEMASTER -irv
         else          else
             echo "ERROR: no source for etc!" >&2              echo "ERROR: no source for etc!" >&2
             exit 1              exit 1
Line 272 
Line 470 
             cd $RELEASEDIR              cd $RELEASEDIR
         fi          fi
   
         _cv=`echo $CUR_VER | sed -e 's/\.//'`          local _v=$FILE_VER
         if [ -e etc${_cv}.tgz ]; then          local _args=""
             _args="${_args} -s etc${_cv}.tgz"          if [ -e etc${_v}.tgz ]; then
               _args="$_args -s etc${_v}.tgz"
         fi          fi
         if [ -e xetc${_cv}.tgz ]; then          if [ -e xetc${_v}.tgz ]; then
             _args="${_args} -x xetc${_cv}.tgz"              _args="$_args -x xetc${_v}.tgz"
         fi          fi
         if [ X"" == X"$_args" ]; then          if [ X"" == X"$_args" ]; then
             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
             ${SUDO} ${SYSMERGE} $_args                  _args="-a $_args"
               fi
               $SUDO $SYSMERGE $_args
         fi          fi
     fi      fi
 }  }
   
   
 PKG_PATH=${PKG_PATH:=/usr/ports/packages/`machine`/all/:${MIRROR}/`uname -r`/packages/`machine`/}  if [ -e /etc/update_openbsd.conf ]; then
       . /etc/update_openbsd.conf
   fi
   
 if [ ! -e ${SYSMERGE} ]; then  if [ -e ${HOME}/.update_openbsdrc ]; then
     SYSMERGE=      . ${HOME}/.update_openbsdrc
 fi  fi
   
   #MIRROR=${MIRROR:=ftp://ftp.openbsd.org/pub/OpenBSD}
   FTP_CMD=${FTP_CMD:=ftp -V}
   PKG_PATH=${PKG_PATH:=/usr/ports/packages/`machine`/all/:${MIRROR}/`uname -r`/packages/`machine`/}
   
   DESTDIR=${DESTDIR:=/}
   SYSMERGE=${SYSMERGE:=/usr/sbin/sysmerge}
   FORCE_DIR=${FORCE_DIR:=No}
   
   INSTALLED_SETS=${INSTALLED_SETS:=`installed_sets`}
   
   CHECKSUM_TYPES=${CHECKSUM_TYPES:=SHA256 MD5}
   
 set_version  set_version
   local _error=$?
   
 echo  echo
 echo "-= update_openbsd - helper script to update OpenBSD =-"  echo "-= update_openbsd - helper script to update OpenBSD =-"
 echo "------------------------------------------------------"  echo "------------------------------------------------------"
 echo  echo
 echo "       DIR: $DIR"  echo "           SUDO: $SUDO"
 echo "RELEASEDIR: $RELEASEDIR"  echo "       SYSMERGE: $SYSMERGE"
 echo "   DESTDIR: $DESTDIR"  echo "         MIRROR: $MIRROR"
 echo "   CUR_VER: $CUR_VER"  echo "     RELEASEDIR: $RELEASEDIR"
 echo "   NEW_VER: $NEW_VER"  echo "        DESTDIR: $DESTDIR"
 echo "      SUDO: $SUDO"  echo "    BOOT_KERNEL: $BOOT_KERNEL"
 echo "  SYSMERGE: $SYSMERGE"  echo "INSTALL_KERNELS: $INSTALL_KERNELS"
 echo "    MIRROR: $MIRROR"  echo " INSTALLED_SETS: $INSTALLED_SETS"
 echo  echo
   echo "        CUR_VER: $CUR_VER"
   echo "        NEW_VER: $NEW_VER"
   #echo "       FILE_VER: $FILE_VER"
   echo
   
 if [ X"" == X"$RELEASEDIR" ]; then  if [ ${_error} -ne 0 ]; then
     echo '### GETTING SETS ###'          exit ${_error}
   fi
   
   if [ X"" != X"${FTP}" ]; then
     get_sets      get_sets
 fi  fi
   
   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.
     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
   
 echo '### INSTALLING KERNEL ###'  install_kernels
 install_kernel  install_sets
   
 if [ $CUR_VER == $NEW_VER -o X"" != X"$FORCE_DIR" ]; then  if [ $CUR_VER == $NEW_VER ]; then
     echo '### INSTALLING SETS ###'      if [ -e /sbin/oreboot ]; then
     install_sets          echo Removing /sbin/oreboot
           $SUDO rm -f /sbin/oreboot
     echo '### UPDATING ETC ###'      fi
     update_etc      update_etc
   
     echo '### UPDATING PACKAGES ###'      echo '### UPDATING PACKAGES ###'
Line 338 
Line 577 
   
 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
   
   local _send_dmesg=`dirname $0`/send_dmesg
   if [ -e "$_send_dmesg" ]; then
       if [ -e $RELEASEDIR/.send_dmesg ]; then
           $_send_dmesg
           rm -f $RELEASEDIR/.send_dmesg
       elif [ X"$CUR_VER" != X"$NEW_VER" ]; then
           touch $RELEASEDIR/.send_dmesg
       fi
   fi

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.42

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