[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.17 and 1.35

version 1.17, 2009/01/14 17:58:40 version 1.35, 2010/02/10 20:57:07
Line 1 
Line 1 
 #!/bin/sh  #!/bin/sh
 # $RedRiver: update_openbsd,v 1.16 2009/01/13 21:47:49 andrew Exp $  # $AFresh1: update_openbsd,v 1.33 2009/12/31 16:48:19 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 --badoption </dev/null 2>/dev/null | grep -q SASL
       if [ $? == 0 ]; then
           echo -n ' sendmail-smtp_auth'
       fi
 }  }
   
 version_in() {  version_in() {
Line 166 
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
       # 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
 }  }
   
 check_md5() {  check_sum () {
     echo '### CHECKING MD5 ###'      local _type=$1
       echo "### CHECKING $_type SUMS ###"
     cd $RELEASEDIR      cd $RELEASEDIR
   
     if [ ! -e MD5 ]; then      if [ ! -e $_type ]; then
         echo MD5 File does not exist!          echo $_type File does not exist!
         return 1          return 1
     fi      fi
   
     ls bsd* *.tgz | sed -e 's/\(.*\)/(\1)/' > index      ls bsd* *gz | sed -e 's/\(.*\)/(\1)/' > index
     grep -f index MD5 | md5 -c      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
 }  }
Line 200 
Line 226 
     echo '### CHECKING SETS ###'      echo '### CHECKING SETS ###'
     cd $RELEASEDIR      cd $RELEASEDIR
   
       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 _b in `echo /bsd* bsd bsd.mp bsd.rd | sort -u`; do
Line 210 
Line 237 
         fi          fi
         if [ -e /${_b} -a ! -e ./${_n} ]; then          if [ -e /${_b} -a ! -e ./${_n} ]; then
             echo ${_n} does not exist              echo ${_n} does not exist
               _missing_sets=1
         fi          fi
     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 ${_s}${_v}.tgz does not exist          if [ ${_s} == sendmail-smtp_auth ]; then
               _file=${_s}.gz
         fi          fi
           if [ ! -e ./${_file} ]; then
               echo ${_file} does not exist
               _missing_sets=1
           fi
     done      done
   
     check_md5      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_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
Line 253 
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 276 
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 301 
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 319 
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 339 
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 376 
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 386 
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 410 
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 434 
Line 514 
 fi  fi
   
 if [ X"" != X"${FTP}" ]; then  if [ X"" != X"${FTP}" ]; then
     get_sets || exit      get_sets
 fi  fi
   
 check_sets || exit  check_sets || exit
Line 445 
Line 525 
     $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 456 
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
   
   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.17  
changed lines
  Added in v.1.35

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