=================================================================== RCS file: /cvs/openbsd/update_openbsd/update_openbsd,v retrieving revision 1.86 retrieving revision 1.96 diff -u -r1.86 -r1.96 --- openbsd/update_openbsd/update_openbsd 2017/03/01 03:22:51 1.86 +++ openbsd/update_openbsd/update_openbsd 2017/12/10 21:20:53 1.96 @@ -1,6 +1,6 @@ #!/bin/sh -# $AFresh1: update_openbsd,v 1.85 2017/03/01 03:22:01 andrew Exp $ -# +# $AFresh1: update_openbsd,v 1.95 2017/12/10 21:19:11 andrew Exp $ +# # Copyright (c) 2012 Andrew Fresh # # Permission to use, copy, modify, and distribute this software for any @@ -42,7 +42,7 @@ done sendmail -d0.1 --badoption /dev/null | grep -q SASL - if [ $? == 0 ]; then + if [ $? == 0 ]; then echo -n ' sendmail-smtp_auth' fi } @@ -60,19 +60,15 @@ 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"http" == X"${_proto}" -o X"https" == X"${_proto}" ]; then + _file=`${FTP_CMD} -V -o - ${FTP}/index.txt | + sed -ne 's/.*\(base[0-9][0-9].tgz\).*/\1/p'` elif [ X"scp" == X"${_proto}" ]; then echo SCP is not yet supported >&2 return 2 - else + else echo Unsupported FTP ${FTP} >&2 return 2 @@ -118,10 +114,13 @@ fi if [ X"" != X"${MIRROR}" -a X"" == X"${_v}" ]; then - if [ X"No" == X"${FORCE_DIR}" ]; then - _dir=${NEW_VER} - else + if [ X"No" != X"${FORCE_DIR}" ]; then _dir=${FORCE_DIR} + elif sysctl kern.version | grep -q -- '-current '; then + _dir=snapshots + FORCE_DIR=snapshots + else + _dir=${NEW_VER} fi FTP=${MIRROR}/${_dir}/`machine` @@ -142,7 +141,7 @@ if [ X"" == X"${_v}" ]; then echo No sets in [${FTP}] >&2 - return 2 + return 2 elif [ X"${_cv}" == X"${_v}" ]; then NEW_VER=$CUR_VER elif [ X"${_nv}" == X"${_v}" ]; then @@ -275,15 +274,15 @@ local _nv=`echo $NEW_VER | sed -e 's/\.//'` local _signify=`which signify 2>/dev/null` - local _keyfile=/etc/signify/openbsd-${_nv}-base.pub + local _keyfile=/etc/signify/openbsd-${_nv}-base.pub local _b _s ( for _b in $INSTALL_KERNELS; do echo "($_b)" ; done for _s in $INSTALLED_SETS; do echo "($_s$_nv.tgz)"; done ) > index - + if [ -n "$_signify" -a "$_type" != "${_type%.sig}" ]; then echo "===> Checking signature"; if [ ! -e $_keyfile ]; then @@ -381,7 +380,7 @@ local _is_boot="" [ X"$BOOT_KERNEL" == X"/${_bd}" ] && _is_boot="# boot kernel" - + echo "Copying $_b to /$_bd $_is_boot" cp ${_b} /nbsd && mv /nbsd /${_bd} if [ $? -ne 0 ]; then @@ -485,7 +484,7 @@ if [ -e xetc${_v}.tgz ]; then _args="$_args -x ${RELEASEDIR}/xetc${_v}.tgz" fi - if [ X"" == X"$_args" ]; then + if [ X"" == X"$_args" ]; then echo ERROR: No upgrade sets found! >&2 exit 1 fi @@ -511,9 +510,8 @@ . ${HOME}/.update_openbsdrc fi -#MIRROR=${MIRROR:=ftp://ftp.openbsd.org/pub/OpenBSD} +MIRROR=${MIRROR:=http://fastly.cdn.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} @@ -523,6 +521,13 @@ set_version +TRUSTED_PKG_PATH=${TRUSTED_PKG_PATH:=/usr/ports/packages/`machine -a`/all} +if [ "$FORCE_DIR" = "No" ]; then + PKG_PATH=${PKG_PATH:=${MIRROR}/$NEW_VER/packages/`machine -a`} +else + PKG_PATH=${PKG_PATH:=${MIRROR}/$FORCE_DIR/packages/`machine -a`} +fi + INSTALLED_SETS=${INSTALLED_SETS:=`installed_sets`} CHECKSUM_TYPES=${CHECKSUM_TYPES:=SHA256.sig SHA256} @@ -534,7 +539,7 @@ echo "------------------------------------------------------" echo echo " SYSMERGE: $SYSMERGE" -echo " MIRROR: $MIRROR" +echo " MIRROR: $FTP" echo " PKG_PATH: $PKG_PATH" echo "TRUSTED_PKG_PATH: $TRUSTED_PKG_PATH" echo " RELEASEDIR: $RELEASEDIR" @@ -584,7 +589,7 @@ echo >&2 echo "!!! You are upgrading the OpenBSD kernel. !!!" >&2 echo "!!! You will be given the opportunity to reboot !!!" >&2 - echo "!!! at the end of the proces but it is safer to !!!" >&2 + echo "!!! at the end of the proces but it is safer to !!!" >&2 echo "!!! have a separate root shell open. !!!" >&2 echo "!!! It is needed in order to run /sbin/oreboot. !!!" >&2 echo "!!! doas MAY NOT WORK after sets are extracted. !!!" >&2 @@ -632,7 +637,7 @@ echo "$SYSMERGE -b" >>/etc/rc.sysmerge && echo "==> RUNNING $SYSMERGE -b ON REBOOT" - echo Instructions for updating to the new version available from + echo Instructions for updating to the new version available from if [ X"snapshots" == X"$FORCE_DIR" ]; then echo " http://www.openbsd.org/faq/current.html" else