[BACK]Return to fw_install.sh CVS log [TXT][DIR] Up to [local] / openbsd / fw_update

Diff for /openbsd/fw_update/fw_install.sh between version 1.36 and 1.42

version 1.36, 2021/11/27 06:38:06 version 1.42, 2021/12/01 03:11:43
Line 2 
Line 2 
 #       $OpenBSD$  #       $OpenBSD$
 set -e  set -e
   
   # Copyright (c) 2021 Andrew Hewus Fresh <afresh1@openbsd.org>
   #
   # Permission to use, copy, modify, and distribute this software for any
   # purpose with or without fee is hereby granted, provided that the above
   # copyright notice and this permission notice appear in all copies.
   #
   # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   
 # Fake up some things from install.sub that we don't need to actually do  # Fake up some things from install.sub that we don't need to actually do
 prefetcharea_fs_list() {  prefetcharea_fs_list() {
         echo "${DESTDIR}/tmp"          echo "${DESTDIR}/tmp"
Line 43 
Line 57 
                 chown "$_user" "$_file"                  chown "$_user" "$_file"
         fi          fi
   
         doas -u "$_user" "$@"          if [[ -x /usr/bin/su ]]; then
                   /usr/bin/su -s /bin/ksh "$_user" -c "$*"
           else
                   doas -u "$_user" "$@"
           fi
         _rc=$?          _rc=$?
   
         while doas -u "$_user" kill -9 -1 2>/dev/null; do          while doas -u "$_user" kill -9 -1 2>/dev/null; do
Line 67 
Line 85 
 VNAME=${VNAME:-$(sysctl -n kern.osrelease)}  VNAME=${VNAME:-$(sysctl -n kern.osrelease)}
 VERSION=${VERSION:-"${VNAME%.*}${VNAME#*.}"}  VERSION=${VERSION:-"${VNAME%.*}${VNAME#*.}"}
 FWDIR=${FWDIR:-$VNAME}  FWDIR=${FWDIR:-$VNAME}
 MODE=${MODE:-install}  
   
 # TODO: We need the firmware for the system we just installed  # TODO: We need the firmware for the system we just installed
 #       not the one we booted from.  For example:  #       not the one we booted from.  For example:
Line 85 
Line 102 
   
 FWURL=http://firmware.openbsd.org/firmware/${HTTP_FWDIR}  FWURL=http://firmware.openbsd.org/firmware/${HTTP_FWDIR}
 FWPUB_KEY=${DESTDIR}/etc/signify/openbsd-${VERSION}-fw.pub  FWPUB_KEY=${DESTDIR}/etc/signify/openbsd-${VERSION}-fw.pub
 FWPATTERNS="file:${0%/*}/firmware_patterns"  FWPATTERNS="${DESTDIR}/usr/share/misc/firmware_patterns"
   
 # TODO: support srclocal installation of firmware somehow  # TODO: support srclocal installation of firmware somehow
 fw_install() {  fw_install() {
Line 94 
Line 111 
                 _f _r _remove _i _installed                  _f _r _remove _i _installed
         local _srclocal=false _unpriv=unpriv          local _srclocal=false _unpriv=unpriv
   
         echo "Let's $MODE firmware!"  
         local _d _drivers=$(          local _d _drivers=$(
                 last=''                  last=''
                 $_unpriv ftp -D "Detecting" -Vmo- $FWPATTERNS |  
                 while read _d _m; do                  while read _d _m; do
                         grep=grep                          grep=grep
                         [ "$last" = "$_d" ] && continue                          [ "$last" = "$_d" ] && continue
Line 106 
Line 121 
                         $grep -q "$_m" /var/run/dmesg.boot || continue                          $grep -q "$_m" /var/run/dmesg.boot || continue
                         echo $_d                          echo $_d
                         last=$_d                          last=$_d
                 done                  done < $FWPATTERNS
         )          )
   
         if [ -z "$_drivers" ]; then          if [ -z "$_drivers" ]; then
Line 154 
Line 169 
             echo "Signature check of SHA256.sig failed" >&2 && return 1              echo "Signature check of SHA256.sig failed" >&2 && return 1
   
         for _d in $_drivers; do          for _d in $_drivers; do
                 _f=$( sed -n "s/.*(\($_d-firmware-.*\.tgz\)).*/\1/p" "$_cfile" )                  _f=$( sed -n "s/.*(\($_d-firmware-.*\.tgz\)).*/\1/p" "$_cfile" | sed '$!d' )
                 _installed=$(                  _installed=$(
                 for fw in "${_pkgdir}/$_d-firmware"*; do                  for fw in "${_pkgdir}/$_d-firmware"*; do
                         [ -e "$fw" ] || continue                          [ -e "$fw" ] || continue

Legend:
Removed from v.1.36  
changed lines
  Added in v.1.42

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>