Print this page
12817 ucode/update.intel should be able to use git repos
12815 ucode/update.intel needs pkgfmt fix

@@ -8,40 +8,57 @@
 # A full copy of the text of the CDDL should have accompanied this
 # source. A copy of the CDDL is also available via the Internet at
 # http://www.illumos.org/license/CDDL.
 
 # Copyright 2019 OmniOS Community Edition (OmniOSce) Association.
-# Copyright 2019 Joyent, Inc.
+# Copyright 2020 Joyent, Inc.
 
 # A simple update script that extracts an Intel microcode download file
 # into the intel/ directory, and updates the hardlinks in the
 # system/kernel/platform manifest.
 
 set -e
 set -o pipefail
 
-[[ -z "$1" ]] || [[ ! -f "$1" ]] && {
-        echo "Syntax: $0 <path to microcode tar>" >&2
-        exit 1
-}
+# Remove this once we start using pkgfmt without it in the rest of -gate.
+export PKGFMT_OUTPUT=v1
 
-ucodetar="$1"
+# Change me if the world evolves, but for now, this is the source of
+# truth for Intel microcode.
+REPOSOURCE="https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files"
 
+tmp=$(mktemp -d)
+mkdir $tmp/out
 mf=../../pkg/manifests/system-microcode-intel.mf
 [[ -f $mf ]] || {
         echo "Run from usr/src/data/ucode" 2>&1
         exit 1
 }
 
 fw=platform/i86pc/ucode/GenuineIntel
 
-tmp=$(mktemp -d)
-mkdir $tmp/out
+if [[ -z "$1" ]]; then
+        goback=`pwd`
+        cd $tmp
+        # Hope git is available if we need it...
+        git clone $REPOSOURCE || {
+                echo "Git clone of $REPOSOURCE failed." 2>&1
+                exit 1
+        }
+        cd $goback
+        # Change with REPOSOURCE name
+        dir=$tmp/Intel-Linux-Processor-Microcode-Data-Files
+elif [[ -d "$1" ]]; then
+        dir=$1
+else
+        gtar -C $tmp -xvf "$1"
+        # This will expand properly if the tarball appends a release
+        # to the name.
+        dir=$tmp/Intel-Linux-Processor-Microcode-Data-Files*
+fi
 
-gtar -C $tmp -xvf "$ucodetar"
-
-find $tmp/Intel-Linux-Processor-Microcode-Data*/intel-ucode*/ -type f \
+find $dir/intel-ucode*/ -type f \
     | while read f; do
         echo "Converting $(basename $f)"
         cp $f $tmp/intel-fw
         ucodeadm -i -R $tmp/out $tmp/intel-fw
         rm -f $tmp/intel-fw

@@ -52,11 +69,11 @@
 egrep -v "(file|hardlink) path=$fw" $mf.tmp > $mf
 rm -f $mf.tmp
 
 rm -f intel/*
 
-cp $tmp/Intel-Linux-Processor-Microcode-Data*/license intel/THIRDPARTYLICENSE
+cp $dir/license intel/THIRDPARTYLICENSE
 echo Intel Processor Microcode Data Files > intel/THIRDPARTYLICENSE.descrip
 
 rm -f Makefile.links
 
 typeset -A seen