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 b7ca59debe6e9895485c9c54e820161cb572aebc 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 | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index c6c8c2d2..80a691f2 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -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 f4057d7daab0eb22954d376372a4dad9578f7ba0 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 80a691f2..9726c57e 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 e4edc2194d3aaaf8319fe681475caae5562b351e 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 9726c57e..667a03f8 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 61ec396ef6dbf3ce325f63791d634a78f45531a6 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 667a03f8..6aceb52c 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 From 62ec3dac07584d6ab8e7f86587e730b3d159e8ef Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 5 May 2025 15:31:33 +0100 Subject: git.sh: move singletree() to lib.sh it's also used by mk, to determine which build function to use (build_project or build_targets). Signed-off-by: Leah Rowe --- include/git.sh | 9 --------- include/lib.sh | 9 +++++++++ 2 files changed, 9 insertions(+), 9 deletions(-) (limited to 'include') diff --git a/include/git.sh b/include/git.sh index ded12625..7995df06 100644 --- a/include/git.sh +++ b/include/git.sh @@ -66,15 +66,6 @@ git_prep() mv "$tmpgit" "$_loc" || err "git_prep: !mv $tmpgit $_loc" } -# return 0 if project is single-tree, otherwise 1 -# e.g. coreboot is multi-tree, so 1 -singletree() -{ - for targetfile in "config/${1}/"*/target.cfg; do - [ -e "$targetfile" ] && [ -f "$targetfile" ] && return 1; : - done; : -} - fetch_submodule() { mcfgdir="$mdir/${1##*/}"; eval \ diff --git a/include/lib.sh b/include/lib.sh index 43b1a318..1830356e 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -144,6 +144,15 @@ chkvars() done; : } +# return 0 if project is single-tree, otherwise 1 +# e.g. coreboot is multi-tree, so 1 +singletree() +{ + for targetfile in "config/${1}/"*/target.cfg; do + [ -e "$targetfile" ] && [ -f "$targetfile" ] && return 1; : + done; : +} + fe_() { find_ex "x_" "$@" -- cgit v1.2.1 From 437ac2454c1a6a77c40894379f5073b4412d0c8d Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 5 May 2025 15:40:08 +0100 Subject: lib.sh: simplify singletree() Signed-off-by: Leah Rowe --- include/lib.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'include') diff --git a/include/lib.sh b/include/lib.sh index 1830356e..b8f99674 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -148,9 +148,7 @@ chkvars() # e.g. coreboot is multi-tree, so 1 singletree() { - for targetfile in "config/${1}/"*/target.cfg; do - [ -e "$targetfile" ] && [ -f "$targetfile" ] && return 1; : - done; : + ( fe_ "exit 1" "config/$1/"*/ -type f -name "target.cfg" ) || return 1 } fe_() -- cgit v1.2.1 From 89a8cd4936a7dd24eb4c2db8a484b858ed20dd88 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 5 May 2025 17:41:10 +0100 Subject: rom.sh: simplify mkseagrub() Signed-off-by: Leah Rowe --- include/rom.sh | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'include') diff --git a/include/rom.sh b/include/rom.sh index af739d92..8f605e3a 100644 --- a/include/rom.sh +++ b/include/rom.sh @@ -192,9 +192,7 @@ mkseagrub() [ "$payload_grubsea" = "y" ] && pname="grub" [ "$payload_grubsea" = "y" ] || \ cbfs "$tmprom" "$grubdata/bootorder" bootorder raw - for keymap in config/data/grub/keymap/*.gkb; do - [ -f "$keymap" ] && cprom "${keymap##*/}"; : - done; : + fe_ "cprom" "$grubdata/keymap" -type f -name "*.gkb" } add_uboot() @@ -243,16 +241,16 @@ add_uboot() cprom() { - newrom="bin/$target/${pname}_${target}_$initmode.rom" + tmpnew=""; newrom="bin/$target/${pname}_${target}_$initmode.rom" [ -n "$displaymode" ] && newrom="${newrom%.rom}_$displaymode.rom" - [ $# -gt 0 ] && [ "$1" != "seauboot" ] && \ - newrom="${newrom%.rom}_${1%.gkb}.rom" + [ $# -gt 0 ] && [ "$1" != "seauboot" ] && tmpnew="${1##*/}" && \ + newrom="${newrom%.rom}_${tmpnew%.gkb}.rom" x_ mkdir -p "bin/$target" - x_ cp "$tmprom" "$newrom" && [ $# -gt 0 ] && [ "$1" != "seauboot" ] && \ - cbfs "$newrom" "config/data/grub/keymap/$1" keymap.gkb raw + x_ cp "$tmprom" "$newrom" && [ $# -gt 0 ] && [ "$1" != "seauboot" ] \ + && cbfs "$newrom" "$grubdata/keymap/$tmpnew" keymap.gkb raw [ $# -gt 0 ] && [ "$1" = "seauboot" ] && \ - cbfs "$newrom" "config/data/grub/bootorder_uboot" bootorder raw; : + cbfs "$newrom" "$grubdata/bootorder_uboot" bootorder raw; : } cbfs() -- cgit v1.2.1 From 2be8d1c7982a37cb4e8e57b302c4039be4bc5bad Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 5 May 2025 17:53:02 +0100 Subject: rom.sh: specifically check keymaps in cprom() "not seauboot" is a valid check at present, but if i start supporting other arguments in the future, this code would have to change. therefore, i change it in advance, on that theory. this new check is more technically correct. these lines are triggered when inserting grub keymaps. Signed-off-by: Leah Rowe --- include/rom.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/rom.sh b/include/rom.sh index 8f605e3a..a92348bf 100644 --- a/include/rom.sh +++ b/include/rom.sh @@ -243,11 +243,11 @@ cprom() { tmpnew=""; newrom="bin/$target/${pname}_${target}_$initmode.rom" [ -n "$displaymode" ] && newrom="${newrom%.rom}_$displaymode.rom" - [ $# -gt 0 ] && [ "$1" != "seauboot" ] && tmpnew="${1##*/}" && \ + [ $# -gt 0 ] && [ "${1%.gkb}" != "$1" ] && tmpnew="${1##*/}" && \ newrom="${newrom%.rom}_${tmpnew%.gkb}.rom" x_ mkdir -p "bin/$target" - x_ cp "$tmprom" "$newrom" && [ $# -gt 0 ] && [ "$1" != "seauboot" ] \ + x_ cp "$tmprom" "$newrom" && [ $# -gt 0 ] && [ "${1%.gkb}" != "$1" ] \ && cbfs "$newrom" "$grubdata/keymap/$tmpnew" keymap.gkb raw [ $# -gt 0 ] && [ "$1" = "seauboot" ] && \ cbfs "$newrom" "$grubdata/bootorder_uboot" bootorder raw; : -- cgit v1.2.1 From dc9fe517cb04c1903ce7974267821c51640e0e60 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 5 May 2025 18:08:55 +0100 Subject: rom.sh: Safer cprom() Don't insert special files like GRUB keymaps after copying to the final destination. Instead, copy the tmprom to /tmp and operate on that, in these instances. This is less efficient, depending on the user's configuration; if /tmp is on the same file system as the user's xbmkpwd, it should be fine. However, the actual performance hit isn't that bad in practise, on most setups. If the user's /tmp is a tmpfs, then that means using tmpfs, but it's one image at a time. It should be OK. Signed-off-by: Leah Rowe --- include/rom.sh | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'include') diff --git a/include/rom.sh b/include/rom.sh index a92348bf..98b94926 100644 --- a/include/rom.sh +++ b/include/rom.sh @@ -241,16 +241,24 @@ add_uboot() cprom() { + cpcmd="cp" + tmpnew=""; newrom="bin/$target/${pname}_${target}_$initmode.rom" [ -n "$displaymode" ] && newrom="${newrom%.rom}_$displaymode.rom" [ $# -gt 0 ] && [ "${1%.gkb}" != "$1" ] && tmpnew="${1##*/}" && \ newrom="${newrom%.rom}_${tmpnew%.gkb}.rom" - x_ mkdir -p "bin/$target" - x_ cp "$tmprom" "$newrom" && [ $# -gt 0 ] && [ "${1%.gkb}" != "$1" ] \ - && cbfs "$newrom" "$grubdata/keymap/$tmpnew" keymap.gkb raw + irom="$tmprom" + [ $# -lt 1 ] || irom="`mktemp`" || err "!mk irom, $(echo "$@")" + [ $# -gt 0 ] && x_ cp "$tmprom" "$irom" && cpcmd="mv" + + [ $# -gt 0 ] && [ "${1%.gkb}" != "$1" ] && \ + cbfs "$irom" "$grubdata/keymap/$tmpnew" keymap.gkb raw [ $# -gt 0 ] && [ "$1" = "seauboot" ] && \ - cbfs "$newrom" "$grubdata/bootorder_uboot" bootorder raw; : + cbfs "$irom" "$grubdata/bootorder_uboot" bootorder raw; : + + x_ mkdir -p "bin/$target" + x_ $cpcmd "$irom" "$newrom" } cbfs() -- cgit v1.2.1 From 8ca06463ebc42142ca7618ee6a07950059cf4820 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 5 May 2025 18:14:44 +0100 Subject: rom.sh: Print the rom image path being generated This message used to exist, and it's a nice feedback for the user, to confirm that the build went OK. Signed-off-by: Leah Rowe --- include/rom.sh | 1 + 1 file changed, 1 insertion(+) (limited to 'include') diff --git a/include/rom.sh b/include/rom.sh index 98b94926..0eebdabb 100644 --- a/include/rom.sh +++ b/include/rom.sh @@ -257,6 +257,7 @@ cprom() [ $# -gt 0 ] && [ "$1" = "seauboot" ] && \ cbfs "$irom" "$grubdata/bootorder_uboot" bootorder raw; : + printf "Creating new %s image: '%s'\n" "$projectname" "$newrom" x_ mkdir -p "bin/$target" x_ $cpcmd "$irom" "$newrom" } -- cgit v1.2.1 From f98e34a24dd21ebafbfac2e019d3a4bc1cf500cb Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 5 May 2025 20:33:02 +0100 Subject: singletree/elfcheck: use fx_, not fe_ fe_ returns an error on the find command, but we rely on the only error ever being our intentional exit, upon discovering files. in singletree, the directory being checked was already checked first, so we know it's safe not to err on find; and find not reporting an error if no files are found is ok. on elfcheck, it's very much the same thing. In fact, we very much want it to return 0 if the directory doesn't exist, or if files don't exist within it. Therefore, use fx_ which is designed for this use-case. Quick re-cap: fx and fe execute a given function name with each line outputting by find as an argument, each time. It is somewhat similar in scope to find's -exec command. We use fe_ as shorthand in several places all over lbmk. 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 b8f99674..2c28b112 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -148,7 +148,7 @@ chkvars() # e.g. coreboot is multi-tree, so 1 singletree() { - ( fe_ "exit 1" "config/$1/"*/ -type f -name "target.cfg" ) || return 1 + ( fx_ "exit 1" "config/$1/"*/ -type f -name "target.cfg" ) || return 1 } fe_() -- cgit v1.2.1 From 17d826d3a9614fea2bc87d8203b7f07fe4b7fb54 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 5 May 2025 20:38:19 +0100 Subject: lbmk: Replace err with much simpler implementation The current implementation is insanely over-engineered, and completely unnecessary. Signed-off-by: Leah Rowe --- include/init.sh | 2 -- include/inject.sh | 1 - include/lib.sh | 22 ---------------------- 3 files changed, 25 deletions(-) (limited to 'include') diff --git a/include/init.sh b/include/init.sh index 8f5ab059..1be860ea 100644 --- a/include/init.sh +++ b/include/init.sh @@ -14,8 +14,6 @@ projectsite="https://libreboot.org/" export PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games" xbmkpath="$PATH" -xbmk_err="err_" - eval "`setvars "" _nogit board reinstall versiondate aur_notice configdir \ datadir version xbmkpwd relname xbmkpwd xbmktmp python pyver xbmklocal \ xbmklock`" diff --git a/include/inject.sh b/include/inject.sh index 6aceb52c..6caf8500 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -270,7 +270,6 @@ fail_inject() inject() { need_files="n" - xbmk_err="fail_inject" remkdir "$tmpromdel" set +u +e diff --git a/include/lib.sh b/include/lib.sh index 2c28b112..e83170ee 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -184,28 +184,6 @@ x_() err() { set -u -e - - xbmk_err_val=0 - real_err="" && [ -n "${xbmk_err+x}" ] && real_err="$xbmk_err" - - if [ -z "$real_err" ]; then - printf "WARNING: err not set. Defaulting to 'err_'\n" 1>&2 - real_err="err_" - fi - - ( - $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 ] && err_ "Error function '$real_err' did exit 0" - exit 1 # just in case! -} - -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 c275f35e7e26c878011e8033680c11b75637390a Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 5 May 2025 20:41:48 +0100 Subject: lib.sh x_(): Remove warning of empty args It's completely unnecessary, and I forsee this check breaking the build system at some point, since some commands rely on the output of other commands. Therefore, I've removed this check. Signed-off-by: Leah Rowe --- include/lib.sh | 1 - 1 file changed, 1 deletion(-) (limited to 'include') diff --git a/include/lib.sh b/include/lib.sh index e83170ee..6de1010e 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -176,7 +176,6 @@ 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 ef38333f8b0dae8f7f7b271128e2805de9669be3 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 5 May 2025 20:45:31 +0100 Subject: lib.sh find_ex: Write sort errors to /dev/null 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 6de1010e..e6fa7e75 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -166,7 +166,7 @@ find_ex() xmsg="$1" && shift 1 fd="`mktemp`" && x_ rm -f "$fd" && x_ touch "$fd" xx="$1" && shift 1 - $xmsg find "$@" 2>/dev/null | sort > "$fd" || \ + $xmsg find "$@" 2>/dev/null | sort 1>"$fd" 2>/dev/null || \ err "!find $(echo "$@") > \"$fd\"" while read -r fx; do $xx "$fx" || break; : -- cgit v1.2.1 From 7585336b914d5d43ab85ba2f75fc5215be7782fb Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 5 May 2025 21:05:45 +0100 Subject: inject.sh: simplify kconfig scanning Use fe_ with a new function, scankconfig, to do the same thing. Not only is this simpler, it now also operates on all coreboot configs for a given target, whereas it previously only operated on the first one. This is useful for cases where one config might use a file that the other one does not; in practise, we don't do this yet, but it's a theoretical possibility Also: don't use the function check_defconfig, which is now redundant and has been removed. That function also conflicted with another function by the same name in mk, but fortunately didn't cause an issue in practise, due to how sh works; when vendor.sh was used, it was without running the tree commands, except under a separate lbmk instance. So this is a simplification, a feature enhancement and even a bug fix, all wrapped into one! Signed-off-by: Leah Rowe --- include/inject.sh | 12 +++++++++--- include/lib.sh | 8 -------- 2 files changed, 9 insertions(+), 11 deletions(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index 6caf8500..fa6ac095 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -49,9 +49,8 @@ download() readkconfig() { x_ rm -f "$xbmktmp/cbcfg" - cbcfg="`check_defconfig "$boarddir"`" || for cbc in $cv; do - grep "$cbc" "$cbcfg" 1>>"$xbmktmp/cbcfg" 2>/dev/null || : - done + fe_ scankconfig "$boarddir/config" -type f + eval "`setcfg "$xbmktmp/cbcfg" 1`" for c in $cvchk; do @@ -63,6 +62,13 @@ readkconfig() return 1 } +scankconfig() +{ + for cbc in $cv; do + grep "$cbc" "$1" 1>>"$xbmktmp/cbcfg" 2>/dev/null || : + done +} + bootstrap() { x_ ./mk -f coreboot ${cbdir##*/} diff --git a/include/lib.sh b/include/lib.sh index e6fa7e75..530ea170 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -105,14 +105,6 @@ mk() done; : } -check_defconfig() -{ - [ -d "$1" ] || err "Target '$1' not defined." - for x in "$1"/config/*; do - [ -f "$x" ] && printf "%s\n" "$x" && return 1 - done; : -} - setvars() { _setvars="" -- cgit v1.2.1 From 73074dedee33bfa66edfc9a19dd9625598911518 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 5 May 2025 21:13:28 +0100 Subject: inject.sh: Further simplified FSP extraction We don't need the copy command at all, since the files it copies are the only ones that the Python script does anyway, so now we just make that script output to the directory, directly, where these files must go. 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 fa6ac095..5c5e1e1c 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -260,7 +260,7 @@ copy_tbfw() extract_fsp() { x_ python "$cbdir/3rdparty/fsp/Tools/SplitFspBin.py" split -f "$1" \ - -o "$2" -n "Fsp.fd" && x_ cp "$appdir/"Fsp_*.fd "${_dest%/*}" + -o "${_dest%/*}" -n "Fsp.fd" } fail_inject() -- cgit v1.2.1 From 282b939d9dae58f2ef128b3a866ba8640f87739b Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 5 May 2025 21:33:29 +0100 Subject: init.sh: New function dx_ to execute path files Generated by find, this is a wrapper in place of using for loops everywhere. This simplification temporarily increases the amount of code, because we don't do this a lot, but this will reduce the growth of the build system code size in future changes. Signed-off-by: Leah Rowe --- include/git.sh | 4 +--- include/lib.sh | 11 ++++++++--- 2 files changed, 9 insertions(+), 6 deletions(-) (limited to 'include') diff --git a/include/git.sh b/include/git.sh index 7995df06..535c7d6e 100644 --- a/include/git.sh +++ b/include/git.sh @@ -54,9 +54,7 @@ git_prep() chkvars rev tmpclone "$1" "$2" "$tmpgit" "$rev" "$_patchdir" if singletree "$project" || [ $# -gt 4 ]; then - [ -f "$mdir/module.list" ] && while read -r msrcdir; do - fetch_submodule "$msrcdir" - done < "$mdir/module.list"; : + dx_ fetch_submodule "$mdir/module.list" fi [ "$_loc" != "$XBMK_CACHE/repo/$project" ] && \ diff --git a/include/lib.sh b/include/lib.sh index 530ea170..572fcf68 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -160,12 +160,17 @@ find_ex() xx="$1" && shift 1 $xmsg find "$@" 2>/dev/null | sort 1>"$fd" 2>/dev/null || \ err "!find $(echo "$@") > \"$fd\"" - while read -r fx; do - $xx "$fx" || break; : - done < "$fd" + dx_ "$xx" "$fd" x_ rm -f "$fd" } +dx_() +{ + [ -f "$2" ] && while read -r fx; do + $1 "$fx" + done < "$2"; : +} + x_() { [ $# -lt 1 ] || [ -n "$1" ] || err "Empty first arg: x_ $(echo "$@")" -- cgit v1.2.1 From 4c1de1ad1267f74ed28cdb0a7c2cc06d52949dda Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Tue, 6 May 2025 04:49:56 +0100 Subject: inject.sh: remove unused function Signed-off-by: Leah Rowe --- include/inject.sh | 10 ---------- 1 file changed, 10 deletions(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index 5c5e1e1c..3cfe891c 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -263,16 +263,6 @@ extract_fsp() -o "${_dest%/*}" -n "Fsp.fd" } -fail_inject() -{ - [ -L "$tmpromdel" ] || [ ! -d "$tmpromdel" ] || \ - rm -Rf "$tmpromdel" || : - printf "\n\n%s\n\n" "$dontflash" 1>&2 - printf "WARNING: File '%s' was NOT modified.\n\n" "$archive" 1>&2 - printf "Please MAKE SURE vendor files are inserted before flashing\n\n" - err_ "$1" -} - inject() { need_files="n" -- cgit v1.2.1 From e8be3fd1d41c3c0a81c2cfecb3fa68271ad794ca Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Tue, 6 May 2025 11:09:39 +0100 Subject: git.sh: Simplify git am handling fx_ and fe_ really are the best shell functions ever. really. they're the best. Signed-off-by: Leah Rowe --- include/git.sh | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) (limited to 'include') diff --git a/include/git.sh b/include/git.sh index 535c7d6e..0a05b5ab 100644 --- a/include/git.sh +++ b/include/git.sh @@ -108,23 +108,13 @@ tmpclone() ( [ $# -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" + fx_ "eval x_ git -C \"$3\" am" "$5" -type f ) || repofail="y" [ "$repofail" = "y" ] && [ $# -lt 6 ] && tmpclone "$@" retry [ "$repofail" = "y" ] && err "!clone $1 $2 $3 $4 $5"; : } -git_am_patches() -{ - for p in "$2/"*; do - [ -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" - done; : -} - nuke() { e "config/${1%/}/nuke.list" f missing || while read -r nukefile; do -- cgit v1.2.1