=================================================================== RCS file: /cvs/openbsd/fw_update/fw_install.sh,v retrieving revision 1.19 retrieving revision 1.21 diff -u -r1.19 -r1.21 --- openbsd/fw_update/fw_install.sh 2021/10/21 02:02:52 1.19 +++ openbsd/fw_update/fw_install.sh 2021/10/21 02:25:32 1.21 @@ -63,6 +63,7 @@ do_as _file "$@" } +# "fail" needs to be replaced with the "ask_yn" loop like in the installer. _issue= fail() { echo $_issue >&2 @@ -90,14 +91,15 @@ FWURL=http://firmware.openbsd.org/firmware/${HTTP_FWDIR} FWPUB_KEY=${DESTDIR}/etc/signify/openbsd-${VERSION}-fw.pub PKGDIR=${DESTDIR}/var/db/pkg -PATTERNS="file:${0%/*}/firmware_patterns" +FWPATTERNS="file:${0%/*}/firmware_patterns" +# TODO: support srclocal installation of firmware somehow fw_update() { - local _tmpsrc _f _r _remove _i _installed - local _src=$FWURL _t=Get _cfile="/tmp/SHA256" _srclocal=false + local _src=$FWURL _tmpsrc _t=Get _cfile="/tmp/SHA256" _srclocal=false + local _f _r _remove _i _installed local _d _drivers=$( last='' - ftp -D "Detecting" -Vmo- $PATTERNS | + ftp -D "Detecting" -Vmo- $FWPATTERNS | while read _d _m; do grep=grep [ "$last" = "$_d" ] && continue @@ -128,7 +130,7 @@ # Cleanup from previous runs. rm -f $_cfile $_cfile.sig - _t=Get/Verify + _t=Get/Verify ! $_unpriv ftp -D "$_t" -Vmo - "$_src/SHA256.sig" >"$_cfile.sig" && _issue="Cannot fetch SHA256.sig" && fail @@ -145,7 +147,7 @@ [ -e "$fw" ] || continue echo ${fw##*/} done - ) + ) for _i in $_installed; do if [ "$_f" = "$_i.tgz" ]; then @@ -198,6 +200,8 @@ esac done < "${PKGDIR}/$_installed/+CONTENTS" + # We specifically rm -f here because not removing files/dirs + # is probably not worth failing over. for _r in "${_remove[@]}" ; do if [ -d "$_r" ]; then # Try hard not to actually remove recursively @@ -209,8 +213,7 @@ done fi - # TODO: Add some details about the install to +CONTENTS like pkg_add - # TODO: Or, maybe we save the firmware someplace and make pkg_add reinstall + # TODO: Should we mark these so real fw_update can -Drepair? echo "Installing $_f" tar -zxphf "$_tmpsrc/$_f" -C "${DESTDIR}/etc" "firmware/*" mkdir -p ${PKGDIR}/${_f%.tgz}/