[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.139 and 1.146

version 1.139, 2022/01/05 23:34:11 version 1.146, 2022/01/07 04:22:29
Line 120 
Line 120 
                 echo "Cannot fetch $_src$_error" >&2                  echo "Cannot fetch $_src$_error" >&2
                 return 1                  return 1
         fi          fi
   
           return 0
 }  }
   
   fetch_cfile() {
           if "$DOWNLOAD"; then
                   set +o noclobber # we want to get the latest CFILE
                   fetch "$CFILE" || return 1
                   set -o noclobber
                   ! signify -qVep "$FWPUB_KEY" -x "$CFILE" -m "$CFILE" &&
                       echo "Signature check of SHA256.sig failed" >&2 && return 1
           elif [ ! -e "$CFILE" ]; then
                   echo "${0##*/}: $CFILE: No such file or directory" >&2
                   return 2
           fi
   
           return 0
   }
   
 verify() {  verify() {
           [ -e "$CFILE" ] || fetch_cfile || return 1
         # On the installer we don't get sha256 -C, so fake it.          # On the installer we don't get sha256 -C, so fake it.
         if ! fgrep -qx "SHA256 (${1##*/}) = $( /bin/sha256 -qb "$1" )" "$CFILE"; then          if ! fgrep -qx "SHA256 (${1##*/}) = $( /bin/sha256 -qb "$1" )" "$CFILE"; then
                 echo "Checksum test for ${1##*/} failed." >&2                  echo "Checksum test for ${1##*/} failed." >&2
                 return 1                  return 1
         fi          fi
   
           return 0
 }  }
   
 firmware_in_dmesg() {  firmware_in_dmesg() {
Line 152 
Line 172 
   
 firmware_filename() {  firmware_filename() {
         local _f          local _f
           [ -e "$CFILE" ] || fetch_cfile || return 1
         _f="$( sed -n "s/.*(\($1-firmware-.*\.tgz\)).*/\1/p" "$CFILE" | sed '$!d' )"          _f="$( sed -n "s/.*(\($1-firmware-.*\.tgz\)).*/\1/p" "$CFILE" | sed '$!d' )"
         ! [ "$_f" ] && echo "Unable to find firmware for $1" >&2 && return 1          ! [ "$_f" ] && echo "Unable to find firmware for $1" >&2 && return 1
         echo "$_f"          echo "$_f"
Line 239 
Line 260 
         local _cwd _pkg="$1" _pkgdir="${DESTDIR}/var/db/pkg"          local _cwd _pkg="$1" _pkgdir="${DESTDIR}/var/db/pkg"
   
         # TODO: Check hash for files before deleting          # TODO: Check hash for files before deleting
         [ "$VERBOSE" -gt 1 ] && echo -n "Uninstall $_pkg ..."          [ "$VERBOSE" -gt 2 ] && echo -n "Uninstall $_pkg ..."
         _cwd="${_pkgdir}/$_pkg"          _cwd="${_pkgdir}/$_pkg"
   
         if [ ! -e "$_cwd/+CONTENTS" ] ||          if [ ! -e "$_cwd/+CONTENTS" ] ||
Line 275 
Line 296 
                 fi                  fi
         done          done
   
         [ "$VERBOSE" -gt 1 ] && echo " done."          [ "$VERBOSE" -gt 2 ] && echo " done."
   
         return 0          return 0
 }  }
Line 286 
Line 307 
 }  }
   
 ALL=false  ALL=false
 OPT_D=  OPT_F=
 while getopts :adDnp:v name  while getopts :adFnp:v name
 do  do
        case "$name" in          case "$name" in
        a) ALL=true ;;          a) ALL=true ;;
        d) DELETE=true ;;          d) DELETE=true ;;
        D) OPT_D=true ;;          F) OPT_F=true ;;
        n) DRYRUN=true ;;          n) DRYRUN=true ;;
        p) LOCALSRC="$OPTARG" ;;          p) LOCALSRC="$OPTARG" ;;
        v) VERBOSE=$(( VERBOSE + 1 )) ;;          v) VERBOSE=$(( VERBOSE + 1 )) ;;
        :)          :)
            echo "${0##*/}: option requires an argument -- -$OPTARG" >&2              echo "${0##*/}: option requires an argument -- -$OPTARG" >&2
            usage 2              usage 2
            ;;              ;;
        ?)          ?)
            echo "${0##*/}: unknown option -- -$OPTARG" >&2              echo "${0##*/}: unknown option -- -$OPTARG" >&2
            usage 2              usage 2
            ;;              ;;
        esac          esac
 done  done
 shift $((OPTIND - 1))  shift $((OPTIND - 1))
   
Line 321 
Line 342 
 fi  fi
   
 # "Download only" means local dir and don't install  # "Download only" means local dir and don't install
 if [ "$OPT_D" ]; then  if [ "$OPT_F" ]; then
         INSTALL=false          INSTALL=false
         LOCALSRC="${LOCALSRC:-.}"          LOCALSRC="${LOCALSRC:-.}"
   
           # Always check for latest CFILE and so latest firmware
           if [ -e "$LOCALSRC/$CFILE" ]; then
                   mv "$LOCALSRC/$CFILE" "$LOCALSRC/$CFILE-OLD"
                   if fetch_cfile; then
                           rm -f "$LOCALSRC/$CFILE-OLD"
                   else
                           mv "$LOCALSRC/$CFILE-OLD" "$LOCALSRC/$CFILE"
                           echo "Using existing $CFILE" >&2
                   fi
           fi
 elif [ "$LOCALSRC" ]; then  elif [ "$LOCALSRC" ]; then
         DOWNLOAD=false          DOWNLOAD=false
 fi  fi
Line 336 
Line 368 
 set -sA devices -- "$@"  set -sA devices -- "$@"
   
 if "$DELETE"; then  if "$DELETE"; then
         [ "$OPT_D" ] && usage 22          [ "$OPT_F" ] && usage 22
   
         # Show the "Uninstalling" message when just deleting not upgrading          # Show the "Uninstalling" message when just deleting not upgrading
         [ "$VERBOSE" -eq 1 ] && VEROBOSE=2          [ "$VERBOSE" -gt 0 ] && VERBOSE=3
   
         set -A installed          set -A installed
         if [ "${devices[*]:-}" ]; then          if [ "${devices[*]:-}" ]; then
Line 383 
Line 415 
 fi  fi
   
 if [ ! "$LOCALSRC" ]; then  if [ ! "$LOCALSRC" ]; then
     LOCALSRC="$( tmpdir "${DESTDIR}/tmp/${0##*/}" )"          LOCALSRC="$( tmpdir "${DESTDIR}/tmp/${0##*/}" )"
     REMOVE_LOCALSRC=true          REMOVE_LOCALSRC=true
 fi  fi
   
 CFILE="$LOCALSRC/$CFILE"  CFILE="$LOCALSRC/$CFILE"
Line 400 
Line 432 
   
 [ "${devices[*]:-}" ] || exit  [ "${devices[*]:-}" ] || exit
   
 if "$DOWNLOAD"; then  
         set +o noclobber # we want to get the latest CFILE  
         fetch "$CFILE"  
         set -o noclobber  
         ! signify -qVep "$FWPUB_KEY" -x "$CFILE" -m "$CFILE" &&  
             echo "Signature check of SHA256.sig failed" >&2 && exit 1  
 elif [ ! -e "$CFILE" ]; then  
         # TODO: We shouldn't need a CFILE if all arguments are files.  
         echo "${0##*/}: $CFILE: No such file or directory" >&2  
         exit 2  
 fi  
   
 added=''  added=''
 updated=''  updated=''
 kept=''  kept=''
 for f in "${devices[@]}"; do  for f in "${devices[@]}"; do
         d="$( firmware_devicename "$f" )"          d="$( firmware_devicename "$f" )"
   
           verify_existing="$DOWNLOAD"
         if [ "$f" = "$d" ]; then          if [ "$f" = "$d" ]; then
                 f=$( firmware_filename "$d" || true )                  f=$( firmware_filename "$d" || true )
                 [ "$f" ] || continue                  [ "$f" ] || continue
Line 425 
Line 446 
         elif ! "$INSTALL" && ! grep -Fq "($f)" "$CFILE" ; then          elif ! "$INSTALL" && ! grep -Fq "($f)" "$CFILE" ; then
                 echo "Cannot download local file $f" >&2                  echo "Cannot download local file $f" >&2
                 exit 2                  exit 2
           else
                   # If someone specified a filename on the command-line
                   # we don't want to verify it.
                   verify_existing=false
         fi          fi
   
         set -A installed -- $( installed_firmware '' "$d-firmware-" '*' )          set -A installed -- $( installed_firmware '' "$d-firmware-" '*' )
Line 441 
Line 466 
   
         if [ -e "$f" ]; then          if [ -e "$f" ]; then
                 if "$DOWNLOAD"; then                  if "$DOWNLOAD"; then
                         [ "$VERBOSE" -gt 0 ] && ! "$INSTALL" &&                          if "$verify_existing" && ! "$DRYRUN"; then
                             echo "Keep/Verify ${f##*/}"                                  [ "$VERBOSE" -gt 1 ] && ! "$INSTALL" &&
                         "$DRYRUN"  || verify "$f" || continue                                      echo "Keep/Verify ${f##*/}"
                                   verify "$f" || continue
                           else
                                   [ "$VERBOSE" -gt 1 ] && ! "$INSTALL" &&
                                       echo "Keep ${f##*/}"
                           fi
                         "$INSTALL" || kept="$kept,$d"                          "$INSTALL" || kept="$kept,$d"
                 # else assume it was verified when downloaded                  # else assume it was verified when downloaded
                 fi                  fi
Line 478 
Line 508 
         f="${f##*/}"          f="${f##*/}"
         f="${f%.tgz}"          f="${f%.tgz}"
         if [ "$update" ]; then          if [ "$update" ]; then
                 if [ "$VERBOSE" -gt 0 ] && "$DRYRUN"; then                  if [ "$VERBOSE" -eq 1 ] && "$DOWNLOAD" && ! "$DRYRUN"; then
                     echo "Update $f"                          echo " updated."
                 elif [ "$VERBOSE" -eq 1 ]; then                  elif [ "$VERBOSE" -eq 1 ]; then
                     echo " updated."                          echo "Update $f"
                   elif [ "$VERBOSE" -gt 0 ] && "$DRYRUN"; then
                           echo "Update $f"
                 fi                  fi
                 updated="$updated,$d"                  updated="$updated,$d"
         else          else
                 if [ "$VERBOSE" -gt 0 ] && "$DRYRUN"; then                  if [ "$VERBOSE" -eq 1 ] && "$DOWNLOAD" && ! "$DRYRUN"; then
                     echo "Install $f"                          echo " installed."
                 elif [ "$VERBOSE" -eq 1 ]; then                  elif [ "$VERBOSE" -eq 1 ]; then
                     echo " installed."                          echo "Install $f"
                   elif [ "$VERBOSE" -gt 0 ] && "$DRYRUN"; then
                           echo "Install $f"
                 fi                  fi
                 added="$added,$d"                  added="$added,$d"
         fi          fi

Legend:
Removed from v.1.139  
changed lines
  Added in v.1.146

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