[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.138 and 1.143

version 1.138, 2021/12/26 18:58:54 version 1.143, 2022/01/07 01:47:24
Line 37 
Line 37 
 DRYRUN=false  DRYRUN=false
 VERBOSE=0  VERBOSE=0
 DELETE=false  DELETE=false
 DOWNLOAD=true  DOWNLOAD=
 INSTALL=true  INSTALL=true
 LOCALSRC=  LOCALSRC=
   
Line 199 
Line 199 
 }  }
   
 add_firmware () {  add_firmware () {
         local _f="${1##*/}" _pkgname          local _f="${1##*/}" _m="${2:-Install}" _pkgname
         FWPKGTMP="$( tmpdir "${DESTDIR}/var/db/pkg/.firmware" )"          FWPKGTMP="$( tmpdir "${DESTDIR}/var/db/pkg/.firmware" )"
         local _flags=-vm          local _flags=-vm
         case "$VERBOSE" in          case "$VERBOSE" in
Line 207 
Line 207 
                 2|3) _flags=-Vm ;;                  2|3) _flags=-Vm ;;
         esac          esac
   
         [ "$VERBOSE" -eq 1 ] && echo -n "Install ${_f} ..."          ftp -N "${0##/}" -D "$_m" "$_flags" -o- "file:${1}" |
   
         ftp -N "${0##/}" -D "Install" "$_flags" -o- "file:${1}" |  
                 tar -s ",^\+,${FWPKGTMP}/+," \                  tar -s ",^\+,${FWPKGTMP}/+," \
                     -s ",^firmware,${DESTDIR}/etc/firmware," \                      -s ",^firmware,${DESTDIR}/etc/firmware," \
                     -C / -zxphf - "+*" "firmware/*"                      -C / -zxphf - "+*" "firmware/*"
Line 235 
Line 233 
         chmod 755 "$FWPKGTMP"          chmod 755 "$FWPKGTMP"
         mv "$FWPKGTMP" "${DESTDIR}/var/db/pkg/${_pkgname}"          mv "$FWPKGTMP" "${DESTDIR}/var/db/pkg/${_pkgname}"
         unset FWPKGTMP          unset FWPKGTMP
   
         [ "$VERBOSE" -eq 1 ] && echo " done."  
 }  }
   
 delete_firmware() {  delete_firmware() {
         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 0 ] && 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 279 
Line 275 
                 fi                  fi
         done          done
   
         [ "$VERBOSE" -gt 0 ] && echo " done."          [ "$VERBOSE" -gt 2 ] && echo " done."
   
           return 0
 }  }
   
 usage() {  usage() {
Line 288 
Line 286 
 }  }
   
 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 )) ;;
Line 323 
Line 321 
 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
           DOWNLOAD=true
         INSTALL=false          INSTALL=false
         LOCALSRC="${LOCALSRC:-.}"          LOCALSRC="${LOCALSRC:-.}"
 elif [ "$LOCALSRC" ]; then  elif [ "$LOCALSRC" ]; then
Line 338 
Line 337 
 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
           [ "$VERBOSE" -gt 0 ] && VERBOSE=3
   
         set -A installed          set -A installed
         if [ "${devices[*]:-}" ]; then          if [ "${devices[*]:-}" ]; then
                 "$ALL" && usage 22                  "$ALL" && usage 22
Line 375 
Line 377 
                 done                  done
         fi          fi
   
         deleted="${deleted:+${deleted#,}}"          deleted="${deleted#,}"
         echo "${0:##*/}: deleted ${deleted:-none}";          echo "${0:##*/}: deleted ${deleted:-none}";
   
         exit          exit
Line 386 
Line 388 
     REMOVE_LOCALSRC=true      REMOVE_LOCALSRC=true
 fi  fi
   
 CFILE="$LOCALSRC/$CFILE"  
   
 if [ "${devices[*]:-}" ]; then  if [ "${devices[*]:-}" ]; then
         "$ALL" && usage 22          "$ALL" && usage 22
 else  else
         [ "$VERBOSE" -gt 0 ] && echo -n "Detect firmware ..."          [ "$VERBOSE" -gt 1 ] && echo -n "Detect firmware ..."
         set -sA devices -- $( detect_firmware )          set -sA devices -- $( detect_firmware )
         [ "$VERBOSE" -gt 0 ] &&          [ "$VERBOSE" -gt 1 ] &&
             { [ "${devices[*]:-}" ] && echo " found." || echo " done." ; }              { [ "${devices[*]:-}" ] && echo " found." || echo " done." ; }
 fi  fi
   
 [ "${devices[*]:-}" ] || exit  [ "${devices[*]:-}" ] || exit
   
 if "$DOWNLOAD"; then  # Only need the CFILE to verify what has been downloaded
         set +o noclobber # we want to get the latest CFILE  # or to convert a device to a filename.
         fetch "$CFILE"  NEED_CFILE="${DOWNLOAD:-false}"
         set -o noclobber  if ! "$NEED_CFILE"; then
         ! signify -qVep "$FWPUB_KEY" -x "$CFILE" -m "$CFILE" &&          for f in "${devices[@]}"; do
             echo "Signature check of SHA256.sig failed" >&2 && exit 1                  if [ "$( firmware_devicename "$f" )" = "$f" ]; then
 elif [ ! -e "$CFILE" ]; then                          NEED_CFILE=true
         # TODO: We shouldn't need a CFILE if all arguments are files.                          break
         echo "${0##*/}: $CFILE: No such file or directory" >&2                  fi
         exit 2          done
 fi  fi
   
   # Only need to download if we already decided we did,
   # or the same decision as if we NEED_CFILE.
   DOWNLOAD="${DOWNLOAD:-$NEED_CFILE}"
   
   if "$NEED_CFILE"; then
           CFILE="$LOCALSRC/$CFILE"
   
           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
                   echo "${0##*/}: $CFILE: No such file or directory" >&2
                   exit 2
           fi
   fi
   
 added=''  added=''
 updated=''  updated=''
 kept=''  kept=''
Line 431 
Line 450 
         if "$INSTALL" && [ "${installed[*]:-}" ]; then          if "$INSTALL" && [ "${installed[*]:-}" ]; then
                 for i in "${installed[@]}"; do                  for i in "${installed[@]}"; do
                         if [ "${f##*/}" = "$i.tgz" ]; then                          if [ "${f##*/}" = "$i.tgz" ]; then
                                 [ "$VERBOSE" -gt 0 ] && echo "Keep $i"                                  [ "$VERBOSE" -gt 2 ] && echo "Keep $i"
                                 kept="$kept,$d"                                  kept="$kept,$d"
                                 continue 2                                  continue 2
                         fi                          fi
Line 440 
Line 459 
   
         if [ -e "$f" ]; then          if [ -e "$f" ]; then
                 if "$DOWNLOAD"; then                  if "$DOWNLOAD"; then
                         [ "$VERBOSE" -gt 0 ] && ! "$INSTALL" &&                          [ "$VERBOSE" -gt 1 ] && ! "$INSTALL" &&
                             echo "Keep/Verify ${f##*/}"                              echo "Keep/Verify ${f##*/}"
                         "$DRYRUN"  || verify "$f" || continue                          "$DRYRUN"  || verify "$f" || continue
                         "$INSTALL" || kept="$kept,$d"                          "$INSTALL" || kept="$kept,$d"
Line 454 
Line 473 
                         fetch  "$f" &&                          fetch  "$f" &&
                         verify "$f" ||                          verify "$f" ||
                             { [ "$VERBOSE" -eq 1 ] && echo " failed."; continue; }                              { [ "$VERBOSE" -eq 1 ] && echo " failed."; continue; }
                         [ "$VERBOSE" -eq 1 ] && echo " done."                          [ "$VERBOSE" -eq 1 ] && ! "$INSTALL" && echo " done."
                 fi                  fi
                 "$INSTALL" || added="$added,$d"                  "$INSTALL" || added="$added,$d"
         elif "$INSTALL"; then          elif "$INSTALL"; then
Line 464 
Line 483 
   
         "$INSTALL" || continue          "$INSTALL" || continue
   
         removed=false          update=''
         if [ "${installed[*]:-}" ]; then          if [ "${installed[*]:-}" ]; then
                 for i in "${installed[@]}"; do                  for i in "${installed[@]}"; do
                         "$DRYRUN" || delete_firmware "$i"                          "$DRYRUN" || delete_firmware "$i"
                         removed=true                          update="Update"
                 done                  done
         fi          fi
   
         "$DRYRUN" || add_firmware "$f"          "$DRYRUN" || add_firmware "$f" "$update"
   
         f="${f##*/}"          f="${f##*/}"
         f="${f%.tgz}"          f="${f%.tgz}"
         if "$removed"; then          if [ "$update" ]; then
                 "$DRYRUN" && [ "$VERBOSE" -gt 0 ] && echo "Update $f"                  if [ "$VERBOSE" -eq 1 ] && "$DOWNLOAD" && ! "$DRYRUN"; then
                           echo " updated."
                   elif [ "$VERBOSE" -eq 1 ]; then
                           echo "Update $f"
                   elif [ "$VERBOSE" -gt 0 ] && "$DRYRUN"; then
                           echo "Update $f"
                   fi
                 updated="$updated,$d"                  updated="$updated,$d"
         else          else
                 "$DRYRUN" && [ "$VERBOSE" -gt 0 ] && echo "Install $f"                  if [ "$VERBOSE" -eq 1 ] && "$DOWNLOAD" && ! "$DRYRUN"; then
                           echo " installed."
                   elif [ "$VERBOSE" -eq 1 ]; then
                           echo "Install $f"
                   elif [ "$VERBOSE" -gt 0 ] && "$DRYRUN"; then
                           echo "Install $f"
                   fi
                 added="$added,$d"                  added="$added,$d"
         fi          fi
 done  done

Legend:
Removed from v.1.138  
changed lines
  Added in v.1.143

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