| version 1.23, 2009/05/15 00:00:46 | 
version 1.55, 2013/12/28 02:56:24 | 
 | 
 | 
|  #!/bin/sh | 
 #!/bin/sh | 
|  # $RedRiver: update_openbsd,v 1.22 2009/05/13 16:40:50 andrew Exp $ | 
 # $AFresh1: update_openbsd,v 1.54 2013/12/28 02:55:28 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. | 
|   | 
 # | 
|   | 
  | 
|  installed_sets() { | 
 installed_sets() { | 
|      local misc=/usr/share/doc/README | 
     local misc=/usr/share/doc/README | 
 | 
 | 
|          fi | 
         fi | 
|      done | 
     done | 
|   | 
  | 
|      sendmail -d0.1 root < /dev/null | grep -q SASL | 
     sendmail -d0.1 --badoption </dev/null 2>/dev/null | grep -q SASL | 
|      if [ $? == 0 ]; then | 
     if [ $? == 0 ]; then | 
|          echo -n ' sendmail-smtp_auth' | 
         echo -n ' sendmail-smtp_auth' | 
|      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 | 
 | 
 | 
|      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=`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#/}" | 
|   | 
     # if the boot kernel was our specially named bsd.sp, we install from bsd | 
|   | 
     if [ X"$INSTALL_KERNELS" == X"bsd.sp" ]; then | 
|   | 
         INSTALL_KERNELS="bsd" | 
|   | 
     fi | 
|   | 
     # 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 ###' | 
     echo '==> GETTING SETS' | 
|      if [ X"" == X"$FTP" ]; then | 
     if [ X"" == X"$FTP" ]; then | 
|          echo ERROR: No FTP site set! >&2 | 
         echo ERROR: No FTP site set! >&2 | 
|          return 1 | 
         return 1 | 
 | 
 | 
|   | 
  | 
|      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} ]; then | 
|              echo $FTP_CMD ${FTP}/${_b} | 
             echo "===> $FTP_CMD ${FTP}/${_b}" | 
|              $FTP_CMD ${FTP}/${_b} | 
             $FTP_CMD ${FTP}/${_b} | 
|          fi | 
         fi | 
|      done | 
     done | 
 | 
 | 
|          fi | 
         fi | 
|   | 
  | 
|          if [ ! -e ./${_file} ]; then | 
         if [ ! -e ./${_file} ]; then | 
|              echo $FTP_CMD ${FTP}/${_file} | 
             echo "===> $FTP_CMD ${FTP}/${_file}" | 
|              $FTP_CMD ${FTP}/${_file} | 
             $FTP_CMD ${FTP}/${_file} | 
|          fi | 
         fi | 
|      done | 
     done | 
|   | 
  | 
|      local _type | 
     local _type | 
|      for _type in $CHECKSUM_TYPES; do | 
     for _type in $CHECKSUM_TYPES; do | 
|          if [ ! -e $_type ]; then | 
         [ -e $_type ] && break | 
|              echo $FTP_CMD ${FTP}/$_type | 
         echo "===> $FTP_CMD ${FTP}/$_type" | 
|              $FTP_CMD ${FTP}/$_type | 
         $FTP_CMD ${FTP}/$_type | 
|          fi | 
  | 
|      done | 
     done | 
|  } | 
 } | 
|   | 
  | 
|  follow_symlink () { | 
 follow_symlink () { | 
|      local _file=$1 | 
     local _file=$1 | 
|      local _next=$( file $_file | | 
     # This could go circular, but I dunno how to fix that. | 
|          grep 'symbolic link' | | 
     if [ -h $_file ]; then | 
|          sed -e s/^.*\\\`// -e s/\\\'\$// ) | 
         follow_symlink $( file $_file | | 
|      if [ -h $_next ]; then | 
             grep 'symbolic link' | | 
|          follow_symlink $_next | 
             sed -e s/^.*\\\`// -e s/\\\'\$// ) | 
|      else | 
     else | 
|          echo $_next | 
         echo $_file | 
|      fi | 
     fi | 
|  } | 
 } | 
|   | 
  | 
|  check_sum () { | 
 check_sum () { | 
|      local _type=$1 | 
     local _type=$1 | 
|      echo "### CHECKING $_type SUMS ###" | 
     echo "==> CHECKING $_type SUMS" | 
|      cd $RELEASEDIR | 
     cd $RELEASEDIR | 
|   | 
  | 
|      if [ ! -e $_type ]; then | 
     if [ ! -e $_type ]; then | 
 | 
 | 
|      fi | 
     fi | 
|   | 
  | 
|      ls bsd* *gz | sed -e 's/\(.*\)/(\1)/' > index | 
     ls bsd* *gz | sed -e 's/\(.*\)/(\1)/' > index | 
|      grep -f index $_type | sum -c | 
     grep -f index $_type | sum -c | 
|   | 
  | 
|      if [ $? -ne 0 ]; then | 
     if [ $? -ne 0 ]; then | 
|          echo ERROR: $_type does not match! >&2 | 
         echo ERROR: $_type does not match! >&2 | 
 | 
 | 
|  } | 
 } | 
|   | 
  | 
|  check_sets() { | 
 check_sets() { | 
|      echo '### CHECKING SETS ###' | 
     echo '==> CHECKING SETS' | 
|      cd $RELEASEDIR | 
     cd $RELEASEDIR | 
|   | 
  | 
|      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 | 
 | 
 | 
|      done | 
     done | 
|   | 
  | 
|      if [ X"" == X"${_missing_sets}" ]; then | 
     if [ X"" == X"${_missing_sets}" ]; then | 
|          echo All OK | 
         echo '===> All OK' | 
|      fi | 
     fi | 
|   | 
  | 
|      local _type | 
     local _type | 
|      for _type in $CHECKSUM_TYPES; do | 
     for _type in $CHECKSUM_TYPES; do | 
|          if [ -e $_type ]; then | 
         if [ -e $_type ]; then | 
|              check_sum $_type | 
             check_sum $_type | 
|   | 
             [ $? -ne 0 -a -z "$IGNORE_CHECKSUM_ERROR" ] && exit 1 | 
|          fi | 
         fi | 
|      done | 
     done | 
|  } | 
 } | 
|   | 
  | 
|   | 
  | 
|  install_kernel() { | 
 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 | 
|          exit 1 | 
         exit 1 | 
 | 
 | 
|      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 | 
     if [ X"$BOOT_KERNEL_VERSION" != X"$NEW_KERNEL_VERSION" ]; then | 
|          echo ERROR: new bsd kernel does not exist! >&2 | 
         echo "===> Backing up $BOOT_KERNEL to /obsd" | 
|          exit 1 | 
         $SUDO ln -f $BOOT_KERNEL /obsd | 
|   | 
         if [ $? -ne 0 ]; then | 
|   | 
             echo "Error copying old kernel!" >&2 | 
|   | 
             exit 1 | 
|   | 
         fi | 
|      fi | 
     fi | 
|   | 
  | 
|      if [ -e /bsd.mp -a ! -e bsd.mp ]; then | 
     cd $RELEASEDIR | 
|          echo ERROR: new bsd.mp kernel does not exist! >&2 | 
  | 
|          exit 1 | 
  | 
|      fi | 
  | 
|   | 
  | 
|      if [ ! -e bsd.rd ]; then | 
     for _b in $INSTALL_KERNELS; do | 
|          echo ERROR: new bsd.rd kernel does not exist! >&2 | 
         $SUDO rm -f /nbsd | 
|          exit 1 | 
         local _bd=$_b | 
|      fi | 
         [ X"${_b}" == X"bsd" ] && _bd="bsd.sp" | 
|   | 
  | 
|      local _v=$FILE_VER | 
         local _is_boot="" | 
|   | 
         [ X"$BOOT_KERNEL" == X"/${_bd}" ] && _is_boot="# boot kernel" | 
|   | 
  | 
|   | 
         echo "===> Copying $_b to /$_bd $_is_boot" | 
|   | 
         $SUDO cp ${_b} /nbsd && $SUDO mv /nbsd /${_bd} | 
|   | 
         if [ $? -ne 0 ]; then | 
|   | 
             echo ERROR: Could not copy new $_bd kernel! >&2 | 
|   | 
             exit 1 | 
|   | 
         fi | 
|   | 
     done | 
|   | 
  | 
|      $SUDO rm -f /obsd | 
     cd $OLDPWD | 
|      $SUDO ln /bsd /obsd | 
  | 
|      if [ $? -ne 0 ]; then | 
  | 
|          echo "Error copying old kernel!" >&2 | 
  | 
|          exit 1 | 
  | 
|      fi | 
  | 
|   | 
  | 
|      local _true_bsd=`follow_symlink /bsd` | 
     if [ ! -h /bsd ]; then | 
|      local _installed_new_bsd | 
             cd / | 
|   | 
         for _b in $BOOT_KERNELS; do | 
|      for _b in bsd*; do | 
             [ X"$_b" == X"bsd" ] && _b="bsd.sp" | 
|          $SUDO rm -f /nbsd | 
             if [ -e $_b ]; then | 
|          if [ X"${_b}" == X"bsd" ]; then | 
                 echo "===> symlinking $_b to /bsd" | 
|              echo Copying bsd to /bsd.sp | 
                 $SUDO ln -sf $_b bsd | 
|              $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" ]; 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 | 
                 if [ $? -ne 0 ]; then | 
|                      echo ERROR: Could not copy new $_b kernel! >&2 | 
                     echo ERROR: Could not symlink new kernel! >&2 | 
|                      exit 1 | 
                     exit 1 | 
|                  fi | 
                 fi | 
|                  if [ X"${_true_bsd}" == X"${_b}" ]; then | 
                 break | 
|                      _installed_new_bsd=1 | 
  | 
|                  fi | 
  | 
|              fi | 
             fi | 
|          fi | 
         done | 
|      done | 
             cd $OLDPWD | 
|   | 
  | 
|      if [ ! -h /bsd ]; then | 
  | 
|          if [ -e /bsd.mp ]; then | 
  | 
|              echo linking /bsd.mp to /bsd | 
  | 
|              $SUDO ln -sf /bsd.mp /bsd | 
  | 
|          else | 
  | 
|              echo linking /bsd.sp to /bsd | 
  | 
|              $SUDO ln -sf /bsd.sp /bsd | 
  | 
|          fi | 
  | 
|          if [ $? -ne 0 ]; then | 
  | 
|              echo ERROR: Could not symlink new kernel! >&2 | 
  | 
|              exit 1 | 
  | 
|          fi | 
  | 
|      fi | 
     fi | 
|   | 
  | 
|      if [ -z $_installed_new_bsd ]; then | 
  | 
|          echo WARNING: Did not replace $_true_bsd kernel >&2 | 
  | 
|      fi | 
  | 
|  } | 
 } | 
|   | 
  | 
|  install_sets() { | 
 install_sets() { | 
|      echo '### INSTALLING SETS ###' | 
     echo '==> INSTALLING SETS' | 
|      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 | 
|          exit 1 | 
         exit 1 | 
 | 
 | 
|   | 
  | 
|      local _v=$FILE_VER | 
     local _v=$FILE_VER | 
|   | 
  | 
|      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 ` | 
     local _sets=`ls *${_v}.tgz | grep -v ^base ` | 
|      for _f in ${_sets} base${_v}.tgz; do | 
     for _f in ${_sets} base${_v}.tgz; do | 
|          _path=$DESTDIR | 
         _path=$DESTDIR | 
 | 
 | 
|              _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 | 
 | 
 | 
|          fi | 
         fi | 
|      done | 
     done | 
|   | 
  | 
|      echo Extracted all sets. | 
     echo '===> Extracted all sets.' | 
|   | 
 } | 
|   | 
  | 
|   | 
 install_sendmail_smtp_auth() { | 
|      if [ -e ${RELEASEDIR}/sendmail-smtp_auth.gz ]; then | 
     if [ -e ${RELEASEDIR}/sendmail-smtp_auth.gz ]; then | 
|          gzcat ${RELEASEDIR}/sendmail-smtp_auth.gz > \ | 
         gzcat ${RELEASEDIR}/sendmail-smtp_auth.gz > \ | 
|              ${RELEASEDIR}/sendmail-smtp_auth | 
             ${RELEASEDIR}/sendmail-smtp_auth | 
 | 
 | 
|              ${RELEASEDIR}/sendmail-smtp_auth \ | 
             ${RELEASEDIR}/sendmail-smtp_auth \ | 
|              /usr/libexec/sendmail/sendmail | 
             /usr/libexec/sendmail/sendmail | 
|   | 
  | 
|          echo Installed sendmail with smtp_auth | 
         echo '===> Installed sendmail with smtp_auth' | 
|      fi | 
     fi | 
|  } | 
 } | 
|   | 
  | 
|  update_etc() { | 
 update_etc() { | 
|      echo '### UPDATING ETC ###' | 
     echo '==> UPDATING ETC' | 
|      if [ ! -e $SYSMERGE ]; then | 
     if [ ! -e $SYSMERGE ]; then | 
|          SYSMERGE= | 
         echo "ERROR: Can't find sysmerge!" >&2 | 
|   | 
         exit 1; | 
|      fi | 
     fi | 
|   | 
  | 
|      if [ X"" == X"$SYSMERGE" ]; then | 
     if [ X"" == X"$RELEASEDIR" ]; then | 
|          if [ -e /var/tmp/temproot ]; then | 
         echo "ERROR: no source for etc!" >&2 | 
|              MERGEMASTER=`which mergemaster` | 
         exit 1 | 
|   | 
     fi | 
|   | 
  | 
|              if [ $? != 0 ]; then | 
     cd $RELEASEDIR | 
|                  $SUDO pkg_add -i mergemaster | 
  | 
|   | 
  | 
|                  MERGEMASTER=`which mergemaster` | 
     local _v=$FILE_VER | 
|                  if [ $? != 0 ]; then | 
     local _args="" | 
|                      echo ERROR: mergemaster not installed! >&2 | 
     if [ -e etc${_v}.tgz ]; then | 
|                      exit 1 | 
         _args="$_args -s etc${_v}.tgz" | 
|                  fi | 
     fi | 
|              fi | 
     if [ -e xetc${_v}.tgz ]; then | 
|   | 
         _args="$_args -x xetc${_v}.tgz" | 
|              echo '### RUNNING MERGEMASTER ###' | 
     fi | 
|              $SUDO $MERGEMASTER -irv | 
     if [ X"" == X"$_args" ]; then | 
|          else | 
         echo ERROR: No upgrade sets found! >&2 | 
|              echo "ERROR: no source for etc!" >&2 | 
  | 
|              exit 1 | 
  | 
|          fi | 
  | 
|      else | 
     else | 
|          if [ X"" == X"$RELEASEDIR" ]; then | 
         echo '==> RUNNING SYSMERGE' | 
|              echo "ERROR: no source for etc!" >&2 | 
         $SUDO $SYSMERGE $_args | 
|              exit 1 | 
  | 
|          else | 
  | 
|              cd $RELEASEDIR | 
  | 
|          fi | 
  | 
|   | 
  | 
|          local _v=$FILE_VER | 
  | 
|          if [ -e etc${_v}.tgz ]; then | 
  | 
|              _args="$_args -s etc${_v}.tgz" | 
  | 
|          fi | 
  | 
|          if [ -e xetc${_v}.tgz ]; then | 
  | 
|              _args="$_args -x xetc${_v}.tgz" | 
  | 
|          fi | 
  | 
|          if [ X"" == X"$_args" ]; then | 
  | 
|              echo ERROR: No upgrade sets found! >&2 | 
  | 
|          else | 
  | 
|              echo '### RUNNING SYSMERGE ###' | 
  | 
|              _args="-a $_args" | 
  | 
|              $SUDO $SYSMERGE $_args | 
  | 
|          fi | 
  | 
|      fi | 
     fi | 
|   | 
  | 
|   | 
     cd $OLDPWD | 
|  } | 
 } | 
|   | 
  | 
|   | 
  | 
 | 
 | 
|  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 | 
 | 
 | 
|   | 
  | 
|  check_sets || exit | 
 check_sets || exit | 
|   | 
  | 
|  if [ X"" != X"$SUDO" ]; then | 
 echo "===> Last booted:\n$BOOTED_KERNEL_VERSION" | 
|      echo Please enter your sudo password if prompted. | 
 if [ X"$BOOT_KERNEL_VERSION" != X"$BOOTED_KERNEL_VERSION" \ | 
|      echo You may be asked for it again later in the process. | 
   -a X"$BOOT_KERNEL_VERSION" != X"$NEW_KERNEL_VERSION" ]; then | 
|      $SUDO -v | 
     echo "Next boot (unless replaced):\n$BOOT_KERNEL_VERSION" | 
|  fi | 
 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 | 
|   | 
     NEW_KERNEL_VERSION=$BOOT_KERNEL_VERSION | 
|   | 
 fi | 
|   | 
  | 
|  install_kernel | 
 if [ -n "$SUDO" -a $CUR_VER != $NEW_VER ]; then | 
|   | 
     echo >&2 | 
|   | 
     echo "!!! You are upgrading between OpenBSD versions.     !!!" >&2 | 
|   | 
     echo "!!! You should make sure you have a root shell open !!!" >&2 | 
|   | 
     echo "!!! It is needed in order to run /sbin/oreboot.     !!!" >&2 | 
|   | 
     echo "!!! sudo MAY NOT WORK after sets are extracted.     !!!" >&2 | 
|   | 
     echo >&2 | 
|   | 
     echo "ctrl+C to cancel, enter to continue" >&2 | 
|   | 
     local _temp | 
|   | 
     read _temp | 
|   | 
 fi | 
|   | 
  | 
|   | 
 if [ -n "$SUDO" ]; then | 
|   | 
     echo | 
|   | 
     echo You may be asked for your sudo password multiple times. | 
|   | 
     $SUDO -v -p "sudo Password: " | 
|   | 
 fi | 
|   | 
  | 
|   | 
 if [ X"$NEW_KERNEL_VERSION" != X"$BOOTED_KERNEL_VERSION" \ | 
|   | 
      -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 | 
|   | 
  | 
|   | 
 install_kernels | 
|  install_sets | 
 install_sets | 
|   | 
  | 
|  if [ $CUR_VER == $NEW_VER ]; then | 
 if [ X"$NEW_KERNEL_VERSION" == X"$BOOTED_KERNEL_VERSION" ]; then | 
|   | 
     install_sendmail_smtp_auth | 
|   | 
  | 
|      if [ -e /sbin/oreboot ]; then | 
     if [ -e /sbin/oreboot ]; then | 
|          echo Removing /sbin/oreboot | 
         echo Removing /sbin/oreboot | 
|          $SUDO rm -f /sbin/oreboot | 
         $SUDO rm -f /sbin/oreboot | 
|      fi | 
     fi | 
|      update_etc | 
     update_etc | 
|   | 
  | 
|      echo '### UPDATING PACKAGES ###' | 
     echo '==> UPDATING PACKAGES' | 
|      $SUDO pkg_add -ui -F update -F updatedepends | 
     $SUDO pkg_add -ui -F update -F updatedepends | 
|   | 
  | 
|  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! |