=================================================================== RCS file: /cvs/openbsd/update_openbsd/update_openbsd,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- openbsd/update_openbsd/update_openbsd 2008/10/31 02:36:33 1.9 +++ openbsd/update_openbsd/update_openbsd 2008/11/05 17:07:58 1.10 @@ -1,5 +1,5 @@ #!/bin/sh -# $RedRiver: update_openbsd,v 1.8 2008/10/13 18:31:49 andrew Exp $ +# $RedRiver: update_openbsd,v 1.9 2008/10/31 01:36:33 andrew Exp $ if [ -e /etc/update_openbsd.conf ]; then . /etc/update_openbsd.conf @@ -15,9 +15,7 @@ DESTDIR=${DESTDIR:=/} SYSMERGE=${SYSMERGE:=/usr/sbin/sysmerge} -if [ ! -e $SYSMERGE ]; then - SYSMERGE= -fi +FORCE_DIR=${FORCE_DIR:=No} installed_sets() { local misc=/usr/share/doc/README @@ -44,7 +42,19 @@ } INSTALLED_SETS=${INSTALLED_SETS:=`installed_sets`} +sets_exist () { + local _proto=${FTP%%://*} + if [ X"ftp" == X"${_proto}" ]; then + echo "ls base*.tgz" | ${FTP_CMD} ${FTP}/ | awk '{ print $9 }' + elif [ X"http" == X"${_proto}" ]; then + ${FTP_CMD} -V -o - ${FTP}/ | grep '"base[0-9][0-9].tgz' | sed -e 's/.*\(base..\.tgz\).*/\1/' + else + echo Unsupported FTP ${FTP} >&2 + exit 2 + fi +} + set_version() { CUR_VER=`uname -r` NEW_VER=`dc -e "$CUR_VER 0.1 + p"` @@ -55,7 +65,7 @@ local _nv=`echo $NEW_VER | sed -e 's/\.//'` 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 if [ -e ${_dir}/base${_nv}.tgz ]; then _v=$_nv @@ -80,36 +90,48 @@ fi if [ X"" == X"${_v}" ]; then - if [ X"" == X"${FORCE_DIR}" ]; then + if [ X"No" == X"${FORCE_DIR}" ]; then _dir=${NEW_VER} else _dir=${FORCE_DIR} fi FTP=${MIRROR}/${_dir}/`machine` - local _proto=${FTP%%://*} - if [ X"ftp" == X"${_proto}" ]; then - _file=`echo "ls base*.tgz" | ${FTP_CMD} ${FTP}/ | awk '{ print $9 }'` - elif [ X"http" == X"${_proto}" ]; then - _file=`${FTP_CMD} -V -o - ${FTP}/ | grep '"base[0-9][0-9].tgz' | sed -e 's/.*\(base..\.tgz\).*/\1/'` - else - echo Unsupported FTP ${FTP} >&2 - exit 2 + _file=`sets_exist` + + if [ X"" == X"${_file}" ]; then + if [ X"No" != X"$FORCE_DIR" ]; then + echo No sets in forced [${FTP}] >&2 + exit 2 + fi + + NEW_VER=$CUR_VER + _dir=${NEW_VER} + FTP=${MIRROR}/${_dir}/`machine` + + _file=`sets_exist` + if [ X"" == X"${_file}" ]; then + echo No sets in [${FTP}] >&2 + exit 2 + fi fi - _v=${_file##base} - _v=${_v%%.tgz} + _v=${_file##*base} + _v=${_v%.tgz*} - if [ X"${_cv}" == X"${_v}" ]; then + if [ X"" == X"${_v}" ]; then + echo No version in file [$_file] >&2 + exit 2 + elif [ X"${_cv}" == X"${_v}" ]; then NEW_VER=$CUR_VER elif [ X"${_nv}" == X"${_v}" ]; then NEW_VER=$NEW_VER else - echo Invalid version $_v >&2 + echo Invalid version [$_v] >&2 exit 2 fi - if [ X"" == X"$FORCE_DIR" ]; then + if [ X"No" == X"$FORCE_DIR" ]; then _dir=$NEW_VER fi @@ -287,6 +309,10 @@ update_etc() { echo '### UPDATING ETC ###' + if [ ! -e $SYSMERGE ]; then + SYSMERGE= + fi + if [ X"" == X"$SYSMERGE" ]; then if [ -e /var/tmp/temproot ]; then MERGEMASTER=`which mergemaster`