From 2ae565ba93a84add3dd891e31e894d61cd4be42b Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Fri, 2 May 2025 05:54:36 +0100 Subject: init.sh: move setvars/err_ to lib.sh these functions make more sense in lib.sh i made mk link lib.sh first, so that the functions on init.sh can still use them. Signed-off-by: Leah Rowe --- include/init.sh | 21 --------------------- include/lib.sh | 21 +++++++++++++++++++++ 2 files changed, 21 insertions(+), 21 deletions(-) (limited to 'include') diff --git a/include/init.sh b/include/init.sh index 1b8432ce..c06d937a 100644 --- a/include/init.sh +++ b/include/init.sh @@ -16,27 +16,6 @@ xbmkpath="$PATH" err="err_" -setvars() -{ - _setvars="" - if [ $# -lt 2 ]; then - printf "\$err \"setvars: too few args\\n\"" - return 0 - fi - val="$1" - shift 1 - for var in "$@"; do - _setvars="$var=\"$val\"; $_setvars" - done - printf "%s\n" "${_setvars% }" -} - -err_() -{ - printf "ERROR %s: %s\n" "$0" "$1" 1>&2 - exit 1 -} - eval "`setvars "" _nogit board reinstall versiondate aur_notice configdir \ datadir version xbmkpwd relname xbmkpwd xbmktmp python pyver`" diff --git a/include/lib.sh b/include/lib.sh index 7a5f2621..853ad654 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -115,3 +115,24 @@ check_defconfig() [ -f "$x" ] && printf "%s\n" "$x" && return 1 done; : } + +setvars() +{ + _setvars="" + if [ $# -lt 2 ]; then + printf "\$err \"setvars: too few args\\n\"" + return 0 + fi + val="$1" + shift 1 + for var in "$@"; do + _setvars="$var=\"$val\"; $_setvars" + done + printf "%s\n" "${_setvars% }" +} + +err_() +{ + printf "ERROR %s: %s\n" "$0" "$1" 1>&2 + exit 1 +} -- cgit v1.2.1 From 6c4d88f2686558ef910bed2ebcc024d0347076fd Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Fri, 2 May 2025 07:24:11 +0100 Subject: move x_() to lib.sh Signed-off-by: Leah Rowe --- include/init.sh | 5 ----- include/lib.sh | 5 +++++ 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'include') diff --git a/include/init.sh b/include/init.sh index c06d937a..b8839921 100644 --- a/include/init.sh +++ b/include/init.sh @@ -224,9 +224,4 @@ xbmk_child_exec() exit $xbmk_rval } -x_() -{ - [ $# -lt 1 ] || "$@" || $err "Unhandled error for: $(echo "$@")"; : -} - xbmk_init "$@" diff --git a/include/lib.sh b/include/lib.sh index 853ad654..f5007c7d 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -131,6 +131,11 @@ setvars() printf "%s\n" "${_setvars% }" } +x_() +{ + [ $# -lt 1 ] || "$@" || $err "Unhandled error for: $(echo "$@")"; : +} + err_() { printf "ERROR %s: %s\n" "$0" "$1" 1>&2 -- cgit v1.2.1 From f3ae3dbbbe4f9c0ef6a1d68ed1faf7e9ca19f391 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Fri, 2 May 2025 07:26:17 +0100 Subject: lib.sh: simplify remkdir() Signed-off-by: Leah Rowe --- include/lib.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/lib.sh b/include/lib.sh index f5007c7d..59676150 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -9,8 +9,8 @@ rmodtool="elf/cbfstool/default/rmodtool" remkdir() { - rm -Rf "$1" || $err "remkdir: !rm -Rf \"$1\"" - mkdir -p "$1" || $err "remkdir: !mkdir -p \"$1\"" + x_ rm -Rf "$1" + x_ mkdir -p "$1" } mkrom_tarball() -- cgit v1.2.1 From 15b76bc202f91156b3cc8234ffac1d3901763309 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Fri, 2 May 2025 07:26:39 +0100 Subject: lib.sh: support multiple arguments in remkdir() Signed-off-by: Leah Rowe --- include/lib.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/lib.sh b/include/lib.sh index 59676150..87061f2b 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -9,8 +9,8 @@ rmodtool="elf/cbfstool/default/rmodtool" remkdir() { - x_ rm -Rf "$1" - x_ mkdir -p "$1" + x_ rm -Rf "$@" + x_ mkdir -p "$@" } mkrom_tarball() -- cgit v1.2.1 From acb0ea202f2629c13edc278126f09b043037c8bc Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Fri, 2 May 2025 10:52:38 +0100 Subject: lib.sh: Simplify rmgit() Signed-off-by: Leah Rowe --- include/lib.sh | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'include') diff --git a/include/lib.sh b/include/lib.sh index 87061f2b..bef2a16f 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -39,11 +39,8 @@ mksha512sum() rmgit() { - ( - cd "$1" || $err "!cd gitrepo $1" - find . -name ".git" -exec rm -Rf {} + || $err "!rm .git $1" - find . -name ".gitmodules" -exec rm -Rf {} + || $err "!rm .gitmod $1" - ) || $err "Cannot remove .git/.gitmodules in $1" + x_ find "$1" -name ".git" -exec rm -Rf {} + + x_ find "$1" -name ".gitmodules" -exec rm -Rf {} + } # can grab from the internet, or copy locally. -- cgit v1.2.1 From 773d2deaca05cdee754ef4ec79bae9ddd1f3383c Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Fri, 2 May 2025 17:05:56 +0100 Subject: NEW MAINBOARD: Dell Precision T1700 SFF and MT This is similar to the 9020SFF, but this board has ECC support. However, the native raminit isn't used here, even though it is otherwise compatible, because the native init doesn't do ECC yet. The broadwell mrc.bin has ECC support, which is also used on the HP EliteBook 820 G2. The MRC for broadwell can be used on haswell boards such as the T1700. Add both the SFF and MT variants. Since these are identical to the 9020 variants, except for slightly different PCH enabling ECC, we can just re-use the 9020 port without issue. We *could* add a variant to coreboot, for T1700, but there is not really any pressing need. It is simply the 9020sff/mt with mrc.bin Signed-off-by: Leah Rowe --- include/inject.sh | 2 ++ include/mrc.sh | 57 +++++++++++++++++++++++++++++++------------------------ 2 files changed, 34 insertions(+), 25 deletions(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index 6b316729..e5282861 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -86,6 +86,8 @@ getfiles() "$E6400_VGA_DL_url_bkup" "$E6400_VGA_DL_hash" "$CONFIG_VGA_BIOS_FILE" [ -z "$CONFIG_HAVE_MRC" ] || fetch "mrc" "$MRC_url" "$MRC_url_bkup" \ "$MRC_hash" "$CONFIG_MRC_FILE" + [ -n "$CONFIG_REFCODE_BLOB_FILE" ] && fetch "refcode" "$MRC_url" \ + "$MRC_url_bkup" "$MRC_hash" "$CONFIG_REFCODE_BLOB_FILE" [ -z "$CONFIG_LENOVO_TBFW_BIN" ] || fetch "tbfw" "$TBFW_url" \ "$TBFW_url_bkup" "$TBFW_hash" "$CONFIG_LENOVO_TBFW_BIN" # diff --git a/include/mrc.sh b/include/mrc.sh index 6e00292b..eaf39dcb 100644 --- a/include/mrc.sh +++ b/include/mrc.sh @@ -8,35 +8,12 @@ eval "`setvars "" MRC_url MRC_url_bkup MRC_hash MRC_board SHELLBALL`" extract_mrc() { - chkvars "MRC_board" "CONFIG_MRC_FILE" - SHELLBALL="chromeos-firmwareupdate-$MRC_board" - - ( - x_ cd "$appdir" - extract_partition "${MRC_url##*/}" - extract_archive "$SHELLBALL" . - ) || $err "mrc download/extract failure" + extract_shellball "$cbfstool" "$appdir/"bios.bin extract -n mrc.bin \ -f "$_dest" -r RO_SECTION || $err "extract_mrc: !$cbfstool $_dest" - [ -n "$CONFIG_REFCODE_BLOB_FILE" ] && extract_refcode; : -} - -extract_partition() -{ - printf "Extracting ROOT-A partition\n" - ROOTP=$( printf "unit\nB\nprint\nquit\n" | \ - parted "${1%.zip}" 2>/dev/null | grep "ROOT-A" ) - - START=$(( $( echo $ROOTP | cut -f2 -d\ | tr -d "B" ) )) - SIZE=$(( $( echo $ROOTP | cut -f4 -d\ | tr -d "B" ) )) - - dd if="${1%.zip}" of="root-a.ext2" bs=1024 skip=$(( $START / 1024 )) \ - count=$(( $SIZE / 1024 )) || $err "ex dd ${1%.zip}, root-a.ext2" - - printf "cd /usr/sbin\ndump chromeos-firmwareupdate %s\nquit" \ - "$SHELLBALL" | debugfs "root-a.ext2" || $err "!extract shellball" + [ -n "$CONFIG_REFCODE_BLOB_FILE" ] && extract_refcode extra; : } extract_refcode() @@ -44,6 +21,8 @@ extract_refcode() _refdest="${CONFIG_REFCODE_BLOB_FILE##*../}" e "$_refdest" f && return 0 + [ $# -lt 1 ] && extract_shellball + # cbfstool changed the attributes scheme for stage files, # incompatible with older versions before coreboot 4.14, # so we need coreboot 4.13 cbfstool for certain refcode files @@ -57,3 +36,31 @@ extract_refcode() [ -z "$MRC_refcode_gbe" ] || x_ dd if="config/ifd/hp820g2/1.bin" \ of="$_refdest" bs=1 seek=$MRC_refcode_gbe count=1 conv=notrunc; : } + +extract_shellball() +{ + chkvars "MRC_board" "CONFIG_MRC_FILE" + SHELLBALL="chromeos-firmwareupdate-$MRC_board" + + ( + x_ cd "$appdir" + extract_partition "${MRC_url##*/}" + extract_archive "$SHELLBALL" . + ) || $err "mrc download/extract failure"; : +} + +extract_partition() +{ + printf "Extracting ROOT-A partition\n" + ROOTP=$( printf "unit\nB\nprint\nquit\n" | \ + parted "${1%.zip}" 2>/dev/null | grep "ROOT-A" ) + + START=$(( $( echo $ROOTP | cut -f2 -d\ | tr -d "B" ) )) + SIZE=$(( $( echo $ROOTP | cut -f4 -d\ | tr -d "B" ) )) + + dd if="${1%.zip}" of="root-a.ext2" bs=1024 skip=$(( $START / 1024 )) \ + count=$(( $SIZE / 1024 )) || $err "ex dd ${1%.zip}, root-a.ext2" + + printf "cd /usr/sbin\ndump chromeos-firmwareupdate %s\nquit" \ + "$SHELLBALL" | debugfs "root-a.ext2" || $err "!extract shellball" +} -- cgit v1.2.1 From d18d1c2cae2c1c43c56d5c10adb469266d1eb08b Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 3 May 2025 04:16:10 +0100 Subject: lbmk: unified execution on find commands We have a lot of places in lbmk where the output of find is used, and then some function is executed on the result. This is messy, and bloats several of these functions. Now this is unified, into a new function: fx_ What fx_ does is execute a given function, for each result found, with the arguments for a find command appended. For example: find -name ".git" If you wanted to do: foo "$arg" Where "arg" is a search result from find, and you wanted to execute "foo" on each one, you would do: fx_ foo -name ".git" The find utility does have an -exec feature, but I've found that it only works for executables, not functions. fx_ does not return errors, so "foo" in this example would have to do its own error handling. Signed-off-by: Leah Rowe --- include/inject.sh | 43 ++++++++++++++++++------------------------- include/lib.sh | 11 +++++++++++ 2 files changed, 29 insertions(+), 25 deletions(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index e5282861..0886adc8 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -282,19 +282,18 @@ extract_tbfw() { chkvars TBFW_size # size in bytes, matching TBFW's flash IC x_ mkdir -p tmp - x_ rm -f tmp/tb.bin - find "$appdir" -type f -name "TBT.bin" > "tmp/tb.txt" || \ - $err "extract_tbfw $_dest: Can't extract TBT.bin - $dontflash" - while read -r f; do - [ -f "$f" ] || continue - [ -L "$f" ] && continue - x_ cp "$f" "tmp/tb.bin" - break - done < "tmp/tb.txt" + + x_ rm -f tmp/tb.bin && fx_ copy_tbfw "$appdir" -type f -name "TBT.bin" + x_ dd if=/dev/null of=tmp/tb.bin bs=1 seek=$TBFW_size x_ cp "tmp/tb.bin" "$_dest" } +copy_tbfw() +{ + [ -f "$1" ] && [ ! -L "$1" ] && x_ cp "$1" "tmp/tb.bin" && return 1; : +} + extract_fspm() { copy_fsp M; : @@ -419,16 +418,10 @@ patch_release_roms() hashfile="$_hashes" && break; : done - x_ mkdir -p "tmp" && [ -L "tmp/rom.list" ] && \ - $err "'$archive' -> tmp/rom.list is a symlink - $dontflash" - - find "$tmpromdir" -maxdepth 1 -type f -name "*.rom" > "tmp/rom.list" \ - || $err "'$archive' -> Can't make tmp/rom.list - $dontflash" + x_ mkdir -p "tmp" if readkconfig; then - while read -r _xrom ; do - process_release_rom "$_xrom" || break - done < "tmp/rom.list" + fx_ prep_rom "$tmpromdir" -maxdepth 1 -type f -name "*.rom" [ "$nukemode" != "nuke" ] || \ printf "Make sure you inserted vendor files: %s\n" \ "$vguide" > "$tmpromdir/README.md" || : @@ -462,7 +455,7 @@ patch_release_roms() "$archive" || $err "'$archive' -> Can't overwrite - $dontflash"; : } -process_release_rom() +prep_rom() { _xrom="$1" _xromname="${1##*/}" @@ -578,13 +571,7 @@ modify_mac() [ "$new_mac" != "restore" ] && x_ make -C util/nvmutil && \ x_ "$nvm" tmp/gbe setmac "$new_mac" - find "$tmpromdir" -maxdepth 1 -type f -name "*.rom" > "tmp/rom.list" \ - || $err "'$archive' -> Can't make tmp/rom.list - $dontflash" - - while read -r _xrom; do - e "$_xrom" f && xchanged="y" && x_ \ - "$ifdtool" $ifdprefix -i GbE:tmp/gbe "$_xrom" -O "$_xrom" - done < "tmp/rom.list" + fx_ newmac "$tmpromdir" -maxdepth 1 -type f -name "*.rom" printf "\nGbE NVM written to '%s':\n" "$archive" x_ "$nvm" tmp/gbe dump | grep -v "bytes read from file" || : @@ -593,3 +580,9 @@ modify_mac() printf "\nDefault GbE file '%s' written, unmodified.\n" \ "${CONFIG_GBE_BIN_PATH##*../}"; : } + +newmac() +{ + e "$1" f && xchanged="y" && x_ \ + "$ifdtool" $ifdprefix -i GbE:tmp/gbe "$1" -O "$1"; : +} diff --git a/include/lib.sh b/include/lib.sh index bef2a16f..507a37c1 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -128,6 +128,17 @@ setvars() printf "%s\n" "${_setvars% }" } +fx_() +{ + fd="`mktemp`" + xx="$1" && shift 1 + find "$@" | sort > "$fd" || $err "!find $(echo "$@") > \"$fd\"" + while read -r fx; do + "$xx" "$fx" || break; : + done < "$fd" + x_ rm -f "$fd" +} + x_() { [ $# -lt 1 ] || "$@" || $err "Unhandled error for: $(echo "$@")"; : -- cgit v1.2.1 From 47762c84ad0f5e2a6fbe5ceec0bff623239e1e9a Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 3 May 2025 05:25:11 +0100 Subject: lib.sh: add fe_ which is fx_ but err on find In the mk script, we need fx_ to not return errors on the find command, since it's searching a bunch of directories where some of them may not exist. All other instances where fx_ is used, must return an error if the directory being searched doesn't exist. For this, fe_() is introduced, which does the same as fx_ but with this much stricter check. Signed-off-by: Leah Rowe --- include/inject.sh | 6 +++--- include/lib.sh | 13 ++++++++++++- 2 files changed, 15 insertions(+), 4 deletions(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index 0886adc8..2e821d86 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -283,7 +283,7 @@ extract_tbfw() chkvars TBFW_size # size in bytes, matching TBFW's flash IC x_ mkdir -p tmp - x_ rm -f tmp/tb.bin && fx_ copy_tbfw "$appdir" -type f -name "TBT.bin" + x_ rm -f tmp/tb.bin && fe_ copy_tbfw "$appdir" -type f -name "TBT.bin" x_ dd if=/dev/null of=tmp/tb.bin bs=1 seek=$TBFW_size x_ cp "tmp/tb.bin" "$_dest" @@ -421,7 +421,7 @@ patch_release_roms() x_ mkdir -p "tmp" if readkconfig; then - fx_ prep_rom "$tmpromdir" -maxdepth 1 -type f -name "*.rom" + 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" || : @@ -571,7 +571,7 @@ modify_mac() [ "$new_mac" != "restore" ] && x_ make -C util/nvmutil && \ x_ "$nvm" tmp/gbe setmac "$new_mac" - fx_ newmac "$tmpromdir" -maxdepth 1 -type f -name "*.rom" + fe_ newmac "$tmpromdir" -maxdepth 1 -type f -name "*.rom" printf "\nGbE NVM written to '%s':\n" "$archive" x_ "$nvm" tmp/gbe dump | grep -v "bytes read from file" || : diff --git a/include/lib.sh b/include/lib.sh index 507a37c1..3f5e5d37 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -128,11 +128,22 @@ setvars() printf "%s\n" "${_setvars% }" } +fe_() +{ + find_ex "x_" "$@" +} + fx_() { + find_ex "" "$@" +} + +find_ex() +{ + errx="$1" && shift 1 fd="`mktemp`" xx="$1" && shift 1 - find "$@" | sort > "$fd" || $err "!find $(echo "$@") > \"$fd\"" + $errx find "$@" | sort > "$fd" || $err "!find $(echo "$@") > \"$fd\"" while read -r fx; do "$xx" "$fx" || break; : done < "$fd" -- cgit v1.2.1 From fcc52b986e7612d8bb53e9b51f305c62f611a35b Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 3 May 2025 05:32:01 +0100 Subject: init.sh: unified handling of ./tmp not to be confused with /tmp we use ./tmp inside the lbmk work directory, for large files, because /tmp might not be very big, or might be a tmpfs Signed-off-by: Leah Rowe --- include/init.sh | 6 +++++- include/inject.sh | 8 +------- 2 files changed, 6 insertions(+), 8 deletions(-) (limited to 'include') diff --git a/include/init.sh b/include/init.sh index b8839921..9e0e3a37 100644 --- a/include/init.sh +++ b/include/init.sh @@ -194,6 +194,10 @@ xbmk_create_tmpdir() export TMPDIR="/tmp" export TMPDIR="$(mktemp -d -t xbmk_XXXXXXXX)" xbmktmp="$TMPDIR" + + # /tmp might be a tmpfs, so for large files we use ./tmp, + # not to be confused with xbmktmp (xbmktmp points to /tmp) + x_ mkdir -p tmp } xbmk_lock() @@ -219,7 +223,7 @@ xbmk_child_exec() { xbmk_rval=0 ( x_ ./mk "$@" ) || xbmk_rval=1 - rm -Rf "$xbmktmp" || xbmk_rval=1 + rm -Rf tmp "$xbmktmp" || xbmk_rval=1 rm -f lock || xbmk_rval=1 exit $xbmk_rval } diff --git a/include/inject.sh b/include/inject.sh index 2e821d86..26bcd02f 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -148,8 +148,6 @@ extract_intel_me() chkvars ME11delta ME11version ME11sku ME11pch [ "$ME11bootguard" = "y" ] && x_ ./mk -f deguard - x_ mkdir -p tmp - extract_intel_me_bruteforce if [ "$ME11bootguard" = "y" ]; then apply_me11_deguard_mod @@ -281,7 +279,6 @@ extract_sch5545ec() extract_tbfw() { chkvars TBFW_size # size in bytes, matching TBFW's flash IC - x_ mkdir -p tmp x_ rm -f tmp/tb.bin && fe_ copy_tbfw "$appdir" -type f -name "TBT.bin" @@ -418,8 +415,6 @@ patch_release_roms() hashfile="$_hashes" && break; : done - x_ mkdir -p "tmp" - if readkconfig; then fe_ prep_rom "$tmpromdir" -maxdepth 1 -type f -name "*.rom" [ "$nukemode" != "nuke" ] || \ @@ -551,7 +546,6 @@ insert() elif [ "$nukemode" = "nuke" ]; then x_ "$cbfstool" "$rom" remove -n "$cbfsname" elif [ "$_t" = "stage" ]; then # the only stage we handle is refcode - x_ mkdir -p tmp x_ rm -f "tmp/refcode" "$rmodtool" -i "$_dest" -o "tmp/refcode" || "!reloc refcode" "$cbfstool" "$rom" add-stage -f "tmp/refcode" -n "$cbfsname" \ @@ -567,7 +561,7 @@ modify_mac() { [ -n "$CONFIG_GBE_BIN_PATH" ] || return 1 - x_ mkdir -p tmp && x_ cp "${CONFIG_GBE_BIN_PATH##*../}" tmp/gbe + x_ cp "${CONFIG_GBE_BIN_PATH##*../}" tmp/gbe [ "$new_mac" != "restore" ] && x_ make -C util/nvmutil && \ x_ "$nvm" tmp/gbe setmac "$new_mac" -- cgit v1.2.1 From 0ffaf5c7331ae0fac9db8cf8a2b670e156fad7e9 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 3 May 2025 05:33:02 +0100 Subject: init.sh: Explicitly create the xbmktmp directory mktemp would normally do it, but we must not rely on that Signed-off-by: Leah Rowe --- include/init.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/init.sh b/include/init.sh index 9e0e3a37..c40894a1 100644 --- a/include/init.sh +++ b/include/init.sh @@ -197,7 +197,7 @@ xbmk_create_tmpdir() # /tmp might be a tmpfs, so for large files we use ./tmp, # not to be confused with xbmktmp (xbmktmp points to /tmp) - x_ mkdir -p tmp + x_ mkdir -p "$xbmktmp" tmp } xbmk_lock() -- cgit v1.2.1 From a17875c34593cf966e61aacb9285f324723bb245 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 3 May 2025 05:57:39 +0100 Subject: lib.sh find_ex: explicitly create the tmp file Signed-off-by: Leah Rowe --- include/lib.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/lib.sh b/include/lib.sh index 3f5e5d37..8bad16ce 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -141,7 +141,7 @@ fx_() find_ex() { errx="$1" && shift 1 - fd="`mktemp`" + fd="`mktemp`" && x_ rm -f "$fd" && x_ touch rm -f "$fd" xx="$1" && shift 1 $errx find "$@" | sort > "$fd" || $err "!find $(echo "$@") > \"$fd\"" while read -r fx; do -- cgit v1.2.1 From 44a1cc9ef85626a0d45c7b838a3637ec9f316540 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 3 May 2025 06:23:10 +0100 Subject: util/nvmutil: use x, not ?, for random characters A user reported that '?' causes an error on zsh. See: https://codeberg.org/libreboot/lbmk/issues/261 For example: ./mk inject libreboot-XXXXXX.tar.xz setmac ??:??:??:??:??:?? The user got: zsh: no matches found: ??:??:??:??:??:?? The mitigation here is to double-quote, e.g.: ./mk inject libreboot-XXXXXX.tar.xz setmac "??:??:??:??:??:??" However, a lot of people won't do that. Therefore, I will retain the current behaviour but support x/X for randomness. Now lbmk uses x by default, instead. I will now update the documentation, accordingly. Signed-off-by: Leah Rowe --- include/inject.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index 26bcd02f..beaebf4d 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -328,7 +328,7 @@ inject() eval "`setvars "" nukemode new_mac xchanged`" archive="$1"; - new_mac="??:??:??:??:??:??" + new_mac="xx:xx:xx:xx:xx:xx" [ $# -gt 1 ] && case "$2" in nuke) -- cgit v1.2.1 From 308df9ca4061e66ca1bdfb4c5c23cc4153d3ce31 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 3 May 2025 06:28:14 +0100 Subject: inject.sh: always re-build nvmutil it's not a lot of code, and takes less than a second. the previous change uses x instead of ?, but this would cause an error if the nvmutil was already built, because the makefile might cause a build to be skipped. therefore, force a re-build to mitigate the error. Signed-off-by: Leah Rowe --- include/inject.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index beaebf4d..8fb0a34e 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -562,7 +562,8 @@ modify_mac() [ -n "$CONFIG_GBE_BIN_PATH" ] || return 1 x_ cp "${CONFIG_GBE_BIN_PATH##*../}" tmp/gbe - [ "$new_mac" != "restore" ] && x_ make -C util/nvmutil && \ + [ "$new_mac" != "restore" ] && x_ make -C util/nvmutil clean && \ + x_ make -C util/nvmutil && \ x_ "$nvm" tmp/gbe setmac "$new_mac" fe_ newmac "$tmpromdir" -maxdepth 1 -type f -name "*.rom" -- cgit v1.2.1 From 0b09d970732cb396f1868c41ee9842b4a96f0c36 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 3 May 2025 06:35:48 +0100 Subject: inject.sh: Only build nvmutil once Signed-off-by: Leah Rowe --- include/inject.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index 8fb0a34e..0aefc210 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -341,6 +341,11 @@ inject() esac [ "$new_mac" = "keep" ] && new_mac="" + if [ -n "$new_mac" ] && [ "$new_mac" != "restore" ]; then + x_ make -C util/nvmutil clean + x_ make -C util/nvmutil + fi + check_release "$archive" || $err "'$archive' is not a release archive" readcfg && need_files="y" @@ -562,8 +567,7 @@ modify_mac() [ -n "$CONFIG_GBE_BIN_PATH" ] || return 1 x_ cp "${CONFIG_GBE_BIN_PATH##*../}" tmp/gbe - [ "$new_mac" != "restore" ] && x_ make -C util/nvmutil clean && \ - x_ make -C util/nvmutil && \ + [ -n "$new_mac" ] && [ "$new_mac" != "restore" ] && \ x_ "$nvm" tmp/gbe setmac "$new_mac" fe_ newmac "$tmpromdir" -maxdepth 1 -type f -name "*.rom" -- cgit v1.2.1 From 7fadb17fd9ed7e916f62849132d73648ea9a099d Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 3 May 2025 06:36:43 +0100 Subject: lib.sh: Fix bad touch command Signed-off-by: Leah Rowe --- include/lib.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/lib.sh b/include/lib.sh index 8bad16ce..3c603bae 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -141,7 +141,7 @@ fx_() find_ex() { errx="$1" && shift 1 - fd="`mktemp`" && x_ rm -f "$fd" && x_ touch rm -f "$fd" + fd="`mktemp`" && x_ rm -f "$fd" && x_ touch "$fd" xx="$1" && shift 1 $errx find "$@" | sort > "$fd" || $err "!find $(echo "$@") > \"$fd\"" while read -r fx; do -- cgit v1.2.1 From 0f7b3691abafdbb46ea8e7bc95332da9d4be80d2 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 3 May 2025 06:41:20 +0100 Subject: lib.sh: redirect find errors to /dev/null this silences confusing error messages that the user sees on the screen, that are actually benign, and it will thus reduce the number of people who ask questions on #libreboot irc Signed-off-by: Leah Rowe --- include/lib.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/lib.sh b/include/lib.sh index 3c603bae..d58716c3 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -143,7 +143,8 @@ find_ex() errx="$1" && shift 1 fd="`mktemp`" && x_ rm -f "$fd" && x_ touch "$fd" xx="$1" && shift 1 - $errx find "$@" | sort > "$fd" || $err "!find $(echo "$@") > \"$fd\"" + $errx find "$@" 2>/dev/null | sort > "$fd" || \ + $err "!find $(echo "$@") > \"$fd\"" while read -r fx; do "$xx" "$fx" || break; : done < "$fd" -- cgit v1.2.1 From 00d22f20829251f55cd2e859d6fae9a61220c072 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 3 May 2025 06:53:25 +0100 Subject: lbmk: Unified local ./tmp handling Make it an absolute directory, relative to xbmktmp. Signed-off-by: Leah Rowe --- include/git.sh | 2 +- include/init.sh | 8 +++++--- include/inject.sh | 32 +++++++++++++++++--------------- 3 files changed, 23 insertions(+), 19 deletions(-) (limited to 'include') diff --git a/include/git.sh b/include/git.sh index 9be79527..37f5bbae 100644 --- a/include/git.sh +++ b/include/git.sh @@ -5,7 +5,7 @@ eval "`setvars "" loc url bkup_url subfile subhash subrepo subrepo_bkup \ depend subfile_bkup repofail`" -tmpgit="$xbmkpwd/tmp/gitclone" +tmpgit="$xbmklocal/gitclone" fetch_targets() { diff --git a/include/init.sh b/include/init.sh index c40894a1..a5180d07 100644 --- a/include/init.sh +++ b/include/init.sh @@ -17,11 +17,13 @@ xbmkpath="$PATH" err="err_" eval "`setvars "" _nogit board reinstall versiondate aur_notice configdir \ - datadir version xbmkpwd relname xbmkpwd xbmktmp python pyver`" + datadir version xbmkpwd relname xbmkpwd xbmktmp python pyver xbmklocal`" xbmk_init() { xbmkpwd="`pwd`" || $err "Cannot generate PWD" + xbmklocal="$xbmkpwd/tmp" + export PWD="$xbmkpwd" if [ $# -gt 0 ] && [ "$1" = "dependencies" ]; then @@ -197,7 +199,7 @@ xbmk_create_tmpdir() # /tmp might be a tmpfs, so for large files we use ./tmp, # not to be confused with xbmktmp (xbmktmp points to /tmp) - x_ mkdir -p "$xbmktmp" tmp + x_ mkdir -p "$xbmktmp" "$xbmklocal" } xbmk_lock() @@ -223,7 +225,7 @@ xbmk_child_exec() { xbmk_rval=0 ( x_ ./mk "$@" ) || xbmk_rval=1 - rm -Rf tmp "$xbmktmp" || xbmk_rval=1 + rm -Rf "$xbmklocal" "$xbmktmp" || xbmk_rval=1 rm -f lock || xbmk_rval=1 exit $xbmk_rval } diff --git a/include/inject.sh b/include/inject.sh index 0aefc210..805415ef 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -14,7 +14,7 @@ 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="$xbmkpwd/tmp/DO_NOT_FLASH" +tmpromdel="$xbmklocal/DO_NOT_FLASH" nvm="util/nvmutil/nvm" ifdtool="elf/ifdtool/default/ifdtool" @@ -142,7 +142,7 @@ extract_intel_me() cdir="$xbmkpwd/$appdir" _me="$xbmkpwd/$_dest" - _metmp="$xbmkpwd/tmp/me.bin" + _metmp="$xbmklocal/me.bin" mfs="" && [ "$ME11bootguard" = "y" ] && mfs="--whitelist MFS" && \ chkvars ME11delta ME11version ME11sku ME11pch @@ -280,15 +280,17 @@ extract_tbfw() { chkvars TBFW_size # size in bytes, matching TBFW's flash IC - x_ rm -f tmp/tb.bin && fe_ copy_tbfw "$appdir" -type f -name "TBT.bin" + tbtmp="$xbmklocal/tb.bin" + x_ rm -f "$tbtmp" && fe_ copy_tbfw "$appdir" -type f -name "TBT.bin" - x_ dd if=/dev/null of=tmp/tb.bin bs=1 seek=$TBFW_size - x_ cp "tmp/tb.bin" "$_dest" + x_ dd if=/dev/null of="$tbtmp" bs=1 seek=$TBFW_size + x_ cp "$tbtmp" "$_dest" } copy_tbfw() { - [ -f "$1" ] && [ ! -L "$1" ] && x_ cp "$1" "tmp/tb.bin" && return 1; : + [ -f "$1" ] && [ ! -L "$1" ] && x_ cp "$1" "$xbmklocal/tb.bin" && \ + return 1; : } extract_fspm() @@ -409,7 +411,7 @@ readcfg() patch_release_roms() { has_hashes="n" - tmpromdir="tmp/DO_NOT_FLASH/bin/$board" + tmpromdir="$xbmklocal/DO_NOT_FLASH/bin/$board" remkdir "${tmpromdir%"/bin/$board"}" x_ tar -xf "$archive" -C "${tmpromdir%"/bin/$board"}" @@ -551,10 +553,10 @@ insert() elif [ "$nukemode" = "nuke" ]; then x_ "$cbfstool" "$rom" remove -n "$cbfsname" elif [ "$_t" = "stage" ]; then # the only stage we handle is refcode - x_ rm -f "tmp/refcode" - "$rmodtool" -i "$_dest" -o "tmp/refcode" || "!reloc refcode" - "$cbfstool" "$rom" add-stage -f "tmp/refcode" -n "$cbfsname" \ - -t stage || $err "$rom: !add ref" + x_ rm -f "$xbmklocal/refcode" + "$rmodtool" -i "$_dest" -o "$xbmklocal/refcode" || "!reloc ref" + "$cbfstool" "$rom" add-stage -f "$xbmklocal/refcode" \ + -n "$cbfsname" -t stage || $err "$rom: !add ref" else "$cbfstool" "$rom" add -f "$_dest" -n "$cbfsname" \ -t $_t $_offset || $err "$rom !add $_t ($_dest)" @@ -566,14 +568,14 @@ modify_mac() { [ -n "$CONFIG_GBE_BIN_PATH" ] || return 1 - x_ cp "${CONFIG_GBE_BIN_PATH##*../}" tmp/gbe + x_ cp "${CONFIG_GBE_BIN_PATH##*../}" "$xbmklocal/gbe" [ -n "$new_mac" ] && [ "$new_mac" != "restore" ] && \ - x_ "$nvm" tmp/gbe setmac "$new_mac" + 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" tmp/gbe dump | grep -v "bytes read from file" || : + x_ "$nvm" "$xbmklocal/gbe" dump | grep -v "bytes read from file" || : [ "$new_mac" = "restore" ] && \ printf "\nDefault GbE file '%s' written, unmodified.\n" \ @@ -583,5 +585,5 @@ modify_mac() newmac() { e "$1" f && xchanged="y" && x_ \ - "$ifdtool" $ifdprefix -i GbE:tmp/gbe "$1" -O "$1"; : + "$ifdtool" $ifdprefix -i GbE:"$xbmklocal/gbe" "$1" -O "$1"; : } -- cgit v1.2.1 From 498f5a26cc82db8063c37876058091e1b1279d45 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 3 May 2025 07:04:34 +0100 Subject: init.sh: Always create xbmklocal If we're in a release work directory, TMPDIR is already set, so the local ./tmp won't be created, which would lead to an error. Fix it by creating xbmklocal before checking TMPDIR. Signed-off-by: Leah Rowe --- include/init.sh | 2 ++ 1 file changed, 2 insertions(+) (limited to 'include') diff --git a/include/init.sh b/include/init.sh index a5180d07..c4650576 100644 --- a/include/init.sh +++ b/include/init.sh @@ -186,6 +186,8 @@ xbmk_git_init() xbmk_create_tmpdir() { + x_ mkdir -p "$xbmklocal" + # unify all temporary files/directories in a single TMPDIR [ -z "${TMPDIR+x}" ] || [ "${TMPDIR%_*}" = "/tmp/xbmk" ] || \ unset TMPDIR -- cgit v1.2.1 From 530e4109a2b4ad2d26c3e29eda652e2ab180cf84 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 3 May 2025 07:05:38 +0100 Subject: init.sh: *Re-create* tmpdirs on parent instance To make sure any old files are removed, always re-create. Signed-off-by: Leah Rowe --- include/init.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/init.sh b/include/init.sh index c4650576..3f813ea7 100644 --- a/include/init.sh +++ b/include/init.sh @@ -201,7 +201,7 @@ xbmk_create_tmpdir() # /tmp might be a tmpfs, so for large files we use ./tmp, # not to be confused with xbmktmp (xbmktmp points to /tmp) - x_ mkdir -p "$xbmktmp" "$xbmklocal" + remkdir "$xbmktmp" "$xbmklocal" } xbmk_lock() -- cgit v1.2.1 From 8de0ed811fb9bc48659f95918a36317f24be3d8e Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 3 May 2025 07:17:21 +0100 Subject: inject.sh: Stricter TBFW handling Don't copy it until it has been padded properly. Otherwise, erroneous padding would result in an error, and who knows what would be left in vendorfiles/ ? Signed-off-by: Leah Rowe --- include/inject.sh | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index 805415ef..c5e41f6d 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -278,19 +278,23 @@ 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 # size in bytes, matching TBFW's flash IC - - tbtmp="$xbmklocal/tb.bin" - x_ rm -f "$tbtmp" && fe_ copy_tbfw "$appdir" -type f -name "TBT.bin" - - x_ dd if=/dev/null of="$tbtmp" bs=1 seek=$TBFW_size - x_ cp "$tbtmp" "$_dest" + chkvars TBFW_size + fe_ copy_tbfw "$appdir" -type f -name "TBT.bin" + [ -f "$_dest" ] || $err "$board: Could not extract tbfw"; : } copy_tbfw() { - [ -f "$1" ] && [ ! -L "$1" ] && x_ cp "$1" "$xbmklocal/tb.bin" && \ - return 1; : + [ -f "$1" ] || return 0 + [ -L "$1" ] && return 0 + + tbtmp="$xbmklocal/tb.bin" + x_ rm -f "$tbtmp" + + x_ dd if=/dev/null of="$1" bs=1 seek=$TBFW_size + x_ mv "$1" "$_dest" + + return 1 } extract_fspm() -- cgit v1.2.1 From bf569d2b4dcbf8efc648da1a87803eefd4b892dc Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 3 May 2025 07:20:48 +0100 Subject: inject.sh: Remove redundant code in copy_tbfw We don't use the tbtmp variable anymore, in this function. Signed-off-by: Leah Rowe --- include/inject.sh | 3 --- 1 file changed, 3 deletions(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index c5e41f6d..b0f3f502 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -288,9 +288,6 @@ copy_tbfw() [ -f "$1" ] || return 0 [ -L "$1" ] && return 0 - tbtmp="$xbmklocal/tb.bin" - x_ rm -f "$tbtmp" - x_ dd if=/dev/null of="$1" bs=1 seek=$TBFW_size x_ mv "$1" "$_dest" -- cgit v1.2.1 From 72f4412a52df60bd2d3f01a4c8dc138334ffe434 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 3 May 2025 13:15:40 +0100 Subject: inject.sh: simplified fsp extraction we know that _dest is always what's set in the coreboot config, without the ../../../ in it, so just copy both files in a single function, and call the function twice. if both files are done on the first call, the second call will be skipped. if only the first file was done on the first call, running the download script again will skip the first one, and grab the second one. this also avoids having to run the decat function twice, in most cases, so it's a tiny optimisation. this optimisation only works if both fsp files (s and m) are to be extracted into the same directory, which is the case anyway, and this will always be the case. Signed-off-by: Leah Rowe --- include/inject.sh | 51 +++++++++++++-------------------------------------- 1 file changed, 13 insertions(+), 38 deletions(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index b0f3f502..a9d1350a 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -95,9 +95,9 @@ getfiles() # therefore, handle them separately, in case one of them is libre; if # one of them was, the path wouldn't be set. # - [ -z "$CONFIG_FSP_M_FILE" ] || fetch "fspm" "$CONFIG_FSP_FD_PATH" \ + [ -z "$CONFIG_FSP_M_FILE" ] || fetch "fsp" "$CONFIG_FSP_FD_PATH" \ "$CONFIG_FSP_FD_PATH" "$FSPFD_hash" "$CONFIG_FSP_M_FILE" copy - [ -z "$CONFIG_FSP_S_FILE" ] || fetch "fsps" "$CONFIG_FSP_FD_PATH" \ + [ -z "$CONFIG_FSP_S_FILE" ] || fetch "fsp" "$CONFIG_FSP_FD_PATH" \ "$CONFIG_FSP_FD_PATH" "$FSPFD_hash" "$CONFIG_FSP_S_FILE" copy; : } @@ -111,14 +111,12 @@ fetch() [ "$5" = "/dev/null" ] && return 0 _dl="$XBMK_CACHE/file/$dlsum" - if [ "$dl_type" = "fspm" ] || [ "$dl_type" = "fsps" ]; then - # HACK: if grabbing fsp from coreboot, fix the path for lbmk - for _cdl in dl dl_bkup; do - eval "$_cdl=\"\${$_cdl##*../}\"; _cdp=\"\$$_cdl\"" - [ -f "$_cdp" ] || _cdp="$cbdir/$_cdp" - [ -f "$_cdp" ] && eval "$_cdl=\"$_cdp\"" - done - fi + # HACK: if grabbing fsp from coreboot, fix the path for lbmk + [ "$dl_type" = "fsp" ] && for _cdl in dl dl_bkup; do + eval "$_cdl=\"\${$_cdl##*../}\"; _cdp=\"\$$_cdl\"" + [ -f "$_cdp" ] || _cdp="$cbdir/$_cdp" + [ -f "$_cdp" ] && eval "$_cdl=\"$_cdp\"" + done; : dlop="curl" && [ $# -gt 5 ] && dlop="$6" xbmkget "$dl" "$dl_bkup" "$_dl" "$dlsum" "$dlop" @@ -205,12 +203,9 @@ apply_me11_deguard_mod() extract_archive() { - if [ $# -gt 2 ]; then - if [ "$3" = "fspm" ] || [ "$3" = "fsps" ]; then - decat_fspfd "$1" "$2" - return 0 - fi - fi + [ $# -gt 2 ] && [ "$3" = "fsp" ] && x_ python \ + "$cbdir/3rdparty/fsp/Tools/SplitFspBin.py" split -f "$1" -o "$2" \ + -n "Fsp.fd" && return 0 innoextract "$1" -d "$2" || python "$pfs_extract" "$1" -e || 7z x \ "$1" -o"$2" || unar "$1" -o "$2" || unzip "$1" -d "$2" || return 1 @@ -219,15 +214,6 @@ extract_archive() $err "!mv '${_dl}_extracted' '$2' - $dontflash"; : } -decat_fspfd() -{ - _fspfd="$1" - _fspdir="$2" - _fspsplit="$cbdir/3rdparty/fsp/Tools/SplitFspBin.py" - - x_ $python "$_fspsplit" split -f "$_fspfd" -o "$_fspdir" -n "Fsp.fd" -} - extract_kbc1126ec() { x_ e "$kbc1126_ec_dump" f @@ -294,20 +280,9 @@ copy_tbfw() return 1 } -extract_fspm() -{ - copy_fsp M; : -} - -extract_fsps() -{ - copy_fsp S; : -} - -# this copies the fsp s/m; re-base is handled by ./mk inject -copy_fsp() +extract_fsp() { - x_ cp "$appdir/Fsp_$1.fd" "$_dest" + x_ cp "$appdir/"Fsp_*.fd "${_dest%/*}" } fail_inject() -- cgit v1.2.1 From 5499ae66bd8e7c36fd6f298b68365d39672a2cfa Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 3 May 2025 13:35:28 +0100 Subject: inject.sh: simplify extract_archive() Signed-off-by: Leah Rowe --- include/inject.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index a9d1350a..a200981f 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -210,8 +210,7 @@ extract_archive() innoextract "$1" -d "$2" || python "$pfs_extract" "$1" -e || 7z x \ "$1" -o"$2" || unar "$1" -o "$2" || unzip "$1" -d "$2" || return 1 - [ ! -d "${_dl}_extracted" ] || cp -R "${_dl}_extracted" "$2" || \ - $err "!mv '${_dl}_extracted' '$2' - $dontflash"; : + [ ! -d "${_dl}_extracted" ] || x_ cp -R "${_dl}_extracted" "$2"; : } extract_kbc1126ec() -- cgit v1.2.1 From 46b968a6e859ca7a0406c1c446ff1a53d74ad887 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 3 May 2025 13:49:49 +0100 Subject: inject.sh: minor code cleanup Signed-off-by: Leah Rowe --- include/inject.sh | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index a200981f..9bfda2db 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -228,9 +228,7 @@ extract_kbc1126ec() ) || $err "$board: can't extract kbc1126 ec firmware - $dontflash" x_ e "$appdir/ec.bin.fw1" f && x_ e "$appdir/ec.bin.fw2" f - - cp "$appdir/"ec.bin.fw* "${_dest%/*}/" || \ - $err "!cp 1126ec $_dest - $dontflash"; : + x_ cp "$appdir/"ec.bin.fw* "${_dest%/*}/" } extract_e6400vga() @@ -318,10 +316,8 @@ inject() esac [ "$new_mac" = "keep" ] && new_mac="" - if [ -n "$new_mac" ] && [ "$new_mac" != "restore" ]; then - x_ make -C util/nvmutil clean - x_ make -C util/nvmutil - fi + [ -n "$new_mac" ] && [ "$new_mac" != "restore" ] && \ + x_ make -C util/nvmutil clean && x_ make -C util/nvmutil check_release "$archive" || $err "'$archive' is not a release archive" @@ -510,11 +506,10 @@ insert() _offset="" - if [ "$_t" = "fsp" ]; then - [ $# -gt 3 ] && _offset="$4" - else - [ $# -gt 3 ] && _offset="-b $4" && [ -z "$4" ] && \ - $err "insert $*, $rom: offset given but empty (undefined)" + if [ "$_t" = "fsp" ] && [ $# -gt 3 ]; then + _offset="$4" + elif [ $# -gt 3 ] && _offset="-b $4" && [ -z "$4" ]; then + $err "insert $*, $rom: offset given but empty (undefined)" fi [ "$nukemode" = "nuke" ] || x_ e "$_dest" f @@ -551,10 +546,6 @@ modify_mac() printf "\nGbE NVM written to '%s':\n" "$archive" x_ "$nvm" "$xbmklocal/gbe" dump | grep -v "bytes read from file" || : - - [ "$new_mac" = "restore" ] && \ - printf "\nDefault GbE file '%s' written, unmodified.\n" \ - "${CONFIG_GBE_BIN_PATH##*../}"; : } newmac() -- cgit v1.2.1 From aa4083443b14335c8ada088034434b584aacc789 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 3 May 2025 18:30:37 +0100 Subject: mk: Allow use of x_ on prefix functions Use this for the sha512sum command, on the main mk script at the function check_project_hashes(). Signed-off-by: Leah Rowe --- include/lib.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/lib.sh b/include/lib.sh index d58716c3..50813352 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -146,7 +146,7 @@ find_ex() $errx find "$@" 2>/dev/null | sort > "$fd" || \ $err "!find $(echo "$@") > \"$fd\"" while read -r fx; do - "$xx" "$fx" || break; : + $xx "$fx" || break; : done < "$fd" x_ rm -f "$fd" } -- cgit v1.2.1 From b6a2dc4ea3ca18bff174014d1724aebd5dc28b84 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 08:10:36 +0100 Subject: init.sh: tidy up pathdir creation we can use remkdir here. it does the same thing. Signed-off-by: Leah Rowe --- include/init.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'include') diff --git a/include/init.sh b/include/init.sh index 3f813ea7..7026594a 100644 --- a/include/init.sh +++ b/include/init.sh @@ -212,8 +212,7 @@ xbmk_lock() xbmk_create_pathdirs() { - x_ rm -Rf "$XBMK_CACHE/xbmkpath" "$XBMK_CACHE/gnupath" - x_ mkdir -p "$XBMK_CACHE/gnupath" "$XBMK_CACHE/xbmkpath" + remkdir "$XBMK_CACHE/gnupath" "$XBMK_CACHE/xbmkpath" export PATH="$XBMK_CACHE/xbmkpath:$XBMK_CACHE/gnupath:$PATH" ( # set up python v3.x in PATH, in case it's not set up correctly. -- cgit v1.2.1 From 93ba36ae456cad1e0766c1020ac2dfdb013b6411 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 08:19:17 +0100 Subject: rom.sh: tidy up copyps1bios() Signed-off-by: Leah Rowe --- include/rom.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'include') diff --git a/include/rom.sh b/include/rom.sh index f74912af..ec464d85 100644 --- a/include/rom.sh +++ b/include/rom.sh @@ -29,8 +29,7 @@ mkserprog() copyps1bios() { - x_ rm -Rf bin/playstation - x_ mkdir -p bin/playstation + remkdir "bin/playstation" x_ cp src/pcsx-redux/src/mips/openbios/openbios.bin bin/playstation printf "MIT License\n\nCopyright (c) 2019-2024 PCSX-Redux authors\n\n" \ -- cgit v1.2.1 From 7acec7a3a1d40a38b88b56e9c56087da263f30d1 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 08:29:19 +0100 Subject: init.sh: simplify dependencies handling Signed-off-by: Leah Rowe --- include/init.sh | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'include') diff --git a/include/init.sh b/include/init.sh index 7026594a..fc321605 100644 --- a/include/init.sh +++ b/include/init.sh @@ -26,10 +26,7 @@ xbmk_init() export PWD="$xbmkpwd" - if [ $# -gt 0 ] && [ "$1" = "dependencies" ]; then - install_packages "$@" || exit 1 - exit 0 - fi + [ $# -gt 0 ] && [ "$1" = "dependencies" ] && x_ xbmkpkg "$@" && exit 0 id -u 1>/dev/null 2>/dev/null || $err "suid check failed (id -u)" [ "$(id -u)" != "0" ] || $err "this command as root is not permitted" @@ -40,7 +37,7 @@ xbmk_init() done } -install_packages() +xbmkpkg() { [ $# -lt 2 ] && $err "fewer than two arguments" [ $# -gt 2 ] && reinstall="$3" -- cgit v1.2.1 From 7392f6fc8ecbff10661be6ae66306afd89f1a3e3 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 08:33:17 +0100 Subject: init.sh: move non-init functions to lib.sh these were missed in a previous cleanup Signed-off-by: Leah Rowe --- include/init.sh | 16 ---------------- include/lib.sh | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 16 deletions(-) (limited to 'include') diff --git a/include/init.sh b/include/init.sh index fc321605..4807e1cf 100644 --- a/include/init.sh +++ b/include/init.sh @@ -51,22 +51,6 @@ xbmkpkg() printf "You need AUR packages: %s\n" "$aur_notice" 1>&2; : } -setcfg() -{ - [ $# -gt 1 ] && printf "e \"%s\" f missing && return %s;\n" "$1" "$2" - [ $# -gt 1 ] || \ - printf "e \"%s\" f not && %s \"Missing config\";\n" "$1" "$err" - printf ". \"%s\" || %s \"Could not read config\";\n" "$1" "$err" -} - -chkvars() -{ - for var in "$@"; do - eval "[ -n \"\${$var+x}\" ] || \$err \"$var unset\"" - eval "[ -n \"\$$var\" ] || \$err \"$var unset\"" - done; : -} - xbmk_set_pyver() { pyv="import sys; print(sys.version_info[:])" diff --git a/include/lib.sh b/include/lib.sh index 50813352..93680cee 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -128,6 +128,22 @@ setvars() printf "%s\n" "${_setvars% }" } +setcfg() +{ + [ $# -gt 1 ] && printf "e \"%s\" f missing && return %s;\n" "$1" "$2" + [ $# -gt 1 ] || \ + printf "e \"%s\" f not && %s \"Missing config\";\n" "$1" "$err" + printf ". \"%s\" || %s \"Could not read config\";\n" "$1" "$err" +} + +chkvars() +{ + for var in "$@"; do + eval "[ -n \"\${$var+x}\" ] || \$err \"$var unset\"" + eval "[ -n \"\$$var\" ] || \$err \"$var unset\"" + done; : +} + fe_() { find_ex "x_" "$@" -- cgit v1.2.1 From 6e447876cca283434163328ce08b6e9d0b5a1d24 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 08:47:12 +0100 Subject: init.sh: tidy up the python version check Signed-off-by: Leah Rowe --- include/init.sh | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'include') diff --git a/include/init.sh b/include/init.sh index 4807e1cf..9f6e7162 100644 --- a/include/init.sh +++ b/include/init.sh @@ -60,11 +60,9 @@ xbmk_set_pyver() pybin "$python" 1>/dev/null || pyver="" [ -z "$pyver" ] || "`pybin "$python"`" -c "$pyv" 1>/dev/null \ 2>/dev/null || $err "Cannot detect host Python version." - if [ -n "$pyver" ]; then - pyver="$("$(pybin "$python")" -c "$pyv" | awk '{print $1}')" - pyver="${pyver#(}" - pyver="${pyver%,}" - fi + [ -n "$pyver" ] && \ + pyver="$("$(pybin "$python")" -c "$pyv" | awk '{print $1}')" && \ + pyver="${pyver#(}" && pyver="${pyver%,}" [ "${pyver%%.*}" = "3" ] || $err "Bad python version (must by 3.x)"; : } @@ -94,8 +92,7 @@ pybin() [ -e "$pypath/$1" ] && [ ! -d "$pypath/$1" ] && \ [ -x "$pypath/$1" ] && printf "%s/%s\n" "$pypath" "$1" && \ return 0 - done - [ $venv -gt 0 ] && return 1 + done && return 1 # Defer to normal command -v if not a venv command -v "$1" 2>/dev/null || return 1 -- cgit v1.2.1 From 439020fbda5ca7862bf2eaf4d59ab68aae230c33 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 08:47:56 +0100 Subject: inject.sh: remove useless comment block Signed-off-by: Leah Rowe --- include/inject.sh | 5 ----- 1 file changed, 5 deletions(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index 9bfda2db..d956cdd1 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -90,11 +90,6 @@ getfiles() "$MRC_url_bkup" "$MRC_hash" "$CONFIG_REFCODE_BLOB_FILE" [ -z "$CONFIG_LENOVO_TBFW_BIN" ] || fetch "tbfw" "$TBFW_url" \ "$TBFW_url_bkup" "$TBFW_hash" "$CONFIG_LENOVO_TBFW_BIN" - # - # in the future, we might have libre fsp-s and then fsp-m. - # therefore, handle them separately, in case one of them is libre; if - # one of them was, the path wouldn't be set. - # [ -z "$CONFIG_FSP_M_FILE" ] || fetch "fsp" "$CONFIG_FSP_FD_PATH" \ "$CONFIG_FSP_FD_PATH" "$FSPFD_hash" "$CONFIG_FSP_M_FILE" copy [ -z "$CONFIG_FSP_S_FILE" ] || fetch "fsp" "$CONFIG_FSP_FD_PATH" \ -- cgit v1.2.1 From b19c4f8f674b04fdaa0b07b2c43766a76545ed09 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 08:50:23 +0100 Subject: inject.sh: tidy up TBFW handling Signed-off-by: Leah Rowe --- include/inject.sh | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index d956cdd1..837f34c1 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -256,20 +256,14 @@ 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 && fe_ copy_tbfw "$appdir" -type f -name "TBT.bin" [ -f "$_dest" ] || $err "$board: Could not extract tbfw"; : } copy_tbfw() { - [ -f "$1" ] || return 0 - [ -L "$1" ] && return 0 - - x_ dd if=/dev/null of="$1" bs=1 seek=$TBFW_size - x_ mv "$1" "$_dest" - - return 1 + [ -f "$1" ] && [ ! -L "$1" ] && x_ dd if=/dev/null of="$1" bs=1 \ + seek=$TBFW_size && x_ mv "$1" "$_dest" && return 1; : } extract_fsp() -- cgit v1.2.1 From 91bb6cbede0405f764c3f2a686fbba5c7aa9f2fb Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 09:10:24 +0100 Subject: lib.sh: Make err_ always exit no matter what Always certainly redundant, since if -u -e isn't set, it'll continue to exit anyway. However, we want to be pedantic about this, since the safety of lbmk relies entirely on this function NOT misbehaving. Signed-off-by: Leah Rowe --- include/lib.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/lib.sh b/include/lib.sh index 93680cee..c5790bf7 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -174,6 +174,6 @@ x_() err_() { - printf "ERROR %s: %s\n" "$0" "$1" 1>&2 + [ $# -lt 1 ] || printf "ERROR %s: %s\n" "$0" "$1" 1>&2 || : exit 1 } -- cgit v1.2.1 From 59c94664e3e3382375e79ee478fc68d3802d794a Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 09:14:09 +0100 Subject: lib.sh: Make x_ err if first arg is empty Signed-off-by: Leah Rowe --- include/lib.sh | 1 + 1 file changed, 1 insertion(+) (limited to 'include') diff --git a/include/lib.sh b/include/lib.sh index c5790bf7..abf4de3b 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -169,6 +169,7 @@ find_ex() x_() { + [ $# -lt 1 ] || [ -n "$1" ] || $err "Empty first arg: x_ $(echo "$@")" [ $# -lt 1 ] || "$@" || $err "Unhandled error for: $(echo "$@")"; : } -- cgit v1.2.1 From 3f7dc2a55f5b2273e73e17e4cec75faffe65740f Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 09:17:23 +0100 Subject: lib.sh: rename errx to xmsg Signed-off-by: Leah Rowe --- include/lib.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/lib.sh b/include/lib.sh index abf4de3b..b2888fb6 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -156,10 +156,10 @@ fx_() find_ex() { - errx="$1" && shift 1 + xmsg="$1" && shift 1 fd="`mktemp`" && x_ rm -f "$fd" && x_ touch "$fd" xx="$1" && shift 1 - $errx find "$@" 2>/dev/null | sort > "$fd" || \ + $xmsg find "$@" 2>/dev/null | sort > "$fd" || \ $err "!find $(echo "$@") > \"$fd\"" while read -r fx; do $xx "$fx" || break; : -- cgit v1.2.1 From 54291ebb7209c314bb52f507bc6a1ecf2a28fbc9 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 09:56:21 +0100 Subject: lbmk: MUCH safer err function Don't directly call a variable. Call a function that checks the variable instead. The new err function also checks whether an exit was actually done, and exits 1 if not. If an exit was done by the given function, but the exit was zero, this is also corrected to perform an exit 1. This fixes a longstanding design flaw of lbmk. Signed-off-by: Leah Rowe --- include/git.sh | 24 ++++++++--------- include/init.sh | 38 +++++++++++++-------------- include/inject.sh | 78 +++++++++++++++++++++++++++---------------------------- include/lib.sh | 63 +++++++++++++++++++++++++++++++------------- include/mrc.sh | 10 +++---- include/rom.sh | 18 ++++++------- 6 files changed, 129 insertions(+), 102 deletions(-) (limited to 'include') diff --git a/include/git.sh b/include/git.sh index 37f5bbae..ded12625 100644 --- a/include/git.sh +++ b/include/git.sh @@ -63,7 +63,7 @@ git_prep() [ "$XBMK_RELEASE" = "y" ] && rmgit "$tmpgit" [ "$_loc" = "${_loc%/*}" ] || x_ mkdir -p "${_loc%/*}" - mv "$tmpgit" "$_loc" || $err "git_prep: !mv $tmpgit $_loc" + mv "$tmpgit" "$_loc" || err "git_prep: !mv $tmpgit $_loc" } # return 0 if project is single-tree, otherwise 1 @@ -80,20 +80,20 @@ fetch_submodule() mcfgdir="$mdir/${1##*/}"; eval \ "`setvars "" subhash subrepo subrepo_bkup subfile subfile_bkup st`" [ ! -f "$mcfgdir/module.cfg" ] || . "$mcfgdir/module.cfg" || \ - $err "! . $mcfgdir/module.cfg" + err "! . $mcfgdir/module.cfg" for xt in repo file; do _seval="if [ -n \"\$sub$xt\" ] || [ -n \"\$sub${xt}_bkup\" ]" eval "$_seval; then st=\"\$st \$xt\"; fi" done - st="${st# }" && [ "$st" = "repo file" ] && $err "$mdir: repo+file" + st="${st# }" && [ "$st" = "repo file" ] && err "$mdir: repo+file" [ -z "$st" ] && return 0 # subrepo/subfile not defined chkvars "sub${st}" "sub${st}_bkup" "subhash" [ "$st" = "file" ] && xbmkget "$subfile" "$subfile_bkup" \ "$tmpgit/$1" "$subhash" && return 0 - rm -Rf "$tmpgit/$1" || $err "!rm '$mdir' '$1'" + rm -Rf "$tmpgit/$1" || err "!rm '$mdir' '$1'" tmpclone "$subrepo" "$subrepo_bkup" "$tmpgit/$1" "$subhash" \ "$mdir/${1##*/}/patches" } @@ -105,25 +105,25 @@ tmpclone() repofail="n" - [ $# -lt 6 ] || rm -Rf "$3" || $err "git retry: !rm $3 ($1)" + [ $# -lt 6 ] || rm -Rf "$3" || err "git retry: !rm $3 ($1)" repodir="$XBMK_CACHE/repo/${1##*/}" && [ $# -gt 5 ] && repodir="$3" - mkdir -p "$XBMK_CACHE/repo" || $err "!rmdir $XBMK_CACHE/repo" + mkdir -p "$XBMK_CACHE/repo" || err "!rmdir $XBMK_CACHE/repo" if [ "$livepull" = "y" ] && [ ! -d "$repodir" ]; then git clone "$1" "$repodir" || git clone $2 "$repodir" || \ - $err "!clone $1 $2 $repodir $4 $5" # + err "!clone $1 $2 $repodir $4 $5" # elif [ -d "$repodir" ] && [ $# -lt 6 ]; then git -C "$repodir" pull || sleep 3 || git -C "$repodir" pull \ || sleep 3 || git -C "$repodir" pull || : fi ( - [ $# -gt 5 ] || git clone "$repodir" "$3" || $err "!clone $repodir $3" - git -C "$3" reset --hard "$4" || $err "!reset $1 $2 $3 $4 $5" + [ $# -gt 5 ] || git clone "$repodir" "$3" || err "!clone $repodir $3" + git -C "$3" reset --hard "$4" || err "!reset $1 $2 $3 $4 $5" git_am_patches "$3" "$5" ) || repofail="y" [ "$repofail" = "y" ] && [ $# -lt 6 ] && tmpclone "$@" retry - [ "$repofail" = "y" ] && $err "!clone $1 $2 $3 $4 $5"; : + [ "$repofail" = "y" ] && err "!clone $1 $2 $3 $4 $5"; : } git_am_patches() @@ -132,7 +132,7 @@ git_am_patches() [ -L "$p" ] && continue [ -e "$p" ] || continue [ -d "$p" ] && git_am_patches "$1" "$p" && continue - [ ! -f "$p" ] || git -C "$1" am "$p" || $err "$1 $2: !am $p" + [ ! -f "$p" ] || git -C "$1" am "$p" || err "$1 $2: !am $p" done; : } @@ -140,6 +140,6 @@ nuke() { e "config/${1%/}/nuke.list" f missing || while read -r nukefile; do rmf="src/${2%/}/$nukefile" && [ -L "$rmf" ] && continue - e "$rmf" e missing || rm -Rf "$rmf" || $err "!rm $rmf, ${2%/}" + e "$rmf" e missing || rm -Rf "$rmf" || err "!rm $rmf, ${2%/}" done < "config/${1%/}/nuke.list"; : } diff --git a/include/init.sh b/include/init.sh index 9f6e7162..ce9cf9a9 100644 --- a/include/init.sh +++ b/include/init.sh @@ -14,22 +14,22 @@ projectsite="https://libreboot.org/" export PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games" xbmkpath="$PATH" -err="err_" +xbmk_err="err_" eval "`setvars "" _nogit board reinstall versiondate aur_notice configdir \ datadir version xbmkpwd relname xbmkpwd xbmktmp python pyver xbmklocal`" xbmk_init() { - xbmkpwd="`pwd`" || $err "Cannot generate PWD" + xbmkpwd="`pwd`" || err "Cannot generate PWD" xbmklocal="$xbmkpwd/tmp" export PWD="$xbmkpwd" [ $# -gt 0 ] && [ "$1" = "dependencies" ] && x_ xbmkpkg "$@" && exit 0 - id -u 1>/dev/null 2>/dev/null || $err "suid check failed (id -u)" - [ "$(id -u)" != "0" ] || $err "this command as root is not permitted" + id -u 1>/dev/null 2>/dev/null || err "suid check failed (id -u)" + [ "$(id -u)" != "0" ] || err "this command as root is not permitted" for init_cmd in set_pyver set_env set_version git_init create_tmpdir \ lock create_pathdirs child_exec; do @@ -39,13 +39,13 @@ xbmk_init() xbmkpkg() { - [ $# -lt 2 ] && $err "fewer than two arguments" + [ $# -lt 2 ] && err "fewer than two arguments" [ $# -gt 2 ] && reinstall="$3" eval "`setcfg "config/dependencies/$2"`" chkvars pkg_add pkglist - $pkg_add $pkglist || $err "Cannot install packages" + $pkg_add $pkglist || err "Cannot install packages" [ -n "$aur_notice" ] && \ printf "You need AUR packages: %s\n" "$aur_notice" 1>&2; : @@ -59,11 +59,11 @@ xbmk_set_pyver() pyver="2" && [ "$python" = "python3" ] && pyver="3" pybin "$python" 1>/dev/null || pyver="" [ -z "$pyver" ] || "`pybin "$python"`" -c "$pyv" 1>/dev/null \ - 2>/dev/null || $err "Cannot detect host Python version." + 2>/dev/null || err "Cannot detect host Python version." [ -n "$pyver" ] && \ pyver="$("$(pybin "$python")" -c "$pyv" | awk '{print $1}')" && \ pyver="${pyver#(}" && pyver="${pyver%,}" - [ "${pyver%%.*}" = "3" ] || $err "Bad python version (must by 3.x)"; : + [ "${pyver%%.*}" = "3" ] || err "Bad python version (must by 3.x)"; : } # Use direct path, to prevent a hang if Python is using a virtual environment, @@ -104,9 +104,9 @@ xbmk_set_env() [ -z "${XBMK_CACHE+x}" ] && export XBMK_CACHE="$xbmkpwd/cache" [ -z "$XBMK_CACHE" ] && export XBMK_CACHE="$xbmkpwd/cache" [ -L "$XBMK_CACHE" ] && [ "$XBMK_CACHE" = "$xbmkpwd/cache" ] && \ - $err "cachedir '$xbmkpwd/cache' is a symlink" + err "cachedir '$xbmkpwd/cache' is a symlink" [ -L "$XBMK_CACHE" ] && export XBMK_CACHE="$xbmkpwd/cache" - [ -f "$XBMK_CACHE" ] && $err "cachedir '$XBMK_CACHE' is a file"; : + [ -f "$XBMK_CACHE" ] && err "cachedir '$XBMK_CACHE' is a file"; : # if "y": a coreboot target won't be built if target.cfg says release="n" # (this is used to exclude certain build targets from releases) @@ -124,9 +124,9 @@ xbmk_set_version() [ ! -f ".versiondate" ] || read -r versiondate < ".versiondate" || :; : [ -e ".git" ] || [ -f ".version" ] || printf "unknown\n" > ".version" \ - || $err "Cannot generate unknown .version file" + || err "Cannot generate unknown .version file" [ -e ".git" ] || [ -f ".versiondate" ] || printf "1716415872\n" > \ - ".versiondate" || $err "Can't generate unknown versiondate file"; : + ".versiondate" || err "Can't generate unknown versiondate file"; : version_="$version" [ ! -e ".git" ] || version="$(git describe --tags HEAD 2>&1)" || \ @@ -136,8 +136,8 @@ xbmk_set_version() --pretty='%ct' HEAD)" || versiondate="$versiondate_" chkvars version versiondate - printf "%s\n" "$version" > ".version" || $err "can't save version" - printf "%s\n" "$versiondate" > ".versiondate" || $err "can't save date" + printf "%s\n" "$version" > ".version" || err "can't save version" + printf "%s\n" "$versiondate" > ".versiondate" || err "can't save date" relname="$projectname-$version" export LOCALVERSION="-$projectname-${version%%-*}" @@ -157,7 +157,7 @@ xbmk_git_init() 2>/dev/null for gitarg in "--global user.name" "--global user.email"; do - gitcmd="git config $gitarg"; $gitcmd || $err \ + gitcmd="git config $gitarg"; $gitcmd || err \ "Please run this first: $gitcmd \"your ${gitcmd##*.}\"" done } @@ -184,8 +184,8 @@ xbmk_create_tmpdir() xbmk_lock() { - [ -f "lock" ] && $err "$xbmkpwd/lock exists. Is a build running?" - touch lock || $err "cannot create 'lock' file"; : + [ -f "lock" ] && err "$xbmkpwd/lock exists. Is a build running?" + touch lock || err "cannot create 'lock' file"; : } xbmk_create_pathdirs() @@ -195,9 +195,9 @@ xbmk_create_pathdirs() ( # set up python v3.x in PATH, in case it's not set up correctly. # see code above that detected the correct python3 command. - cd "$XBMK_CACHE/xbmkpath" || $err "can't cd $XBMK_CACHE/xbmkpath" + cd "$XBMK_CACHE/xbmkpath" || err "can't cd $XBMK_CACHE/xbmkpath" x_ ln -s "`pybin "$python"`" python - ) || $err "Can't set up python symlink in $XBMK_CACHE/xbmkpath"; : + ) || err "Can't set up python symlink in $XBMK_CACHE/xbmkpath"; : } xbmk_child_exec() diff --git a/include/inject.sh b/include/inject.sh index 837f34c1..e2987aad 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -41,7 +41,7 @@ eval "`setvars "" has_hashes EC_hash DL_hash DL_url_bkup MRC_refcode_gbe vcfg \ download() { - [ $# -gt 0 ] || $err "No argument given" + [ $# -gt 0 ] || err "No argument given" export PATH="$PATH:/sbin" board="$1" && readcfg && readkconfig && bootstrap && getfiles; : } @@ -116,22 +116,22 @@ fetch() dlop="curl" && [ $# -gt 5 ] && dlop="$6" xbmkget "$dl" "$dl_bkup" "$_dl" "$dlsum" "$dlop" - rm -Rf "${_dl}_extracted" || $err "!rm ${_ul}_extracted. $dontflash" + rm -Rf "${_dl}_extracted" || err "!rm ${_ul}_extracted. $dontflash" e "$_dest" f && return 0 x_ mkdir -p "${_dest%/*}" remkdir "$appdir" extract_archive "$_dl" "$appdir" "$dl_type" || \ - [ "$dl_type" = "e6400vga" ] || $err "$_dest $dl_type: !extract" + [ "$dl_type" = "e6400vga" ] || err "$_dest $dl_type: !extract" eval "extract_$dl_type" set -u -e - e "$_dest" f missing && $err "!extract_$dl_type. $dontflash"; : + e "$_dest" f missing && err "!extract_$dl_type. $dontflash"; : } extract_intel_me() { - e "$mecleaner" f not && $err "$cbdir: me_cleaner missing. $dontflash" + e "$mecleaner" f not && err "$cbdir: me_cleaner missing. $dontflash" cdir="$xbmkpwd/$appdir" _me="$xbmkpwd/$_dest" @@ -145,7 +145,7 @@ extract_intel_me() if [ "$ME11bootguard" = "y" ]; then apply_me11_deguard_mod else - mv "$_metmp" "$_me" || $err "!mv $_metmp $_me - $dontflash" + mv "$_metmp" "$_me" || err "!mv $_metmp $_me - $dontflash" fi } @@ -160,7 +160,7 @@ extract_intel_me_bruteforce() set +u +e ( [ "${cdir#/a}" != "$cdir" ] && cdir="${cdir#/}" - cd "$cdir" || $err "extract_intel_me: !cd \"$cdir\" - $dontflash" + cd "$cdir" || err "extract_intel_me: !cd \"$cdir\" - $dontflash" for i in *; do e "$_metmp" f && break [ -L "$i" ] && continue @@ -182,7 +182,7 @@ extract_intel_me_bruteforce() cd "$cdir" || : done ) || : - rm -Rf "$sdir" || $err "extract_intel_me: !rm -Rf $sdir - $dontflash" + rm -Rf "$sdir" || err "extract_intel_me: !rm -Rf $sdir - $dontflash" } apply_me11_deguard_mod() @@ -193,7 +193,7 @@ apply_me11_deguard_mod() --version "$ME11version" \ --pch "$ME11pch" --sku "$ME11sku" --fake-fpfs data/fpfs/zero \ --input "$_metmp" --output "$_me" - ) || $err "Error running deguard for $_me - $dontflash" + ) || err "Error running deguard for $_me - $dontflash" } extract_archive() @@ -216,11 +216,11 @@ extract_kbc1126ec() 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" + unar -D 68*.CAB Rom.bin || err "kbc1126 unar failed" x_ mv Rom.bin ec.bin fi x_ e ec.bin f && x_ "$kbc1126_ec_dump" ec.bin - ) || $err "$board: can't extract kbc1126 ec firmware - $dontflash" + ) || err "$board: can't extract kbc1126 ec firmware - $dontflash" x_ e "$appdir/ec.bin.fw1" f && x_ e "$appdir/ec.bin.fw2" f x_ cp "$appdir/"ec.bin.fw* "${_dest%/*}/" @@ -235,7 +235,7 @@ extract_e6400vga() x_ cd "$appdir" x_ e "bios.bin" f "$e6400_unpack" bios.bin || printf "TODO: fix dell extract util\n" - ) || $err "can't extract e6400 vga rom - $dontflosh" + ) || err "can't extract e6400 vga rom - $dontflosh" x_ cp "$appdir/$E6400_VGA_romname" "$_dest" } @@ -248,7 +248,7 @@ extract_sch5545ec() _sch5545ec_fw="$_sch5545ec_fw/54 D386BEB8-4B54-4E69-94F5-06091F67E0D3" _sch5545ec_fw="$_sch5545ec_fw/0 Raw section/body.bin" # <-- this! - "$uefiextract" "$_bios" || $err "sch5545 !extract - $dontflash" + "$uefiextract" "$_bios" || err "sch5545 !extract - $dontflash" x_ cp "$_sch5545ec_fw" "$_dest" } @@ -257,7 +257,7 @@ extract_sch5545ec() extract_tbfw() { chkvars TBFW_size && fe_ copy_tbfw "$appdir" -type f -name "TBT.bin" - [ -f "$_dest" ] || $err "$board: Could not extract tbfw"; : + [ -f "$_dest" ] || err "$board: Could not extract tbfw"; : } copy_tbfw() @@ -284,11 +284,11 @@ fail_inject() inject() { need_files="n" - err="fail_inject" + xbmk_err="fail_inject" remkdir "$tmpromdel" set +u +e - [ $# -lt 1 ] && $err "No options specified. - $dontflash" + [ $# -lt 1 ] && err "No options specified. - $dontflash" eval "`setvars "" nukemode new_mac xchanged`" archive="$1"; @@ -300,15 +300,15 @@ inject() nukemode="nuke" ;; setmac) [ $# -gt 2 ] && new_mac="$3" && \ - [ -z "$new_mac" ] && $err "Empty MAC address specified" ;; - *) $err "Unrecognised inject mode: '$2'" + [ -z "$new_mac" ] && err "Empty MAC address specified" ;; + *) err "Unrecognised inject mode: '$2'" esac [ "$new_mac" = "keep" ] && new_mac="" [ -n "$new_mac" ] && [ "$new_mac" != "restore" ] && \ x_ make -C util/nvmutil clean && x_ make -C util/nvmutil - check_release "$archive" || $err "'$archive' is not a release archive" + check_release "$archive" || err "'$archive' is not a release archive" readcfg && need_files="y" if [ "$need_files" = "y" ] || [ -n "$new_mac" ]; then @@ -324,20 +324,20 @@ inject() check_release() { - [ -L "$archive" ] && $err "'$archive' is a symlink. $dontflash" + [ -L "$archive" ] && err "'$archive' is a symlink. $dontflash" e "$archive" f missing && return 1 archivename="`basename "$archive"`" - [ -z "$archivename" ] && $err "Can't determine archive name. $dontflash" + [ -z "$archivename" ] && err "Can't determine archive name. $dontflash" case "$archivename" in *_src.tar.xz) - $err "'$archive' is a src archive, silly!" ;; + err "'$archive' is a src archive, silly!" ;; grub_*|seagrub_*|custom_*|seauboot_*|seabios_withgrub_*) return 1 ;; *.tar.xz) _stripped_prefix="${archivename#*_}" board="${_stripped_prefix%.tar.xz}" ;; - *) $err "'$archive': could not detect board type - $dontflash" + *) err "'$archive': could not detect board type - $dontflash" esac; : } @@ -355,8 +355,8 @@ readcfg() [ -z "$vcfg" ] && return 1 vfile="config/vendor/$vcfg/pkg.cfg" - [ -L "$vfile" ] && $err "'$archive', '$board': $vfile is a symlink" - [ -f "$vfile" ] || $err "'$archive', '$board': $vfile doesn't exist" + [ -L "$vfile" ] && err "'$archive', '$board': $vfile is a symlink" + [ -f "$vfile" ] || err "'$archive', '$board': $vfile doesn't exist" cbdir="src/coreboot/$tree" cbfstool="elf/cbfstool/$tree/cbfstool" @@ -394,14 +394,14 @@ patch_release_roms() ( [ "$need_files" = "y" ] || exit 0 - cd "$tmpromdir" || $err "patch '$archive': can't cd $tmpromdir" + 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 sha512sum --status -c "$hashfile" || \ x_ sha1sum --status -c "$hashfile" x_ rm -f "$hashfile" fi - ) || $err "'$archive' -> Can't verify vendor hashes. $dontflash" + ) || err "'$archive' -> Can't verify vendor hashes. $dontflash" [ -z "$new_mac" ] || modify_mac || printf "\nGbE not defined\n" 1>&2 @@ -411,10 +411,10 @@ patch_release_roms() ( x_ cd "${tmpromdir%"/bin/$board"}" mkrom_tarball "bin/$board" - ) || $err "Cannot re-generate '$archive' - $dontflash" + ) || err "Cannot re-generate '$archive' - $dontflash" mv "${tmpromdir%"/bin/$board"}/bin/${relname}_${board}.tar.xz" \ - "$archive" || $err "'$archive' -> Can't overwrite - $dontflash"; : + "$archive" || err "'$archive' -> Can't overwrite - $dontflash"; : } prep_rom() @@ -425,16 +425,16 @@ prep_rom() [ "$nukemode" = "nuke" ] && _xromnew="${_xrom%/*}/$vfix${_xrom##*/}" e "$_xrom" f missing && return 0 - [ -z "${_xromname#"$vfix"}" ] && $err "$_xromname / $vfix: name match" + [ -z "${_xromname#"$vfix"}" ] && err "$_xromname / $vfix: name match" # Remove the prefix and 1-byte pad if [ "$nukemode" != "nuke" ] && \ [ "${_xromname#"$vfix"}" != "$_xromname" ]; then - xromsize="$(expr $(stat -c '%s' "$_xrom") - 1)" || $err "!int" - [ $xromsize -lt 524288 ] && $err "too small, $xromsize: $_xrom" + xromsize="$(expr $(stat -c '%s' "$_xrom") - 1)" || err "!int" + [ $xromsize -lt 524288 ] && err "too small, $xromsize: $_xrom" x_ dd if="$_xrom" of="$_xromnew" bs=$xromsize count=1 - rm -f "$_xrom" || $err "Can't rm $_xrom - $dontflash" + rm -f "$_xrom" || err "Can't rm $_xrom - $dontflash" _xrom="$_xromnew" fi @@ -445,7 +445,7 @@ prep_rom() [ "$nukemode" != "nuke" ] && return 0 # Rename the file, prefixing a warning saying not to flash - cat "$_xrom" config/data/coreboot/0 > "$_xromnew" || $err "!pad $_xrom" + cat "$_xrom" config/data/coreboot/0 > "$_xromnew" || err "!pad $_xrom" x_ rm -f "$_xrom" } @@ -498,7 +498,7 @@ insert() if [ "$_t" = "fsp" ] && [ $# -gt 3 ]; then _offset="$4" elif [ $# -gt 3 ] && _offset="-b $4" && [ -z "$4" ]; then - $err "insert $*, $rom: offset given but empty (undefined)" + err "insert $*, $rom: offset given but empty (undefined)" fi [ "$nukemode" = "nuke" ] || x_ e "$_dest" f @@ -506,19 +506,19 @@ insert() if [ "$cbfsname" = "IFD" ]; then [ "$nukemode" = "nuke" ] || "$ifdtool" $ifdprefix -i \ $_t:$_dest "$rom" -O "$rom" || \ - $err "failed: insert '$_t' '$_dest' on '$rom'" + err "failed: insert '$_t' '$_dest' on '$rom'" [ "$nukemode" != "nuke" ] || "$ifdtool" $ifdprefix --nuke $_t \ - "$rom" -O "$rom" || $err "$rom: !nuke IFD/$_t" + "$rom" -O "$rom" || err "$rom: !nuke IFD/$_t" elif [ "$nukemode" = "nuke" ]; then x_ "$cbfstool" "$rom" remove -n "$cbfsname" elif [ "$_t" = "stage" ]; then # the only stage we handle is refcode x_ rm -f "$xbmklocal/refcode" "$rmodtool" -i "$_dest" -o "$xbmklocal/refcode" || "!reloc ref" "$cbfstool" "$rom" add-stage -f "$xbmklocal/refcode" \ - -n "$cbfsname" -t stage || $err "$rom: !add ref" + -n "$cbfsname" -t stage || err "$rom: !add ref" else "$cbfstool" "$rom" add -f "$_dest" -n "$cbfsname" \ - -t $_t $_offset || $err "$rom !add $_t ($_dest)" + -t $_t $_offset || err "$rom !add $_t ($_dest)" fi xchanged="y"; : } diff --git a/include/lib.sh b/include/lib.sh index b2888fb6..eb4cddca 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -15,8 +15,8 @@ remkdir() mkrom_tarball() { - printf "%s\n" "$version" > "$1/.version" || $err "$1 !version" - printf "%s\n" "$versiondate" > "$1/.versiondate" || $err "$1 !vdate" + printf "%s\n" "$version" > "$1/.version" || err "$1 !version" + printf "%s\n" "$versiondate" > "$1/.versiondate" || err "$1 !vdate" mktarball "$1" "${1%/*}/${relname}_${1##*/}.tar.xz" x_ rm -Rf "$1" @@ -26,15 +26,15 @@ mktarball() { printf "Creating tar archive '%s' from directory '%s'\n" "$2" "$1" [ "${2%/*}" = "$2" ] || x_ mkdir -p "${2%/*}" - x_ tar -c "$1" | xz -T$XBMK_THREADS -9e > "$2" || $err "mktarball2, $1" + x_ tar -c "$1" | xz -T$XBMK_THREADS -9e > "$2" || err "mktarball2, $1" } mksha512sum() { ( [ "${1%/*}" != "$1" ] && x_ cd "${1%/*}" - sha512sum ./"${1##*/}" >> "$2" || $err "!sha512sum \"$1\" > \"$2\"" - ) || $err "failed to create tarball checksum" + sha512sum ./"${1##*/}" >> "$2" || err "!sha512sum \"$1\" > \"$2\"" + ) || err "failed to create tarball checksum" } rmgit() @@ -58,7 +58,7 @@ xbmkget() for url in "$1" "$2"; do [ "$dl_fail" = "n" ] && break [ -z "$url" ] && continue - rm -f "$cached" || $err "!rm -f '$cached'" + rm -f "$cached" || err "!rm -f '$cached'" if [ "$_dlop" = "curl" ]; then curl --location --retry 3 -A "$_ua" "$url" \ -o "$cached" || wget --tries 3 -U "$_ua" "$url" \ @@ -72,11 +72,11 @@ xbmkget() "$1" "$2" "$3" "$4" "$url" 1>&2 && continue cp "$url" "$cached" || continue else - $err "$1 $2 $3 $4: Unsupported dlop type: '$_dlop'" + err "$1 $2 $3 $4: Unsupported dlop type: '$_dlop'" fi bad_checksum "$4" "$cached" || dl_fail="n" done - [ "$dl_fail" = "y" ] && $err "$1 $2 $3 $4: not downloaded" + [ "$dl_fail" = "y" ] && err "$1 $2 $3 $4: not downloaded" [ "$cached" = "$3" ] || x_ cp "$cached" "$3"; : } @@ -99,7 +99,7 @@ e() mk() { - mk_flag="$1" || $err "No argument given" + mk_flag="$1" || err "No argument given" shift 1 && for mk_arg in "$@"; do x_ ./mk $mk_flag $mk_arg done; : @@ -107,7 +107,7 @@ mk() check_defconfig() { - [ -d "$1" ] || $err "Target '$1' not defined." + [ -d "$1" ] || err "Target '$1' not defined." for x in "$1"/config/*; do [ -f "$x" ] && printf "%s\n" "$x" && return 1 done; : @@ -117,7 +117,7 @@ setvars() { _setvars="" if [ $# -lt 2 ]; then - printf "\$err \"setvars: too few args\\n\"" + printf "err \"setvars: too few args\\n\"" return 0 fi val="$1" @@ -132,15 +132,15 @@ setcfg() { [ $# -gt 1 ] && printf "e \"%s\" f missing && return %s;\n" "$1" "$2" [ $# -gt 1 ] || \ - printf "e \"%s\" f not && %s \"Missing config\";\n" "$1" "$err" - printf ". \"%s\" || %s \"Could not read config\";\n" "$1" "$err" + printf "e \"%s\" f not && err \"Missing config\";\n" "$1" + printf ". \"%s\" || err \"Could not read config\";\n" "$1" } chkvars() { for var in "$@"; do - eval "[ -n \"\${$var+x}\" ] || \$err \"$var unset\"" - eval "[ -n \"\$$var\" ] || \$err \"$var unset\"" + eval "[ -n \"\${$var+x}\" ] || err \"$var unset\"" + eval "[ -n \"\$$var\" ] || err \"$var unset\"" done; : } @@ -160,7 +160,7 @@ find_ex() fd="`mktemp`" && x_ rm -f "$fd" && x_ touch "$fd" xx="$1" && shift 1 $xmsg find "$@" 2>/dev/null | sort > "$fd" || \ - $err "!find $(echo "$@") > \"$fd\"" + err "!find $(echo "$@") > \"$fd\"" while read -r fx; do $xx "$fx" || break; : done < "$fd" @@ -169,8 +169,35 @@ find_ex() x_() { - [ $# -lt 1 ] || [ -n "$1" ] || $err "Empty first arg: x_ $(echo "$@")" - [ $# -lt 1 ] || "$@" || $err "Unhandled error for: $(echo "$@")"; : + [ $# -lt 1 ] || [ -n "$1" ] || err "Empty first arg: x_ $(echo "$@")" + [ $# -lt 1 ] || "$@" || err "Unhandled error for: $(echo "$@")"; : +} + +err() +{ + xbmk_err_val=0 + + real_err="$xbmk_err" + if [ -z "$xbmk_err" ]; then + printf "WARNING: err not set. Args: %s\n" "$(echo "$@")" 1>&2 + printf "REMARK: Setting err to default 'err_' value\n" 1>&2 + real_err="err_" + fi + + ( + $real_err "$@" || printf \ + "WARNING: Err function '%s' *returned* 1. Will exit 1 anyway\n" \ + "$real_err" + printf "WARNING: Err function '%s' didn't exit. Will exit 1 anyway\n" \ + "$real_err" 1>&2 + exit 1 + ) || xbmk_err_val=1 # otherwise, it wrongly did exit 0, not exit 1 + + [ $xbmk_err_val -eq 0 ] && printf \ + "WARNING: Err function '%s' did exit 0. Will exit 1 anyway.\n" \ + "$real_err" 1>&2 + + exit 1 } err_() diff --git a/include/mrc.sh b/include/mrc.sh index eaf39dcb..a1dcb140 100644 --- a/include/mrc.sh +++ b/include/mrc.sh @@ -11,7 +11,7 @@ extract_mrc() extract_shellball "$cbfstool" "$appdir/"bios.bin extract -n mrc.bin \ - -f "$_dest" -r RO_SECTION || $err "extract_mrc: !$cbfstool $_dest" + -f "$_dest" -r RO_SECTION || err "extract_mrc: !$cbfstool $_dest" [ -n "$CONFIG_REFCODE_BLOB_FILE" ] && extract_refcode extra; : } @@ -27,7 +27,7 @@ extract_refcode() # incompatible with older versions before coreboot 4.14, # so we need coreboot 4.13 cbfstool for certain refcode files chkvars cbfstoolref - mkdir -p "${_refdest%/*}" || $err "ref: !mkdir -p ${_refdest%/*}" + mkdir -p "${_refdest%/*}" || err "ref: !mkdir -p ${_refdest%/*}" x_ "$cbfstoolref" "$appdir/bios.bin" extract \ -m x86 -n fallback/refcode -f "$_refdest" -r RO_SECTION @@ -46,7 +46,7 @@ extract_shellball() x_ cd "$appdir" extract_partition "${MRC_url##*/}" extract_archive "$SHELLBALL" . - ) || $err "mrc download/extract failure"; : + ) || err "mrc download/extract failure"; : } extract_partition() @@ -59,8 +59,8 @@ extract_partition() SIZE=$(( $( echo $ROOTP | cut -f4 -d\ | tr -d "B" ) )) dd if="${1%.zip}" of="root-a.ext2" bs=1024 skip=$(( $START / 1024 )) \ - count=$(( $SIZE / 1024 )) || $err "ex dd ${1%.zip}, root-a.ext2" + count=$(( $SIZE / 1024 )) || err "ex dd ${1%.zip}, root-a.ext2" printf "cd /usr/sbin\ndump chromeos-firmwareupdate %s\nquit" \ - "$SHELLBALL" | debugfs "root-a.ext2" || $err "!extract shellball" + "$SHELLBALL" | debugfs "root-a.ext2" || err "!extract shellball" } diff --git a/include/rom.sh b/include/rom.sh index ec464d85..af739d92 100644 --- a/include/rom.sh +++ b/include/rom.sh @@ -11,7 +11,7 @@ mkserprog() { [ "$_f" = "-d" ] && return 0 # dry run basename -as .h "$serdir/"*.h > "$xbmktmp/ser" || \ - $err "!mk $1 $xbmktmp" + err "!mk $1 $xbmktmp" while read -r sertarget; do [ "$1" = "pico" ] && x_ cmake -DPICO_BOARD="$sertarget" \ @@ -33,8 +33,8 @@ copyps1bios() x_ cp src/pcsx-redux/src/mips/openbios/openbios.bin bin/playstation printf "MIT License\n\nCopyright (c) 2019-2024 PCSX-Redux authors\n\n" \ - > bin/playstation/COPYING.txt || $err "!pcsx-redux copyright" - cat config/snippet/mit >>bin/playstation/COPYING.txt || $err "!pcsx MIT" + > bin/playstation/COPYING.txt || err "!pcsx-redux copyright" + cat config/snippet/mit >>bin/playstation/COPYING.txt || err "!pcsx MIT" } mkpayload_grub() @@ -55,7 +55,7 @@ mkvendorfiles() [ -z "$mode" ] && $dry cook_coreboot_config check_coreboot_utils "$tree" printf "%s\n" "${version%%-*}" > "$srcdir/.coreboot-version" || \ - $err "!mk $srcdir .coreboot-version" + err "!mk $srcdir .coreboot-version" [ -z "$mode" ] && [ "$target" != "$tree" ] && \ x_ ./mk download "$target"; : } @@ -64,8 +64,8 @@ cook_coreboot_config() { [ -f "$srcdir/.config" ] || return 0 printf "CONFIG_CCACHE=y\n" >> "$srcdir/.config" || \ - $err "$srcdir/.config: Could not enable ccache" - make -C "$srcdir" oldconfig || $err "Could not cook $srcdir/.config"; : + err "$srcdir/.config: Could not enable ccache" + make -C "$srcdir" oldconfig || err "Could not cook $srcdir/.config"; : } check_coreboot_utils() @@ -105,7 +105,7 @@ mkcorebootbin() [ "$payload_uboot_i386" = "y" ] && \ [ "$payload_uboot_amd64" = "y" ] && \ - $err "'$target' enables 32- and 64-bit x86 U-Boot" + err "'$target' enables 32- and 64-bit x86 U-Boot" if [ "$payload_uboot_i386" = "y" ] || \ [ "$payload_uboot_amd64" = "y" ]; then @@ -118,7 +118,7 @@ mkcorebootbin() [ "$payload_uboot" = "y" ] || payload_seabios="y" [ "$payload_grub" = "y" ] && payload_seabios="y" [ "$payload_seabios" = "y" ] && [ "$payload_uboot" = "y" ] && \ - $dry $err "$target: U-Boot(arm64) and SeaBIOS/GRUB both enabled." + $dry err "$target: U-Boot(arm64) and SeaBIOS/GRUB both enabled." [ -z "$grub_scan_disk" ] && grub_scan_disk="nvme ahci ata" @@ -180,7 +180,7 @@ add_grub() _grubname="fallback/payload" cbfs "$tmprom" "$grubelf" "$_grubname" printf "set grub_scan_disk=\"%s\"\n" "$grub_scan_disk" \ - > "$xbmktmp/tmpcfg" || $err "$target: !insert scandisk" + > "$xbmktmp/tmpcfg" || err "$target: !insert scandisk" cbfs "$tmprom" "$xbmktmp/tmpcfg" scan.cfg raw [ "$initmode" != "normal" ] && [ "$displaymode" != "txtmode" ] && \ cbfs "$tmprom" "$grubdata/background/background1280x800.png" \ -- cgit v1.2.1 From 37ca0c90e1cc8dc3f85b9cdd96c9cd6faea0862a Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 10:18:33 +0100 Subject: lib.sh err: add missing redirect to stderr Signed-off-by: Leah Rowe --- include/lib.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/lib.sh b/include/lib.sh index eb4cddca..1bfe2060 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -187,7 +187,7 @@ err() ( $real_err "$@" || printf \ "WARNING: Err function '%s' *returned* 1. Will exit 1 anyway\n" \ - "$real_err" + "$real_err" 1>&2 printf "WARNING: Err function '%s' didn't exit. Will exit 1 anyway\n" \ "$real_err" 1>&2 exit 1 -- cgit v1.2.1 From 9611c19e7ed1be42c8da8228235d9626eb853acf Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 16:03:34 +0100 Subject: init.sh: tidy up xbmk_child_exec() make the command style more consistent, for example relying on x_ inside a subshell to print the command and arguments if a command failed. this is a good style, and i'll probably use it in other places on lbmk. Signed-off-by: Leah Rowe --- include/init.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/init.sh b/include/init.sh index ce9cf9a9..e8ff6b63 100644 --- a/include/init.sh +++ b/include/init.sh @@ -204,8 +204,8 @@ xbmk_child_exec() { xbmk_rval=0 ( x_ ./mk "$@" ) || xbmk_rval=1 - rm -Rf "$xbmklocal" "$xbmktmp" || xbmk_rval=1 - rm -f lock || xbmk_rval=1 + ( x_ rm -Rf "$xbmklocal" "$xbmktmp" ) || xbmk_rval=1 + ( x_ rm -f lock ) || xbmk_rval=1 exit $xbmk_rval } -- cgit v1.2.1 From 8b7bd992f66d554c50495fb87426bf3b8580dcb9 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 16:12:23 +0100 Subject: init.sh: define lock file in a variable instead don't hardcode it. Signed-off-by: Leah Rowe --- include/init.sh | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'include') diff --git a/include/init.sh b/include/init.sh index e8ff6b63..9e05d503 100644 --- a/include/init.sh +++ b/include/init.sh @@ -17,12 +17,14 @@ xbmkpath="$PATH" xbmk_err="err_" eval "`setvars "" _nogit board reinstall versiondate aur_notice configdir \ - datadir version xbmkpwd relname xbmkpwd xbmktmp python pyver xbmklocal`" + datadir version xbmkpwd relname xbmkpwd xbmktmp python pyver xbmklocal \ + xbmklock`" xbmk_init() { xbmkpwd="`pwd`" || err "Cannot generate PWD" xbmklocal="$xbmkpwd/tmp" + xbmklock="$xbmkpwd/lock" export PWD="$xbmkpwd" @@ -184,8 +186,8 @@ xbmk_create_tmpdir() xbmk_lock() { - [ -f "lock" ] && err "$xbmkpwd/lock exists. Is a build running?" - touch lock || err "cannot create 'lock' file"; : + [ -f "$xbmklock" ] && err "$xbmklock exists. Is a build running?" + touch "$xbmklock" || err "cannot create '$xbmklock'"; : } xbmk_create_pathdirs() @@ -205,7 +207,7 @@ xbmk_child_exec() xbmk_rval=0 ( x_ ./mk "$@" ) || xbmk_rval=1 ( x_ rm -Rf "$xbmklocal" "$xbmktmp" ) || xbmk_rval=1 - ( x_ rm -f lock ) || xbmk_rval=1 + ( x_ rm -f "$xbmklock" ) || xbmk_rval=1 exit $xbmk_rval } -- cgit v1.2.1 From b51846da6dead8f138858dcdb3da0b78d713e580 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 16:14:50 +0100 Subject: init.sh: single-quote xbmklock in xbmk_lock() Signed-off-by: Leah Rowe --- include/init.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/init.sh b/include/init.sh index 9e05d503..349d40ed 100644 --- a/include/init.sh +++ b/include/init.sh @@ -186,7 +186,7 @@ xbmk_create_tmpdir() xbmk_lock() { - [ -f "$xbmklock" ] && err "$xbmklock exists. Is a build running?" + [ -f "$xbmklock" ] && err "'$xbmklock' exists. Is a build running?" touch "$xbmklock" || err "cannot create '$xbmklock'"; : } -- cgit v1.2.1 From 4020fb432805cfc7ebd243b0873574f25182ba40 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 16:23:11 +0100 Subject: lib.sh: simplify err() Rely once again on err_, but still explicitly add an exit just below, in case I made a mistake one day. err() is essentially a trap that triggers in case I mess up an error function, so that it doesn't reliably exit. So, the idea is that everything calls err(), and err() is almost never modified, or modified very carefully. If error exits were ever broken, the result could be quite unpredictable, so lbmk has very strict error handling, and great care is taken to ensure that it does reliably exit. Signed-off-by: Leah Rowe --- include/lib.sh | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) (limited to 'include') diff --git a/include/lib.sh b/include/lib.sh index 1bfe2060..e7b5bd3d 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -185,19 +185,13 @@ err() fi ( - $real_err "$@" || printf \ - "WARNING: Err function '%s' *returned* 1. Will exit 1 anyway\n" \ - "$real_err" 1>&2 - printf "WARNING: Err function '%s' didn't exit. Will exit 1 anyway\n" \ - "$real_err" 1>&2 - exit 1 + $real_err "$@" || err_ "Error function '$real_err' *returned* 1" + err_ "Error function '$real_err' didn't exit" + exit 1 # just in case! ) || xbmk_err_val=1 # otherwise, it wrongly did exit 0, not exit 1 - [ $xbmk_err_val -eq 0 ] && printf \ - "WARNING: Err function '%s' did exit 0. Will exit 1 anyway.\n" \ - "$real_err" 1>&2 - - exit 1 + [ $xbmk_err_val -eq 0 ] && err_ "Error function '$real_err' did exit 0" + exit 1 # just in case! } err_() -- cgit v1.2.1 From 61e5fd1a0b2791b2819a5d0e58fa76208a4e8774 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 16:28:22 +0100 Subject: lib.sh: Add warning if x_ is called without args Signed-off-by: Leah Rowe --- include/lib.sh | 1 + 1 file changed, 1 insertion(+) (limited to 'include') diff --git a/include/lib.sh b/include/lib.sh index e7b5bd3d..fbbb92da 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -169,6 +169,7 @@ find_ex() x_() { + [ $# -lt 1 ] && printf "WARNING: x_ called without arguments\n" 1>&2 [ $# -lt 1 ] || [ -n "$1" ] || err "Empty first arg: x_ $(echo "$@")" [ $# -lt 1 ] || "$@" || err "Unhandled error for: $(echo "$@")"; : } -- cgit v1.2.1 From 51b2a1159d0d915c080565ba8d2f41203cef6f80 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 16:30:45 +0100 Subject: lib.sh: simplify err-not-set handling Signed-off-by: Leah Rowe --- include/lib.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'include') diff --git a/include/lib.sh b/include/lib.sh index fbbb92da..e54fd6b4 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -180,8 +180,7 @@ err() real_err="$xbmk_err" if [ -z "$xbmk_err" ]; then - printf "WARNING: err not set. Args: %s\n" "$(echo "$@")" 1>&2 - printf "REMARK: Setting err to default 'err_' value\n" 1>&2 + printf "WARNING: err not set. Defaulting to 'err_'\n" 1>&2 real_err="err_" fi -- cgit v1.2.1 From a3b5626f53db69ed22dc395221ba515d3f74b728 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 16:32:03 +0100 Subject: lib.sh: stricter xbmk_err check in err() Signed-off-by: Leah Rowe --- include/lib.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/lib.sh b/include/lib.sh index e54fd6b4..c9be740a 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -177,9 +177,9 @@ x_() err() { xbmk_err_val=0 + real_err="" && [ -n "${xbmk_err+x}" ] && real_err="$xbmk_err" - real_err="$xbmk_err" - if [ -z "$xbmk_err" ]; then + if [ -z "$real_err" ]; then printf "WARNING: err not set. Defaulting to 'err_'\n" 1>&2 real_err="err_" fi -- cgit v1.2.1 From 5e3aaa1eb8b6f0198723ca67cda07b0990744132 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 16:49:30 +0100 Subject: init.sh: Run git name/email check before init Otherwise, it returns if init is already done, which later leads to build errors in coreboot. Signed-off-by: Leah Rowe --- include/init.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'include') diff --git a/include/init.sh b/include/init.sh index 349d40ed..b9df34bb 100644 --- a/include/init.sh +++ b/include/init.sh @@ -147,6 +147,11 @@ xbmk_set_version() xbmk_git_init() { + for gitarg in "--global user.name" "--global user.email"; do + gitcmd="git config $gitarg"; $gitcmd || err \ + "Please run this first: $gitcmd \"your ${gitcmd##*.}\"" + done + [ -L ".git" ] && return 1 [ -e ".git" ] && return 0 eval "`setvars "$(date -Rud @$versiondate)" cdate _nogit`" @@ -156,12 +161,7 @@ xbmk_git_init() x_ git commit -m "$projectname $version" --date "$cdate" \ --author="xbmk " 1>/dev/null 2>/dev/null x_ git tag -a "$version" -m "$projectname $version" 1>/dev/null \ - 2>/dev/null - - for gitarg in "--global user.name" "--global user.email"; do - gitcmd="git config $gitarg"; $gitcmd || err \ - "Please run this first: $gitcmd \"your ${gitcmd##*.}\"" - done + 2>/dev/null; : } xbmk_create_tmpdir() -- cgit v1.2.1 From 35265731c5b1bfef4bd4e94722c67be8284c7d64 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 16:50:50 +0100 Subject: init.sh: Silence the output of git config --global Signed-off-by: Leah Rowe --- include/init.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/init.sh b/include/init.sh index b9df34bb..8f5ab059 100644 --- a/include/init.sh +++ b/include/init.sh @@ -148,8 +148,8 @@ xbmk_set_version() xbmk_git_init() { for gitarg in "--global user.name" "--global user.email"; do - gitcmd="git config $gitarg"; $gitcmd || err \ - "Please run this first: $gitcmd \"your ${gitcmd##*.}\"" + gitcmd="git config $gitarg"; $gitcmd 1>/dev/null 2>/dev/null \ + || err "Run this first: $gitcmd \"your ${gitcmd##*.}\"" done [ -L ".git" ] && return 1 -- cgit v1.2.1 From 20c873085874c277ce0e10ec7792bbee94d1c63f Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 16:53:02 +0100 Subject: lib.sh: Provide error message where none is given Signed-off-by: Leah Rowe --- include/lib.sh | 1 + 1 file changed, 1 insertion(+) (limited to 'include') diff --git a/include/lib.sh b/include/lib.sh index c9be740a..71183874 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -196,6 +196,7 @@ err() err_() { + [ $# -lt 1 ] && printf "ERROR (but no error message provided)\n" 1>&2 [ $# -lt 1 ] || printf "ERROR %s: %s\n" "$0" "$1" 1>&2 || : exit 1 } -- cgit v1.2.1 From 428c46ca2b1fee04625d37bec65c30f0baf87530 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 5 May 2025 05:20:47 +0100 Subject: lib.sh: set -u -e in err() Some parts of lbmk set +u +e, to be reset later on under normal conditions upon exit. We must ensure such level of integrity in err() as well. Signed-off-by: Leah Rowe --- include/lib.sh | 2 ++ 1 file changed, 2 insertions(+) (limited to 'include') diff --git a/include/lib.sh b/include/lib.sh index 71183874..43b1a318 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -176,6 +176,8 @@ x_() err() { + set -u -e + xbmk_err_val=0 real_err="" && [ -n "${xbmk_err+x}" ] && real_err="$xbmk_err" -- cgit v1.2.1 From 153dd76a82e98a7260424cf37d5a139fff39d2ab Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 5 May 2025 05:41:21 +0100 Subject: inject.sh: tidy up the deguard command Signed-off-by: Leah Rowe --- include/inject.sh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index e2987aad..0e81c63f 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -189,10 +189,9 @@ apply_me11_deguard_mod() { ( x_ cd src/deguard/ - x_ ./finalimage.py --delta "data/delta/$ME11delta" \ - --version "$ME11version" \ - --pch "$ME11pch" --sku "$ME11sku" --fake-fpfs data/fpfs/zero \ - --input "$_metmp" --output "$_me" + x_ ./finalimage.py --delta "data/delta/$ME11delta" --version \ + "$ME11version" --pch "$ME11pch" --sku "$ME11sku" --fake-fpfs \ + data/fpfs/zero --input "$_metmp" --output "$_me" ) || err "Error running deguard for $_me - $dontflash" } -- cgit v1.2.1 From eb882de94cbe78e575b97ced611a06553f94dbc7 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 5 May 2025 05:43:38 +0100 Subject: inject.sh: tidy up intel me handling Signed-off-by: Leah Rowe --- include/inject.sh | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index 0e81c63f..c6c8c2d2 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -142,8 +142,12 @@ extract_intel_me() [ "$ME11bootguard" = "y" ] && x_ ./mk -f deguard extract_intel_me_bruteforce - if [ "$ME11bootguard" = "y" ]; then - apply_me11_deguard_mod + if [ "$ME11bootguard" = "y" ]; then ( + x_ cd src/deguard/ + x_ ./finalimage.py --delta "data/delta/$ME11delta" --version \ + "$ME11version" --pch "$ME11pch" --sku "$ME11sku" \ + --fake-fpfs data/fpfs/zero --input "$_metmp" --output "$_me" + ) || err "Error running deguard for $_me - $dontflash" else mv "$_metmp" "$_me" || err "!mv $_metmp $_me - $dontflash" fi @@ -185,16 +189,6 @@ extract_intel_me_bruteforce() rm -Rf "$sdir" || err "extract_intel_me: !rm -Rf $sdir - $dontflash" } -apply_me11_deguard_mod() -{ - ( - x_ cd src/deguard/ - x_ ./finalimage.py --delta "data/delta/$ME11delta" --version \ - "$ME11version" --pch "$ME11pch" --sku "$ME11sku" --fake-fpfs \ - data/fpfs/zero --input "$_metmp" --output "$_me" - ) || err "Error running deguard for $_me - $dontflash" -} - extract_archive() { [ $# -gt 2 ] && [ "$3" = "fsp" ] && x_ python \ -- cgit v1.2.1 From 4cbc950c01fadd09b408de873cbb7a221b64bea9 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 5 May 2025 06:00:23 +0100 Subject: inject.sh: Move FSP extraction only to extract_fsp Don't do FSP-specific extraction in extract_archive, as that is not what the latter is for. Signed-off-by: Leah Rowe --- include/inject.sh | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index c6c8c2d2..bdccb881 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: GPL-3.0-only +# SPD-License-Identifier: GPL-3.0-only # Copyright (c) 2022 Caleb La Grange # Copyright (c) 2022 Ferass El Hafidi # Copyright (c) 2023-2025 Leah Rowe @@ -121,10 +121,10 @@ fetch() x_ mkdir -p "${_dest%/*}" remkdir "$appdir" - extract_archive "$_dl" "$appdir" "$dl_type" || \ + [ "$dl_type" = "fsp" ] || extract_archive "$_dl" "$appdir" || \ [ "$dl_type" = "e6400vga" ] || err "$_dest $dl_type: !extract" - eval "extract_$dl_type" + x_ extract_$dl_type "$_dl" "$appdir" set -u -e e "$_dest" f missing && err "!extract_$dl_type. $dontflash"; : } @@ -191,10 +191,6 @@ extract_intel_me_bruteforce() extract_archive() { - [ $# -gt 2 ] && [ "$3" = "fsp" ] && x_ python \ - "$cbdir/3rdparty/fsp/Tools/SplitFspBin.py" split -f "$1" -o "$2" \ - -n "Fsp.fd" && return 0 - innoextract "$1" -d "$2" || python "$pfs_extract" "$1" -e || 7z x \ "$1" -o"$2" || unar "$1" -o "$2" || unzip "$1" -d "$2" || return 1 @@ -261,7 +257,8 @@ copy_tbfw() extract_fsp() { - x_ cp "$appdir/"Fsp_*.fd "${_dest%/*}" + x_ python "$cbdir/3rdparty/fsp/Tools/SplitFspBin.py" split -f "$1" \ + -o "$2" -n "Fsp.fd" && x_ cp "$appdir/"Fsp_*.fd "${_dest%/*}" } fail_inject() -- cgit v1.2.1 From a662ec90d9b0b9f768508cbce648bf532741ab3c Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 5 May 2025 06:11:47 +0100 Subject: inject.sh extract_intel_me(): reduce indentation Signed-off-by: Leah Rowe --- include/inject.sh | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index bdccb881..93f60c68 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -142,15 +142,14 @@ extract_intel_me() [ "$ME11bootguard" = "y" ] && x_ ./mk -f deguard extract_intel_me_bruteforce - if [ "$ME11bootguard" = "y" ]; then ( - x_ cd src/deguard/ - x_ ./finalimage.py --delta "data/delta/$ME11delta" --version \ - "$ME11version" --pch "$ME11pch" --sku "$ME11sku" \ - --fake-fpfs data/fpfs/zero --input "$_metmp" --output "$_me" - ) || err "Error running deguard for $_me - $dontflash" - else - mv "$_metmp" "$_me" || err "!mv $_metmp $_me - $dontflash" - fi + [ "$ME11bootguard" != "y" ] && x_ mv "$_metmp" "$_me" && return 0 + + ( + x_ cd src/deguard/ + x_ ./finalimage.py --delta "data/delta/$ME11delta" --version \ + "$ME11version" --pch "$ME11pch" --sku "$ME11sku" \ + --fake-fpfs data/fpfs/zero --input "$_metmp" --output "$_me" + ) || err "Error running deguard for $_me - $dontflash"; : } extract_intel_me_bruteforce() -- cgit v1.2.1 From 9bb1ca0a5fe826a8498da6a731a1326b2f06812e Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 5 May 2025 06:21:04 +0100 Subject: inject.sh: Remove unnecessary check _dest is already checked in the calling function fetch(), after extract_tbfw() has been called. Signed-off-by: Leah Rowe --- include/inject.sh | 1 - 1 file changed, 1 deletion(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index 93f60c68..43cb5542 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -245,7 +245,6 @@ extract_sch5545ec() extract_tbfw() { chkvars TBFW_size && fe_ copy_tbfw "$appdir" -type f -name "TBT.bin" - [ -f "$_dest" ] || err "$board: Could not extract tbfw"; : } copy_tbfw() -- cgit v1.2.1 From 4fda30c9602b6d092a9e7cf58a0c36d1c6248a35 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 5 May 2025 06:26:38 +0100 Subject: inject.sh: simplify extract_intel_me_bruteforce() Signed-off-by: Leah Rowe --- include/inject.sh | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index 43cb5542..f1ecb0d5 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -165,9 +165,11 @@ extract_intel_me_bruteforce() [ "${cdir#/a}" != "$cdir" ] && cdir="${cdir#/}" cd "$cdir" || err "extract_intel_me: !cd \"$cdir\" - $dontflash" for i in *; do - e "$_metmp" f && break + c=0 && e "$_metmp" f && break [ -L "$i" ] && continue - if [ -f "$i" ]; then + [ -e "$i" ] || continue + [ -d "$i" ] && extract_intel_me_bruteforce "$cdir/$i" && c=1 + if [ $c -eq 0 ] && [ -f "$i" ]; then _r="-r" && [ -n "$mfs" ] && _r="" "$mecleaner" $mfs $_r -t -O "$sdir/vendorfile" \ -M "$_metmp" "$i" && break @@ -176,10 +178,6 @@ extract_intel_me_bruteforce() _7ztest="${_7ztest}a" extract_archive "$i" "$_7ztest" || continue extract_intel_me_bruteforce "$cdir/$_7ztest" - elif [ -d "$i" ]; then - extract_intel_me_bruteforce "$cdir/$i" - else - continue fi cdir="$1"; [ "${cdir#/a}" != "$cdir" ] && cdir="${cdir#/}" cd "$cdir" || : -- cgit v1.2.1