diff options
-rw-r--r-- | config/data/pico-serprog/mkhelper.cfg | 2 | ||||
-rw-r--r-- | config/data/stm32-vserprog/mkhelper.cfg | 2 | ||||
-rw-r--r-- | include/git.sh | 2 | ||||
-rw-r--r-- | include/inject.sh | 68 | ||||
-rw-r--r-- | include/lib.sh | 18 | ||||
-rw-r--r-- | include/rom.sh | 27 | ||||
-rwxr-xr-x | mk | 6 |
7 files changed, 41 insertions, 84 deletions
diff --git a/config/data/pico-serprog/mkhelper.cfg b/config/data/pico-serprog/mkhelper.cfg index 8e902bda..982c365b 100644 --- a/config/data/pico-serprog/mkhelper.cfg +++ b/config/data/pico-serprog/mkhelper.cfg @@ -4,4 +4,4 @@ sersrc="src/pico-serprog" serx="$sersrc/build/pico_serprog.uf2" picosdk="src/pico-sdk" serdir="$picosdk/src/boards/include/boards" -premake="mkserprog pico" +premake="$dry eval fx_ \"buildser pico\" x_ basename -as .h \"\$serdir/\"*.h" diff --git a/config/data/stm32-vserprog/mkhelper.cfg b/config/data/stm32-vserprog/mkhelper.cfg index 907e890f..bb2189a6 100644 --- a/config/data/stm32-vserprog/mkhelper.cfg +++ b/config/data/stm32-vserprog/mkhelper.cfg @@ -3,4 +3,4 @@ sersrc="src/stm32-vserprog" serx="$sersrc/stm32-vserprog.hex" serdir="$sersrc/boards" -mkhelper="mkserprog stm32" +mkhelper="$dry eval fx_ \"buildser stm32\" x_ basename -as .h \"\$serdir/\"*.h" diff --git a/include/git.sh b/include/git.sh index 0a05b5ab..81c75806 100644 --- a/include/git.sh +++ b/include/git.sh @@ -108,7 +108,7 @@ tmpclone() ( [ $# -gt 5 ] || git clone "$repodir" "$3" || err "!clone $repodir $3" git -C "$3" reset --hard "$4" || err "!reset $1 $2 $3 $4 $5" - fx_ "eval x_ git -C \"$3\" am" "$5" -type f + fx_ "eval x_ git -C \"$3\" am" find "$5" -type f ) || repofail="y" [ "$repofail" = "y" ] && [ $# -lt 6 ] && tmpclone "$@" retry diff --git a/include/inject.sh b/include/inject.sh index 845208ba..c0b4409f 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -13,7 +13,6 @@ cbcfgsdir="config/coreboot" hashfiles="vendorhashes blobhashes" # blobhashes for backwards compatibility dontflash="!!! AN ERROR OCCURED! Please DO NOT flash if injection failed. !!!" vfix="DO_NOT_FLASH_YET._FIRST,_INJECT_FILES_VIA_INSTRUCTIONS_ON_LIBREBOOT.ORG_" -vguide="https://libreboot.org/docs/install/ivy_has_common.html" tmpromdel="$xbmklocal/DO_NOT_FLASH" nvm="util/nvmutil/nvm" ifdtool="elf/ifdtool/default/ifdtool" @@ -49,7 +48,7 @@ download() readkconfig() { x_ rm -f "$xbmktmp/cbcfg" - fe_ scankconfig "$boarddir/config" -type f + fx_ scankconfig x_ find "$boarddir/config" -type f eval "`setcfg "$xbmktmp/cbcfg" 1`" @@ -142,16 +141,13 @@ extract_intel_me() _7ztest="$xbmklocal/metmp/a" _me="$xbmkpwd/$_dest" _metmp="$xbmklocal/me.bin" - x_ rm -f "$_metmp" + x_ rm -f "$_metmp" "$xbmklocal/a" mfs="" && [ "$ME11bootguard" = "y" ] && mfs="--whitelist MFS" && \ chkvars ME11delta ME11version ME11sku ME11pch [ "$ME11bootguard" = "y" ] && x_ ./mk -f deguard - set +u +e - fe_ extract_intel_me_bruteforce "$xbmkpwd/$appdir" -type f || : - x_ rm -Rf "$xbmklocal/metmp" - + set +u +e && fx_ find_me x_ find "$xbmkpwd/$appdir" -type f [ "$ME11bootguard" != "y" ] && x_ mv "$_metmp" "$_me" && return 0 ( @@ -162,20 +158,18 @@ extract_intel_me() ) || err "Error running deguard for $_me - $dontflash"; : } -extract_intel_me_bruteforce() +find_me() { + e "$_metmp" f && x_ rm -Rf "$xbmklocal/metmp" && return 1 [ -L "$1" ] && return 0 - _r="-r" && [ -n "$mfs" ] && _r="" - "$mecleaner" $mfs $_r -t -O "$xbmklocal/a" -M "$_metmp" "$1" && \ - return 1 - "$mecleaner" $mfs $_r -t -O "$_metmp" "$1" && return 1 - "$me7updateparser" -O "$_metmp" "$1" && return 1 + _7ztest="${_7ztest}a" && _r="-r" && [ -n "$mfs" ] && _r="" - _7ztest="${_7ztest}a" - extract_archive "$1" "$_7ztest" || return 0 + "$mecleaner" $mfs $_r -t -O "$xbmklocal/a" -M "$_metmp" "$1" || \ + "$mecleaner" $mfs $_r -t -O "$_metmp" "$1" || "$me7updateparser" \ + -O "$_metmp" "$1" || extract_archive "$1" "$_7ztest" || return 0 - fe_ extract_intel_me_bruteforce "$_7ztest" -type f || return 1; : + fx_ find_me x_ find "$_7ztest" -type f || return 1; : } extract_archive() @@ -188,15 +182,11 @@ extract_archive() extract_kbc1126ec() { - x_ e "$kbc1126_ec_dump" f ( x_ cd "$appdir/" - mv Rompaq/68*.BIN ec.bin || : - if [ ! -f "ec.bin" ]; then - unar -D ROM.CAB Rom.bin || unar -D Rom.CAB Rom.bin || \ - unar -D 68*.CAB Rom.bin || err "kbc1126 unar failed" - x_ mv Rom.bin ec.bin - fi + mv Rompaq/68*.BIN ec.bin || unar -D ROM.CAB Rom.bin || unar -D \ + Rom.CAB Rom.bin || unar -D 68*.CAB Rom.bin || err "!kbc1126 unar" + [ -f "ec.bin" ] || x_ mv Rom.bin ec.bin x_ e ec.bin f && x_ "$kbc1126_ec_dump" ec.bin ) || err "$board: can't extract kbc1126 ec firmware - $dontflash" @@ -234,10 +224,10 @@ extract_sch5545ec() # https://pcsupport.lenovo.com/us/en/products/laptops-and-netbooks/thinkpad-t-series-laptops/thinkpad-t480-type-20l5-20l6/20l5/solutions/ht508988 extract_tbfw() { - chkvars TBFW_size && fe_ copy_tbfw "$appdir" -type f -name "TBT.bin" + chkvars TBFW_size; fx_ copytb x_ find "$appdir" -type f -name "TBT.bin" } -copy_tbfw() +copytb() { [ -f "$1" ] && [ ! -L "$1" ] && x_ dd if=/dev/null of="$1" bs=1 \ seek=$TBFW_size && x_ mv "$1" "$_dest" && return 1; : @@ -344,23 +334,14 @@ patch_release_roms() x_ tar -xf "$archive" -C "${tmpromdir%"/bin/$board"}" for _hashes in $hashfiles; do - [ "$need_files" = "y" ] || break - e "$tmpromdir/$_hashes" f && has_hashes="y" && \ - hashfile="$_hashes" && break; : + [ "$need_files" = "y" ] && e "$tmpromdir/$_hashes" f && \ + has_hashes="y" && hashfile="$_hashes" && break; : done - if readkconfig; then - fe_ prep_rom "$tmpromdir" -maxdepth 1 -type f -name "*.rom" - [ "$nukemode" != "nuke" ] || \ - printf "Make sure you inserted vendor files: %s\n" \ - "$vguide" > "$tmpromdir/README.md" || : - else - printf "Skipping vendorfiles on '%s'\n" "$archive" 1>&2 - need_files="n" - fi + readkconfig || exit 0; [ "$need_files" = "n" ] || \ + fx_ prep x_ find "$tmpromdir" -maxdepth 1 -type f -name "*.rom" ( - [ "$need_files" = "y" ] || exit 0 cd "$tmpromdir" || err "patch '$archive': can't cd $tmpromdir" # NOTE: For compatibility with older rom releases, defer to sha1 if [ "$has_hashes" = "y" ] && [ "$nukemode" != "nuke" ]; then @@ -370,7 +351,7 @@ patch_release_roms() fi ) || err "'$archive' -> Can't verify vendor hashes. $dontflash" - [ -z "$new_mac" ] || modify_mac || printf "\nGbE not defined\n" 1>&2 + [ -z "$new_mac" ] || [ -z "$CONFIG_GBE_BIN_PATH" ] || modify_mac [ "$xchanged" = "y" ] || rm -Rf "$tmpromdel" || : [ "$xchanged" = "y" ] || return 0 @@ -384,7 +365,7 @@ patch_release_roms() "$archive" || err "'$archive' -> Can't overwrite - $dontflash"; : } -prep_rom() +prep() { _xrom="$1" _xromname="${1##*/}" @@ -492,16 +473,11 @@ insert() modify_mac() { - [ -n "$CONFIG_GBE_BIN_PATH" ] || return 1 - x_ cp "${CONFIG_GBE_BIN_PATH##*../}" "$xbmklocal/gbe" [ -n "$new_mac" ] && [ "$new_mac" != "restore" ] && \ x_ "$nvm" "$xbmklocal/gbe" setmac "$new_mac" - fe_ newmac "$tmpromdir" -maxdepth 1 -type f -name "*.rom" - - printf "\nGbE NVM written to '%s':\n" "$archive" - x_ "$nvm" "$xbmklocal/gbe" dump | grep -v "bytes read from file" || : + fx_ newmac x_ find "$tmpromdir" -maxdepth 1 -type f -name "*.rom" } newmac() diff --git a/include/lib.sh b/include/lib.sh index a125181b..950a07c8 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -140,26 +140,15 @@ chkvars() # e.g. coreboot is multi-tree, so 1 singletree() { - ( fx_ "exit 1" "config/$1/"*/ -type f -name "target.cfg" ) || return 1 -} - -fe_() -{ - find_ex "x_" "$@" + ( fx_ "exit 1" find "config/$1/"*/ -type f -name "target.cfg" ) || \ + return 1 } fx_() { - find_ex "" "$@" -} - -find_ex() -{ - xmsg="$1" && shift 1 fd="`mktemp`" && x_ rm -f "$fd" && x_ touch "$fd" xx="$1" && shift 1 - $xmsg find "$@" 2>/dev/null | sort 1>"$fd" 2>/dev/null || \ - err "!find $(echo "$@") > \"$fd\"" + "$@" 2>/dev/null | sort 1>"$fd" 2>/dev/null || err "FATAL: !sort fx_" dx_ "$xx" "$fd" || break x_ rm -f "$fd" } @@ -179,7 +168,6 @@ x_() err() { - set -u -e [ $# -lt 1 ] || printf "ERROR %s: %s\n" "$0" "$1" 1>&2 || : exit 1 } diff --git a/include/rom.sh b/include/rom.sh index 0eebdabb..fdd0787f 100644 --- a/include/rom.sh +++ b/include/rom.sh @@ -7,24 +7,15 @@ grubdata="config/data/grub" -mkserprog() +buildser() { - [ "$_f" = "-d" ] && return 0 # dry run - basename -as .h "$serdir/"*.h > "$xbmktmp/ser" || \ - err "!mk $1 $xbmktmp" - - while read -r sertarget; do - [ "$1" = "pico" ] && x_ cmake -DPICO_BOARD="$sertarget" \ - -DPICO_SDK_PATH="$picosdk" -B "$sersrc/build" "$sersrc" \ - && x_ cmake --build "$sersrc/build" - [ "$1" = "stm32" ] && x_ make -C "$sersrc" \ - libopencm3-just-make BOARD=$sertarget && x_ make -C \ - "$sersrc" BOARD=$sertarget - x_ mkdir -p "bin/serprog_$1" - x_ mv "$serx" "bin/serprog_$1/serprog_$sertarget.${serx##*.}" - done < "$xbmktmp/ser" - - [ "$XBMK_RELEASE" = "y" ] && mkrom_tarball "bin/serprog_$1"; : + [ "$1" = "pico" ] && x_ cmake -DPICO_BOARD="$2" \ + -DPICO_SDK_PATH="$picosdk" -B "$sersrc/build" "$sersrc" && \ + x_ cmake --build "$sersrc/build" + [ "$1" = "stm32" ] && x_ make -C "$sersrc" libopencm3-just-make \ + BOARD=$2 && x_ make -C "$sersrc" BOARD=$2 + x_ mkdir -p "bin/serprog_$1" + x_ mv "$serx" "bin/serprog_$1/serprog_$2.${serx##*.}" } copyps1bios() @@ -192,7 +183,7 @@ mkseagrub() [ "$payload_grubsea" = "y" ] && pname="grub" [ "$payload_grubsea" = "y" ] || \ cbfs "$tmprom" "$grubdata/bootorder" bootorder raw - fe_ "cprom" "$grubdata/keymap" -type f -name "*.gkb" + fx_ cprom x_ find "$grubdata/keymap" -type f -name "*.gkb" } add_uboot() @@ -87,6 +87,8 @@ build_release() cd "$srcdir" || err "$vdir: 2 !cd \"$srcdir\"" x_ ./mk -d coreboot mk -b coreboot pico-serprog stm32-vserprog pcsx-redux + + fx_ mkrom_tarball x_ find bin -maxdepth 1 -type d -name "serprog_*" x_ mv bin ../roms ) || err "can't build rom images" @@ -279,7 +281,7 @@ check_project_hashes() [ ! -f "$XBMK_CACHE/hash/$project$tree" ] || \ read -r old_pjhash < "$XBMK_CACHE/hash/$project$tree" - fx_ "x_ sha512sum" "$datadir" "$configdir/$tree" "$mdir" \ + fx_ "x_ sha512sum" find "$datadir" "$configdir/$tree" "$mdir" \ -type f -not -path "*/.git*/*" | awk '{print $1}' > \ "$xbmktmp/project.hash" || err "!h $project $tree" @@ -371,7 +373,7 @@ check_defconfig() elfcheck() { # TODO: *STILL* very hacky check. do it properly (based on build.list) - ( fx_ "exit 1" "$dest_dir" -type f ) || return 1; : + ( fx_ "exit 1" find "$dest_dir" -type f ) || return 1; : } handle_makefile() |