Annotation of openbsd/update_openbsd/update_openbsd, Revision 1.69
1.1 andrew 1: #!/bin/sh
1.69 ! andrew 2: # $AFresh1: update_openbsd,v 1.68 2014/10/18 22:42:35 andrew Exp $
1.41 andrew 3: #
4: # Copyright (c) 2012 Andrew Fresh <andrew@afresh1.com>
5: #
6: # Permission to use, copy, modify, and distribute this software for any
7: # purpose with or without fee is hereby granted, provided that the above
8: # copyright notice and this permission notice appear in all copies.
9: #
10: # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11: # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12: # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13: # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14: # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15: # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16: # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17: #
1.7 andrew 18:
1.2 andrew 19: installed_sets() {
1.5 andrew 20: local misc=/usr/share/doc/README
1.63 andrew 21: local man=/usr/share/man/man1/intro.1
1.5 andrew 22: local comp=/usr/bin/cc
23: local game=/usr/games/
24: local xbase=/usr/X11R6/
25: local xetc=/etc/X11/xinit/xinitrc
26: local xfont=/usr/X11R6/lib/X11/fonts
27: local xserv=/usr/X11R6/bin/X
28: local xshare=/usr/X11R6/bin/startx
29:
30: local _c _d _e
31: echo -n base
32: echo -n ' etc'
1.3 andrew 33: for _d in misc man comp game xbase xetc xfont xserv xshare; do
34: eval _e=\$${_d}
35: _c=`ls $_e 2> /dev/null | wc -l`
36: #echo $_c $_d $_e
37: if [ $_c -ne 0 ]; then
1.5 andrew 38: echo -n " $_d"
1.2 andrew 39: fi
40: done
1.19 andrew 41:
1.34 andrew 42: sendmail -d0.1 --badoption </dev/null 2>/dev/null | grep -q SASL
1.19 andrew 43: if [ $? == 0 ]; then
44: echo -n ' sendmail-smtp_auth'
45: fi
1.2 andrew 46: }
1.7 andrew 47:
1.39 andrew 48: kernel_file_version() {
49: echo exit | config -e $1 | grep -A1 ^OpenBSD
50: #what $1 | sed -ne 's/[[:blank:]]\{1,\}//p'
51: }
52:
1.16 andrew 53: version_in() {
1.10 andrew 54: local _proto=${FTP%%://*}
1.16 andrew 55: local _file
1.10 andrew 56:
57: if [ X"ftp" == X"${_proto}" ]; then
1.16 andrew 58: local _list=`echo "ls base*.tgz" | ${FTP_CMD} ${FTP}/`
59: _file=`echo ${_list} | awk '/base[0-9][0-9].tgz/ { print $9 }'`
1.15 andrew 60:
1.10 andrew 61: elif [ X"http" == X"${_proto}" ]; then
1.16 andrew 62: local _list=`${FTP_CMD} -V -o - ${FTP}/`
63: _file=`echo ${_list} | awk '/[^x]base[0-9][0-9]*\.tgz/ {
1.15 andrew 64: sub("^.*base","base");
65: sub("\.tgz.*",".tgz");
66: print $0;
1.16 andrew 67: }'`
1.15 andrew 68:
69: elif [ X"scp" == X"${_proto}" ]; then
70: echo SCP is not yet supported >&2
71: return 2
72:
1.10 andrew 73: else
74: echo Unsupported FTP ${FTP} >&2
1.12 andrew 75: return 2
1.15 andrew 76:
1.10 andrew 77: fi
1.16 andrew 78:
79: local _v=${_file##*base}
80: _v=${_v%.tgz*}
81: echo $_v
1.10 andrew 82: }
1.2 andrew 83:
84: set_version() {
85: CUR_VER=`uname -r`
1.3 andrew 86: NEW_VER=`dc -e "$CUR_VER 0.1 + p"`
1.5 andrew 87: FILE_VER=""
88: FTP=""
1.2 andrew 89:
1.5 andrew 90: local _cv=`echo $CUR_VER | sed -e 's/\.//'`
91: local _nv=`echo $NEW_VER | sed -e 's/\.//'`
1.9 andrew 92: local _v
1.5 andrew 93:
1.10 andrew 94: if [ X"No" != X"$FORCE_DIR" -a -d $FORCE_DIR ]; then
1.5 andrew 95: _dir=$FORCE_DIR
96: if [ -e ${_dir}/base${_nv}.tgz ]; then
97: _v=$_nv
98: elif [ -e ${_dir}/base${_cv}.tgz ]; then
99: NEW_VER=$CUR_VER
100: _v=$_cv
101: fi
1.2 andrew 102:
1.5 andrew 103: elif [ -d $CUR_VER ]; then
104: _dir=$CUR_VER
1.2 andrew 105: NEW_VER=$CUR_VER
1.5 andrew 106: if [ -e ${_dir}/base${_cv}.tgz ]; then
107: _v=$_cv
108: fi
1.2 andrew 109:
1.5 andrew 110: elif [ -d $NEW_VER ]; then
111: _dir=$NEW_VER
112: if [ -e ${_dir}/base${_nv}.tgz ]; then
113: _v=$_nv
114: fi
1.2 andrew 115:
116: fi
117:
1.17 andrew 118: if [ X"" != X"${MIRROR}" -a X"" == X"${_v}" ]; then
1.10 andrew 119: if [ X"No" == X"${FORCE_DIR}" ]; then
1.5 andrew 120: _dir=${NEW_VER}
121: else
122: _dir=${FORCE_DIR}
123: fi
124: FTP=${MIRROR}/${_dir}/`machine`
1.2 andrew 125:
1.16 andrew 126: _v=`version_in`
1.10 andrew 127:
1.16 andrew 128: if [ X"" == X"${_v}" ]; then
1.10 andrew 129: if [ X"No" != X"$FORCE_DIR" ]; then
130: echo No sets in forced [${FTP}] >&2
1.12 andrew 131: return 2
1.10 andrew 132: fi
133:
134: NEW_VER=$CUR_VER
135: _dir=${NEW_VER}
136: FTP=${MIRROR}/${_dir}/`machine`
137:
1.16 andrew 138: _v=`version_in`
1.9 andrew 139: fi
140:
1.10 andrew 141: if [ X"" == X"${_v}" ]; then
1.16 andrew 142: echo No sets in [${FTP}] >&2
1.12 andrew 143: return 2
1.10 andrew 144: elif [ X"${_cv}" == X"${_v}" ]; then
1.5 andrew 145: NEW_VER=$CUR_VER
1.9 andrew 146: elif [ X"${_nv}" == X"${_v}" ]; then
147: NEW_VER=$NEW_VER
1.2 andrew 148: else
1.10 andrew 149: echo Invalid version [$_v] >&2
1.12 andrew 150: return 2
1.2 andrew 151: fi
152:
1.10 andrew 153: if [ X"No" == X"$FORCE_DIR" ]; then
1.5 andrew 154: _dir=$NEW_VER
1.2 andrew 155: fi
156:
157: fi
158:
1.5 andrew 159: if [ X"" == X"${_v}" ]; then
1.64 andrew 160: if [ X"" == X"${MIRROR}" ]; then
161: echo ERROR: No sets, and no MIRROR, unable to continue. >&2
162: else
163: echo ERROR: Unable to determine FILE_VER, check your MIRROR. >&2
164: fi
1.12 andrew 165: return 1
1.2 andrew 166: fi
167:
1.5 andrew 168: if [ X"" == X"$RELEASEDIR" ]; then
169: RELEASEDIR=`pwd`/$_dir
1.2 andrew 170: fi
1.9 andrew 171:
1.5 andrew 172: FILE_VER=$_v
1.17 andrew 173: if [ X"" != X"${MIRROR}" ]; then
174: FTP=${MIRROR}/${_dir}/`machine`
175: fi
1.39 andrew 176:
177: BOOT_KERNEL=`( \
178: echo bsd; \
179: [ -e /boot.conf ] && sed -E '/^ *(set +image|boot) +/!d ; \
180: s///; s/^.*://; s/ .*$//' /boot.conf \
181: ) | tail -1`
1.42 andrew 182: BOOT_KERNEL=`follow_symlink /$BOOT_KERNEL`
1.39 andrew 183: BOOT_KERNEL="/${BOOT_KERNEL#/}"
184:
185: BOOT_KERNEL_VERSION=`kernel_file_version $BOOT_KERNEL`
186:
187: BOOTED_KERNEL_VERSION=`sysctl -n kern.version`
188: NEW_KERNEL_VERSION=""
189:
190: # We want to default to what we had
191: INSTALL_KERNELS="${BOOT_KERNEL#/}"
1.48 andrew 192: # if the boot kernel was our specially named bsd.sp, we install from bsd
193: if [ X"$INSTALL_KERNELS" == X"bsd.sp" ]; then
194: INSTALL_KERNELS="bsd"
195: fi
1.39 andrew 196: # with a second option of an mp kernel if is is a likely candidate
197: if [ X"$INSTALL_KERNELS" != X"bsd.mp" ]; then
198: local _ncpu=$(sysctl -n hw.ncpufound)
199: [ $_ncpu -gt 1 ] && INSTALL_KERNELS="$INSTALL_KERNELS bsd.mp"
200: fi
201: # or just bsd otherwise
202: if [ X"${INSTALL_KERNELS% *}" != X"bsd" ]; then
203: INSTALL_KERNELS="$INSTALL_KERNELS bsd"
204: fi
205: BOOT_KERNELS=$INSTALL_KERNELS
206: INSTALL_KERNELS="$INSTALL_KERNELS bsd.rd"
1.2 andrew 207: }
208:
209: get_sets() {
1.54 andrew 210: echo '==> GETTING SETS'
1.2 andrew 211: if [ X"" == X"$FTP" ]; then
1.5 andrew 212: echo ERROR: No FTP site set! >&2
1.12 andrew 213: return 1
1.2 andrew 214: fi
215:
1.5 andrew 216: mkdir -p ${RELEASEDIR}
217: cd $RELEASEDIR
1.2 andrew 218:
1.5 andrew 219: local _v=$FILE_VER
1.2 andrew 220:
1.39 andrew 221: for _b in $INSTALL_KERNELS; do
1.45 andrew 222: if [ ! -e ./${_b} ]; then
1.54 andrew 223: echo "===> $FTP_CMD ${FTP}/${_b}"
1.3 andrew 224: $FTP_CMD ${FTP}/${_b}
1.2 andrew 225: fi
226: done
227:
1.5 andrew 228: for _s in $INSTALLED_SETS; do
1.19 andrew 229: local _file=${_s}${_v}.tgz
230: if [ ${_s} == sendmail-smtp_auth ]; then
231: _file=${_s}.gz
232: fi
233:
234: if [ ! -e ./${_file} ]; then
1.54 andrew 235: echo "===> $FTP_CMD ${FTP}/${_file}"
1.19 andrew 236: $FTP_CMD ${FTP}/${_file}
1.5 andrew 237: fi
1.2 andrew 238: done
239:
1.20 andrew 240: local _type
1.56 andrew 241: local _ftp
1.20 andrew 242: for _type in $CHECKSUM_TYPES; do
1.40 andrew 243: [ -e $_type ] && break
1.56 andrew 244: _ftp=`echo "$FTP" | sed -e 's,://[^/]*/,://ftp.openbsd.org/,'`
245: echo "===> $FTP_CMD ${_ftp}/$_type"
246: $FTP_CMD ${_ftp}/$_type
1.20 andrew 247: done
1.17 andrew 248: }
249:
1.23 andrew 250: follow_symlink () {
251: local _file=$1
1.33 andrew 252: # This could go circular, but I dunno how to fix that.
253: if [ -h $_file ]; then
254: follow_symlink $( file $_file |
255: grep 'symbolic link' |
256: sed -e s/^.*\\\`// -e s/\\\'\$// )
1.23 andrew 257: else
1.33 andrew 258: echo $_file
1.23 andrew 259: fi
260: }
261:
1.20 andrew 262: check_sum () {
263: local _type=$1
1.54 andrew 264: echo "==> CHECKING $_type SUMS"
1.17 andrew 265: cd $RELEASEDIR
266:
1.20 andrew 267: if [ ! -e $_type ]; then
268: echo $_type File does not exist!
1.17 andrew 269: return 1
270: fi
1.6 andrew 271:
1.57 andrew 272: local _nv=`echo $NEW_VER | sed -e 's/\.//'`
1.61 andrew 273: local _signify=`which signify 2>/dev/null`
1.67 andrew 274: local _keyfile=/etc/signify/openbsd-${_nv}-base.pub
1.59 andrew 275: local _b _s
1.57 andrew 276:
277: (
1.58 andrew 278: for _b in $INSTALL_KERNELS; do echo "($_b)" ; done
279: for _s in $INSTALLED_SETS; do echo "($_s$_nv.tgz)"; done
1.57 andrew 280: ) > index
1.59 andrew 281:
282:
283: if [ -n "$_signify" -a "$_type" != "${_type%.sig}" ]; then
284: echo "===> Checking signature";
285: if [ ! -e $_keyfile ]; then
286: echo "key [$_keyfile] does not exist, cannot check $_type" >&2
287: return 2
288: fi
1.67 andrew 289: signify -V -e -p $_keyfile -x $_type -m - | grep -f index | sha256 -c -
1.59 andrew 290: else
291: grep -f index $_type | sum -c
292: fi
1.2 andrew 293:
294: if [ $? -ne 0 ]; then
1.20 andrew 295: echo ERROR: $_type does not match! >&2
1.12 andrew 296: return 1
1.2 andrew 297: fi
298: }
299:
1.17 andrew 300: check_sets() {
1.54 andrew 301: echo '==> CHECKING SETS'
1.17 andrew 302: cd $RELEASEDIR
303:
1.18 andrew 304: local _missing_sets
1.17 andrew 305: local _v=$FILE_VER
306:
1.39 andrew 307: for _n in $INSTALL_KERNELS; do
308: local _o=$_n
309: [ X"bsd" == X"${_o}" -a -e /bsd.sp ] && _o=bsd.sp
310: if [ -e /${_o} -a ! -e ./${_n} ]; then
311: echo ${_o} does not exist
312: _missing_sets=1
1.17 andrew 313: fi
1.39 andrew 314:
315: if [ X"${BOOT_KERNEL}" == X"/${_o}" -a -e ./${_n} ]; then
316: NEW_KERNEL_VERSION=`kernel_file_version ./${_n}`
1.17 andrew 317: fi
318: done
319:
1.39 andrew 320: if [ X"$NEW_KERNEL_VERSION" == X"" ]; then
321: echo Missing replacement for boot kernel $BOOT_KERNEL >&2
322: _missing_sets=1
323: fi
324:
1.17 andrew 325: for _s in $INSTALLED_SETS; do
1.19 andrew 326: local _file=${_s}${_v}.tgz
327: if [ ${_s} == sendmail-smtp_auth ]; then
328: _file=${_s}.gz
329: fi
330: if [ ! -e ./${_file} ]; then
331: echo ${_file} does not exist
1.18 andrew 332: _missing_sets=1
1.17 andrew 333: fi
334: done
1.18 andrew 335:
336: if [ X"" == X"${_missing_sets}" ]; then
1.54 andrew 337: echo '===> All OK'
1.18 andrew 338: fi
1.17 andrew 339:
1.20 andrew 340: local _type
341: for _type in $CHECKSUM_TYPES; do
342: if [ -e $_type ]; then
1.59 andrew 343: check_sum $_type && break
1.62 andrew 344: [ -z "$IGNORE_CHECKSUM_ERROR" ] && exit 1
1.20 andrew 345: fi
346: done
1.59 andrew 347:
348: return 0
1.17 andrew 349: }
350:
351:
1.30 andrew 352: install_kernels() {
1.54 andrew 353: echo '==> INSTALLING KERNEL'
1.2 andrew 354:
355: if [ X"" == X"$RELEASEDIR" ]; then
1.5 andrew 356: echo ERROR: no source for new kernels! >&2
1.2 andrew 357: exit 1
358: fi
359:
1.46 andrew 360: if [ X"$BOOT_KERNEL_VERSION" != X"$NEW_KERNEL_VERSION" ]; then
1.54 andrew 361: echo "===> Backing up $BOOT_KERNEL to /obsd"
1.65 andrew 362: ln -f $BOOT_KERNEL /obsd
1.46 andrew 363: if [ $? -ne 0 ]; then
364: echo "Error copying old kernel!" >&2
365: exit 1
366: fi
1.2 andrew 367: fi
368:
1.39 andrew 369: cd $RELEASEDIR
1.23 andrew 370:
1.39 andrew 371: for _b in $INSTALL_KERNELS; do
1.65 andrew 372: rm -f /nbsd
1.39 andrew 373: local _bd=$_b
374: [ X"${_b}" == X"bsd" ] && _bd="bsd.sp"
1.2 andrew 375:
1.39 andrew 376: local _is_boot=""
377: [ X"$BOOT_KERNEL" == X"/${_bd}" ] && _is_boot="# boot kernel"
378:
1.54 andrew 379: echo "===> Copying $_b to /$_bd $_is_boot"
1.65 andrew 380: cp ${_b} /nbsd && mv /nbsd /${_bd}
1.2 andrew 381: if [ $? -ne 0 ]; then
1.39 andrew 382: echo ERROR: Could not copy new $_bd kernel! >&2
1.2 andrew 383: exit 1
384: fi
1.39 andrew 385: done
386:
387: cd $OLDPWD
1.23 andrew 388:
1.39 andrew 389: if [ ! -h /bsd ]; then
390: cd /
391: for _b in $BOOT_KERNELS; do
392: [ X"$_b" == X"bsd" ] && _b="bsd.sp"
393: if [ -e $_b ]; then
1.54 andrew 394: echo "===> symlinking $_b to /bsd"
1.65 andrew 395: ln -sf $_b bsd
1.39 andrew 396: if [ $? -ne 0 ]; then
397: echo ERROR: Could not symlink new kernel! >&2
398: exit 1
399: fi
400: break
401: fi
402: done
403: cd $OLDPWD
1.2 andrew 404: fi
405: }
406:
407: install_sets() {
1.54 andrew 408: echo '==> INSTALLING SETS'
1.2 andrew 409:
410: if [ X"" == X"$RELEASEDIR" ]; then
1.5 andrew 411: echo ERROR: no source for sets! >&2
1.2 andrew 412: exit 1
413: else
414: cd $RELEASEDIR
415: fi
416:
1.5 andrew 417: local _v=$FILE_VER
418:
1.21 andrew 419: local _sets=`ls *${_v}.tgz | grep -v ^base `
420: for _f in ${_sets} base${_v}.tgz; do
1.3 andrew 421: _path=$DESTDIR
422: if [ X"etc${_v}.tgz" == X"$_f" \
423: -o X"xetc${_v}.tgz" == X"$_f" ]; then
1.21 andrew 424: [ X"" != X"$SYSMERGE" ] && continue
1.2 andrew 425: _path=/var/tmp/temproot
426: fi
427:
1.54 andrew 428: echo "===> Extracting $_f to $_path"
1.65 andrew 429: mkdir -p $_path
430: tar -C $_path -xzphf ${RELEASEDIR}/${_f}
1.2 andrew 431: if [ $? -ne 0 ]; then
1.5 andrew 432: echo ERROR: Could not extract ${_f}! >&2
1.2 andrew 433: exit 1
434: fi
435: done
436:
1.54 andrew 437: echo '===> Extracted all sets.'
1.51 andrew 438: }
1.19 andrew 439:
1.51 andrew 440: install_sendmail_smtp_auth() {
1.19 andrew 441: if [ -e ${RELEASEDIR}/sendmail-smtp_auth.gz ]; then
442: gzcat ${RELEASEDIR}/sendmail-smtp_auth.gz > \
443: ${RELEASEDIR}/sendmail-smtp_auth
444: fi
445: if [ -e ${RELEASEDIR}/sendmail-smtp_auth ]; then
1.21 andrew 446: if ! pkg_info -qe 'cyrus-sasl-*'; then
1.65 andrew 447: pkg_add -i cyrus-sasl
1.21 andrew 448: fi
449:
1.65 andrew 450: install -o root -g smmsp -m 2555 \
1.19 andrew 451: ${RELEASEDIR}/sendmail-smtp_auth \
1.21 andrew 452: /usr/libexec/sendmail/sendmail
1.19 andrew 453:
1.54 andrew 454: echo '===> Installed sendmail with smtp_auth'
1.19 andrew 455: fi
1.2 andrew 456: }
457:
458: update_etc() {
1.54 andrew 459: echo '==> UPDATING ETC'
1.10 andrew 460: if [ ! -e $SYSMERGE ]; then
1.47 andrew 461: echo "ERROR: Can't find sysmerge!" >&2
462: exit 1;
1.10 andrew 463: fi
464:
1.68 andrew 465: local _v=$FILE_VER
466: local _args=""
467:
468: if [ ! -e /usr/share/sysmerge/etc.tgz ]; then
469: if [ X"" == X"$RELEASEDIR" ]; then
470: echo "ERROR: no source for etc!" >&2
471: exit 1
472: fi
1.2 andrew 473:
1.68 andrew 474: cd $RELEASEDIR
1.5 andrew 475:
1.68 andrew 476: if [ -e etc${_v}.tgz ]; then
477: _args="$_args -s ${RELEASEDIR}/etc${_v}.tgz"
478: fi
479: if [ -e xetc${_v}.tgz ]; then
480: _args="$_args -x ${RELEASEDIR}/xetc${_v}.tgz"
481: fi
482: if [ X"" == X"$_args" ]; then
483: echo ERROR: No upgrade sets found! >&2
484: exit 1
485: fi
1.47 andrew 486: fi
1.68 andrew 487:
488: echo '==> RUNNING SYSMERGE'
489: $SYSMERGE $_args
1.2 andrew 490:
1.47 andrew 491: cd $OLDPWD
1.2 andrew 492: }
1.14 andrew 493:
1.20 andrew 494:
1.65 andrew 495: if [ $(id -u) != 0 ]; then
496: echo 'ERROR: need root privileges to run this script' >&2
497: exit 1
498: fi
499:
1.14 andrew 500: if [ -e /etc/update_openbsd.conf ]; then
501: . /etc/update_openbsd.conf
502: fi
503:
504: if [ -e ${HOME}/.update_openbsdrc ]; then
505: . ${HOME}/.update_openbsdrc
506: fi
507:
1.17 andrew 508: #MIRROR=${MIRROR:=ftp://ftp.openbsd.org/pub/OpenBSD}
1.14 andrew 509: FTP_CMD=${FTP_CMD:=ftp -V}
510: PKG_PATH=${PKG_PATH:=/usr/ports/packages/`machine`/all/:${MIRROR}/`uname -r`/packages/`machine`/}
511:
512: DESTDIR=${DESTDIR:=/}
513: SYSMERGE=${SYSMERGE:=/usr/sbin/sysmerge}
514: FORCE_DIR=${FORCE_DIR:=No}
515:
516: INSTALLED_SETS=${INSTALLED_SETS:=`installed_sets`}
1.2 andrew 517:
1.59 andrew 518: CHECKSUM_TYPES=${CHECKSUM_TYPES:=SHA256.sig SHA256}
1.20 andrew 519:
1.2 andrew 520: set_version
1.12 andrew 521: local _error=$?
1.2 andrew 522:
523: echo
524: echo "-= update_openbsd - helper script to update OpenBSD =-"
525: echo "------------------------------------------------------"
526: echo
1.39 andrew 527: echo " SYSMERGE: $SYSMERGE"
528: echo " MIRROR: $MIRROR"
529: echo " RELEASEDIR: $RELEASEDIR"
530: echo " DESTDIR: $DESTDIR"
531: echo " BOOT_KERNEL: $BOOT_KERNEL"
532: echo "INSTALL_KERNELS: $INSTALL_KERNELS"
533: echo " INSTALLED_SETS: $INSTALLED_SETS"
1.8 andrew 534: echo
1.39 andrew 535: echo " CUR_VER: $CUR_VER"
536: echo " NEW_VER: $NEW_VER"
537: #echo " FILE_VER: $FILE_VER"
1.2 andrew 538: echo
1.12 andrew 539:
540: if [ ${_error} -ne 0 ]; then
541: exit ${_error}
542: fi
1.2 andrew 543:
1.17 andrew 544: if [ X"" != X"${FTP}" ]; then
1.20 andrew 545: get_sets
1.17 andrew 546: fi
547:
548: check_sets || exit
1.39 andrew 549:
1.54 andrew 550: echo "===> Last booted:\n$BOOTED_KERNEL_VERSION"
1.39 andrew 551: if [ X"$BOOT_KERNEL_VERSION" != X"$BOOTED_KERNEL_VERSION" \
552: -a X"$BOOT_KERNEL_VERSION" != X"$NEW_KERNEL_VERSION" ]; then
553: echo "Next boot (unless replaced):\n$BOOT_KERNEL_VERSION"
554: fi
555: if [ -n "$NEW_KERNEL_VERSION" ]; then
1.54 andrew 556: echo "===> New $BOOT_KERNEL:\n$NEW_KERNEL_VERSION";
1.39 andrew 557: else
558: echo "\n!!! WARNING: Will not replace boot kernel $BOOT_KERNEL! !!!\n" >&2
559: echo "ctrl+C to cancel, enter to continue anyway" >&2
1.44 andrew 560: local _temp
561: read _temp
1.53 andrew 562: NEW_KERNEL_VERSION=$BOOT_KERNEL_VERSION
1.44 andrew 563: fi
564:
1.66 andrew 565: if [ X"$NEW_KERNEL_VERSION" != X"$BOOTED_KERNEL_VERSION" ]; then
1.44 andrew 566: echo >&2
1.66 andrew 567: echo "!!! You are upgrading the OpenBSD kernel. !!!" >&2
568: echo "!!! You will be given the opportunity to reboot !!!" >&2
569: echo "!!! at the end of the proces but it is safer to !!!" >&2
570: echo "!!! have a separate root shell open. !!!" >&2
571: echo "!!! It is needed in order to run /sbin/oreboot. !!!" >&2
572: echo "!!! sudo MAY NOT WORK after sets are extracted. !!!" >&2
1.44 andrew 573: echo >&2
1.66 andrew 574: echo "enter to continue, ctrl+C to cancel" >&2
1.39 andrew 575: local _temp
576: read _temp
1.2 andrew 577:
1.66 andrew 578: if [ ! -e /sbin/oreboot ]; then
579: cp /sbin/reboot /sbin/oreboot
580: if [ $? -ne 0 ]; then
581: echo "Error copying old reboot command!" >&2
582: exit 1
583: fi
584: echo "/sbin/reboot copied to /sbin/oreboot"
1.50 andrew 585: fi
1.2 andrew 586: fi
587:
1.30 andrew 588: install_kernels
1.21 andrew 589: install_sets
1.2 andrew 590:
1.53 andrew 591: if [ X"$NEW_KERNEL_VERSION" == X"$BOOTED_KERNEL_VERSION" ]; then
1.51 andrew 592: install_sendmail_smtp_auth
593:
1.21 andrew 594: if [ -e /sbin/oreboot ]; then
595: echo Removing /sbin/oreboot
1.69 ! andrew 596: rm -f /sbin/oreboot
1.21 andrew 597: fi
1.2 andrew 598: update_etc
599:
1.54 andrew 600: echo '==> UPDATING PACKAGES'
1.65 andrew 601: pkg_add -ui -F update -F updatedepends
1.2 andrew 602:
603: else
604: echo Instructions for updating to the new version available from
1.36 andrew 605: if [ X"snapshots" == X"$FORCE_DIR" ]; then
1.30 andrew 606: echo " http://www.openbsd.org/faq/current.html"
607: else
608: echo " http://www.openbsd.org/faq/upgrade${FILE_VER}.html"
609: fi
1.2 andrew 610: fi
611:
1.66 andrew 612: echo Update complete. enter to reboot, ctrl+C to cancel
1.65 andrew 613: read _temp
1.22 andrew 614: if [ -e /sbin/oreboot ]; then
1.66 andrew 615: echo using /sbin/oreboot
1.65 andrew 616: /sbin/oreboot
617: else
618: /sbin/reboot
1.22 andrew 619: fi
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>