[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.7 and 1.18

version 1.7, 2008/10/11 23:19:52 version 1.18, 2009/01/14 18:13:23
Line 1 
Line 1 
 #!/bin/sh  #!/bin/sh
 # $RedRiver: update_openbsd,v 1.6 2008/10/11 22:14:25 andrew Exp $  # $RedRiver: update_openbsd,v 1.17 2009/01/14 17:58:40 andrew Exp $
   
 if [ -e /etc/update_openbsd.conf ]; then  
     . /etc/update_openbsd.conf  
 fi  
   
 if [ -e ${HOME}/.update_openbsdrc ]; then  
     . ${HOME}/.update_openbsdrc  
 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}  
 if [ ! -e $SYSMERGE ]; then  
     SYSMERGE=  
 fi  
   
 installed_sets() {  installed_sets() {
     local misc=/usr/share/doc/README      local misc=/usr/share/doc/README
     local man=/usr/share/man/cat1/intro.0      local man=/usr/share/man/cat1/intro.0
Line 42 
Line 24 
         fi          fi
     done      done
 }  }
 INSTALLED_SETS=${INSTALLED_SETS:=`installed_sets`}  
   
   version_in() {
           local _proto=${FTP%%://*}
           local _file
   
           if [ X"ftp" == X"${_proto}" ]; then
               local _list=`echo "ls base*.tgz" | ${FTP_CMD} ${FTP}/`
               _file=`echo ${_list} | awk '/base[0-9][0-9].tgz/ { print $9 }'`
   
           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
   
           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"`
Line 53 
Line 64 
   
     local _cv=`echo $CUR_VER | sed -e 's/\.//'`      local _cv=`echo $CUR_VER | sed -e 's/\.//'`
     local _nv=`echo $NEW_VER | sed -e 's/\.//'`      local _nv=`echo $NEW_VER | sed -e 's/\.//'`
     local _v=""      local _v
   
     if [ X"" != X"$FORCE_DIR" -a -d $FORCE_DIR ]; then      if [ X"No" != X"$FORCE_DIR" -a -d $FORCE_DIR ]; then
         _dir=$FORCE_DIR          _dir=$FORCE_DIR
         if [ -e ${_dir}/base${_nv}.tgz ]; then          if [ -e ${_dir}/base${_nv}.tgz ]; then
             _v=$_nv              _v=$_nv
Line 79 
Line 90 
   
     fi      fi
   
     if [ X"" == X"${_v}" ]; then      if [ X"" != X"${MIRROR}" -a X"" == X"${_v}" ]; then
         if [ X"" == X"${FORCE_DIR}" ]; then          if [ X"No" == X"${FORCE_DIR}" ]; then
             _dir=${NEW_VER}              _dir=${NEW_VER}
         else          else
             _dir=${FORCE_DIR}              _dir=${FORCE_DIR}
         fi          fi
         FTP=${MIRROR}/${_dir}/`machine`          FTP=${MIRROR}/${_dir}/`machine`
   
         local _file=`echo "ls base${_cv}.tgz" | ${FTP_CMD} ${FTP}/ | awk '{ print $9 }'`          _v=`version_in`
   
         if [ X"base${_cv}.tgz" == X"${_file}" ]; then          if [ X"" == X"${_v}" ]; then
               if [ X"No" != X"$FORCE_DIR" ]; then
                   echo No sets in forced [${FTP}] >&2
                   return 2
               fi
   
             NEW_VER=$CUR_VER              NEW_VER=$CUR_VER
             _v=$_cv              _dir=${NEW_VER}
               FTP=${MIRROR}/${_dir}/`machine`
   
               _v=`version_in`
           fi
   
           if [ X"" == X"${_v}" ]; then
               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
             _v=$_nv              echo Invalid version [$_v] >&2
               return 2
         fi          fi
   
         if [ X"" == X"$FORCE_DIR" ]; then          if [ X"No" == X"$FORCE_DIR" ]; then
             _dir=$NEW_VER              _dir=$NEW_VER
         fi          fi
   
Line 104 
Line 133 
   
     if [ X"" == X"${_v}" ]; then      if [ X"" == X"${_v}" ]; then
         echo ERROR: Unable to determine file version! >&2          echo ERROR: Unable to determine file version! >&2
         exit 1          return 1
     fi      fi
   
     if [ X"" == X"$RELEASEDIR" ]; then      if [ X"" == X"$RELEASEDIR" ]; then
         RELEASEDIR=`pwd`/$_dir          RELEASEDIR=`pwd`/$_dir
     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() {
     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
         exit 1          return 1
     fi      fi
   
     mkdir -p ${RELEASEDIR}      mkdir -p ${RELEASEDIR}
Line 144 
Line 176 
         echo $FTP_CMD ${FTP}/MD5          echo $FTP_CMD ${FTP}/MD5
         $FTP_CMD ${FTP}/MD5          $FTP_CMD ${FTP}/MD5
     fi      fi
   }
   
     ls bsd* *.tgz > index  check_md5() {
       echo '### CHECKING MD5 ###'
       cd $RELEASEDIR
   
       if [ ! -e MD5 ]; then
           echo MD5 File does not exist!
           return 1
       fi
   
       ls bsd* *.tgz | sed -e 's/\(.*\)/(\1)/' > index
     grep -f index MD5 | md5 -c      grep -f index MD5 | md5 -c
   
     if [ $? -ne 0 ]; then      if [ $? -ne 0 ]; then
         echo ERROR: MD5 does not match! >&2          echo ERROR: MD5 does not match! >&2
         exit 1          return 1
     fi      fi
 }  }
   
   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
           if [ ! -e ./${_s}${_v}.tgz ]; then
               echo ${_s}${_v}.tgz does not exist
               _missing_sets=1
           fi
       done
   
       if [ X"" == X"${_missing_sets}" ]; then
           echo All OK
       fi
   
       check_md5
   }
   
   
 install_kernel() {  install_kernel() {
     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
Line 185 
Line 261 
   
     local _v=$FILE_VER      local _v=$FILE_VER
     if [ -e base${_v}.tgz ]; then      if [ -e base${_v}.tgz ]; then
         echo Extracting new firmware from base${_v}.tgz          echo Extracting new firmware and ifconfig from base${_v}.tgz
         $SUDO tar -C $DESTDIR -xzphf base${_v}.tgz "*etc/firmware/*"          $SUDO tar -C $DESTDIR -xzphf base${_v}.tgz \
                   ./etc/firmware ./sbin/ifconfig
     fi      fi
   
     $SUDO rm -f /obsd      $SUDO rm -f /obsd
Line 273 
Line 350 
   
 update_etc() {  update_etc() {
     echo '### UPDATING ETC ###'      echo '### UPDATING ETC ###'
       if [ ! -e $SYSMERGE ]; then
           SYSMERGE=
       fi
   
     if [ X"" == X"$SYSMERGE" ]; then      if [ X"" == X"$SYSMERGE" ]; then
         if [ -e /var/tmp/temproot ]; then          if [ -e /var/tmp/temproot ]; then
             MERGEMASTER=`which mergemaster`              MERGEMASTER=`which mergemaster`
Line 318 
Line 399 
     fi      fi
 }  }
   
   if [ -e /etc/update_openbsd.conf ]; then
       . /etc/update_openbsd.conf
   fi
   
   if [ -e ${HOME}/.update_openbsdrc ]; then
       . ${HOME}/.update_openbsdrc
   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`}
   
 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 "RELEASEDIR: $RELEASEDIR"  echo "          SUDO: $SUDO"
 echo "   DESTDIR: $DESTDIR"  echo "      SYSMERGE: $SYSMERGE"
 echo "   CUR_VER: $CUR_VER"  echo "        MIRROR: $MIRROR"
 echo "   NEW_VER: $NEW_VER"  echo "    RELEASEDIR: $RELEASEDIR"
 #echo "  FILE_VER: $FILE_VER"  echo "       DESTDIR: $DESTDIR"
 echo "      SUDO: $SUDO"  echo "INSTALLED_SETS: $INSTALLED_SETS"
 echo "  SYSMERGE: $SYSMERGE"  
 echo "    MIRROR: $MIRROR"  
 echo "      SETS: $INSTALLED_SETS"  
 echo  echo
   echo "       CUR_VER: $CUR_VER"
   echo "       NEW_VER: $NEW_VER"
   #echo "      FILE_VER: $FILE_VER"
   echo
   
 get_sets  if [ ${_error} -ne 0 ]; then
           exit ${_error}
   fi
   
   if [ X"" != X"${FTP}" ]; then
       get_sets || exit
   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.

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.18

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