summaryrefslogtreecommitdiff
path: root/script/vendor
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2023-10-20 04:10:50 +0100
committerLeah Rowe <leah@libreboot.org>2023-10-20 05:03:16 +0100
commit6af65ad430ae58bac5afd0d6e12a97e5e12e9b59 (patch)
tree6fd88f362d2ea26ae78d614aa0a3043fa3ddc422 /script/vendor
parent4e54a051ef4ae66bae402479cd4ecdc9709e44ca (diff)
error handling code cleanup and fixes
in some cases, use of x_ or xx_ can be error-prone, due to the way $@ is handled; commands requiring quotes, or with funny file names as arguments such as spaces in the file name, or other special characters, can make the x/xx functions break. in those cases, where x/xx must not be used, the commands use || err instead in other cases, use of x/xx is superfluous, and has been removed in some commands. Signed-off-by: Leah Rowe <leah@libreboot.org>
Diffstat (limited to 'script/vendor')
-rwxr-xr-xscript/vendor/download10
-rwxr-xr-xscript/vendor/inject34
2 files changed, 28 insertions, 16 deletions
diff --git a/script/vendor/download b/script/vendor/download
index e8c7e5a4..40244fff 100755
--- a/script/vendor/download
+++ b/script/vendor/download
@@ -134,7 +134,7 @@ mkdirs()
{
[ -f "${1}" ] && \
printf "mkdirs ${1} ${2}: already downloaded\n" 1>&2 && return 1
- x_ mkdir -p "${1%/*}"
+ mkdir -p "${1%/*}" || err "mkdirs: !mkdir -p ${1%/*}"
x_ rm -Rf "${appdir}"
x_ mkdir -p "${appdir}/"
extract_archive "${_dl}" "${appdir}" || \
@@ -190,7 +190,7 @@ 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 || \
- x_ unar -D 68*.CAB Rom.bin
+ unar -D 68*.CAB Rom.bin || err "can't extract Rom.bin"
x_ mv Rom.bin ec.bin
fi
[ -f ec.bin ] || err "extract_kbc1126_ec ${board}: can't extract"
@@ -203,7 +203,8 @@ extract_kbc1126ec()
done
[ "${ec_ex}" = "y" ] || \
err "extract_kbc1126_ec ${board}: didn't extract ecfw1/2.bin"
- x_ cp "${appdir}/"ec.bin.fw* "${_dest%/*}/"
+ cp "${appdir}/"ec.bin.fw* "${_dest%/*}/" || \
+ err "extract_kbc1126_ec ${board}: can't copy ec binaries"
}
extract_e6400vga()
@@ -221,7 +222,8 @@ extract_e6400vga()
[ -f "${E6400_VGA_romname}" ] || \
err "extract_e6400vga: can't extract vga rom from bios.bin"
)
- x_ cp "${appdir}/${E6400_VGA_romname}" "${_dest}"
+ cp "${appdir}/${E6400_VGA_romname}" "${_dest}" || \
+ err "extract_e6400vga ${board}: can't copy vga rom to ${_dest}"
}
extract_sch5545ec()
diff --git a/script/vendor/inject b/script/vendor/inject
index 1eebca30..923224d0 100755
--- a/script/vendor/inject
+++ b/script/vendor/inject
@@ -78,7 +78,7 @@ detect_board()
_stripped_prefix=${filename#*_}
board="${_stripped_prefix%.tar.xz}" ;;
*)
- err "detect_board: could not detect board type"
+ err "detect_board $filename: could not detect board type"
esac
[ -d "${boarddir}/" ] || \
err "detect_board: dir, ${boarddir}, doesn't exist"
@@ -98,7 +98,10 @@ build_dependencies()
inject_vendorfiles()
{
- [ "${release}" != "y" ] && x_ patch_rom "${rom}" && return 0
+ if [ "${release}" != "y" ]; then
+ patch_rom "${rom}"
+ return 0
+ fi
printf "patching release images\n"
patch_release_roms
}
@@ -108,11 +111,12 @@ patch_release_roms()
_tmpdir="tmp/romdir"
x_ rm -Rf "${_tmpdir}"
x_ mkdir -p "${_tmpdir}"
- x_ tar -xf "${archive}" -C "${_tmpdir}"
+ tar -xf "${archive}" -C "${_tmpdir}" || \
+ err "patch_release_roms: !tar -xf \"${archive}\" -C \"${_tmpdir}\""
for x in "${_tmpdir}"/bin/*/*.rom ; do
printf "patching rom: %s\n" "$x"
- x_ patch_rom "${x}"
+ patch_rom "${x}"
done
for x in "${_tmpdir}"/bin/*/*_nomicrocode.rom ; do
[ -f "${x}" ] || continue
@@ -123,7 +127,7 @@ patch_release_roms()
done
(
- x_ cd "${_tmpdir}/bin/"*
+ x_ cd "${_tmpdir}/bin/"* # TODO: very dodgy, re-write accordingly
# NOTE: For compatibility with older rom releases, defer to sha1
[ "${nukemode}" = "nuke" ] || \
@@ -211,22 +215,28 @@ inject()
if [ "${_t}" = "GbE" ]; then
x_ mkdir -p tmp
- x_ cp "${_dest}" "tmp/gbe.bin"
+ cp "${_dest}" "tmp/gbe.bin" || \
+ err "inject: !cp \"${_dest}\" \"tmp/gbe.bin\""
_dest="tmp/gbe.bin"
- x_ "${nvmutil}" "${_dest}" setmac "${new_mac}"
+ "${nvmutil}" "${_dest}" setmac "${new_mac}" || \
+ err "inject ${_dest}: can't change mac address"
fi
if [ "${cbfsname}" = "IFD" ]; then
if [ "${nukemode}" != "nuke" ]; then
- x_ "${ifdtool}" -i ${_t}:${_dest} "${rom}" -O "$rom"
+ "${ifdtool}" -i ${_t}:${_dest} "${rom}" -O "$rom" || \
+ err "inject: can't insert $_t ($dest) into $rom"
else
- x_ "${ifdtool}" --nuke ${_t} "${rom}" -O "${rom}"
+ "${ifdtool}" --nuke ${_t} "${rom}" -O "${rom}" || \
+ err "inject ${rom}: can't nuke ${_t} in IFD"
fi
else
if [ "${nukemode}" != "nuke" ]; then
- x_ "${cbfstool}" "${rom}" add -f "${_dest}" \
- -n "${cbfsname}" -t ${_t} ${_offset}
+ "${cbfstool}" "${rom}" add -f "${_dest}" \
+ -n "${cbfsname}" -t ${_t} ${_offset} || \
+ err "inject $rom: can't insert $_t file $_dest"
else
- x_ "${cbfstool}" "${rom}" remove -n "${cbfsname}"
+ "${cbfstool}" "${rom}" remove -n "${cbfsname}" || \
+ err "inject $rom: can't remove ${cbfsname}"
fi
fi