=================================================================== RCS file: /cvs/openbsd/update_openbsd/update_openbsd,v retrieving revision 1.22 retrieving revision 1.33 diff -u -r1.22 -r1.33 --- openbsd/update_openbsd/update_openbsd 2009/05/13 17:40:50 1.22 +++ openbsd/update_openbsd/update_openbsd 2009/12/31 16:48:19 1.33 @@ -1,5 +1,5 @@ #!/bin/sh -# $RedRiver: update_openbsd,v 1.21 2009/05/13 04:26:32 andrew Exp $ +# $RedRiver: update_openbsd,v 1.32 2009/12/10 19:34:39 andrew Exp $ installed_sets() { local misc=/usr/share/doc/README @@ -24,7 +24,7 @@ fi done - sendmail -d0.1 root < /dev/null | grep -q SASL + sendmail -d0.1 -bt < /dev/null | grep -q SASL if [ $? == 0 ]; then echo -n ' sendmail-smtp_auth' fi @@ -191,6 +191,18 @@ 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 +} + check_sum () { local _type=$1 echo "### CHECKING $_type SUMS ###" @@ -253,7 +265,7 @@ } -install_kernel() { +install_kernels() { echo '### INSTALLING KERNEL ###' if [ X"$USER" != X"root" -a X"$SUDO" == X"" ]; then echo ${0##*/} must be run as root or SUDO must be set! >&2 @@ -291,9 +303,12 @@ exit 1 fi + local _true_bsd=`follow_symlink /bsd` + _true_bsd=${_true_bsd#/} + local _installed_new_bsd + for _b in bsd*; do $SUDO rm -f /nbsd - if [ X"${_b}" == X"bsd" ]; then echo Copying bsd to /bsd.sp $SUDO cp bsd /nbsd && $SUDO mv /nbsd /bsd.sp @@ -301,14 +316,20 @@ echo ERROR: Could not copy new SP kernel! >&2 exit 1 fi + if [ X"${_true_bsd}" == X"bsd.sp" ]; then + _installed_new_bsd=1 + fi else - if [ -e /$_b ]; then + if [ -e "/${_b}" ]; then echo Copying $_b to / $SUDO cp ${_b} /nbsd && $SUDO mv /nbsd /${_b} if [ $? -ne 0 ]; then echo ERROR: Could not copy new $_b kernel! >&2 exit 1 fi + if [ X"${_true_bsd}" == X"${_b}" ]; then + _installed_new_bsd=1 + fi fi fi done @@ -326,6 +347,10 @@ exit 1 fi fi + + if [ -z $_installed_new_bsd ]; then + echo WARNING: Did not replace $_true_bsd kernel >&2 + fi } install_sets() { @@ -425,6 +450,7 @@ fi local _v=$FILE_VER + local _args="" if [ -e etc${_v}.tgz ]; then _args="$_args -s etc${_v}.tgz" fi @@ -435,7 +461,9 @@ echo ERROR: No upgrade sets found! >&2 else echo '### RUNNING SYSMERGE ###' - _args="-a $_args" + if sysmerge 2>&1 | grep -- -a >/dev/null; then + _args="-a $_args" + fi $SUDO $SYSMERGE $_args fi fi @@ -497,7 +525,7 @@ $SUDO -v fi -install_kernel +install_kernels install_sets if [ $CUR_VER == $NEW_VER ]; then @@ -512,10 +540,24 @@ else 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 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