mirror of
https://codeberg.org/libreboot/lbmk.git
synced 2026-07-12 14:32:42 +02:00
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>
This commit is contained in:
+4
-8
@@ -18,8 +18,7 @@ eval "$(setvars "" arch cfgsdir codedir config config_name crossgcc_ada mode \
|
||||
|
||||
main()
|
||||
{
|
||||
while getopts f:b:m:u:c:x:s:l:n: option
|
||||
do
|
||||
while getopts f:b:m:u:c:x:s:l:n: option; do
|
||||
_f="${1}"
|
||||
case "${1}" in
|
||||
-b) : ;;
|
||||
@@ -38,11 +37,8 @@ main()
|
||||
[ -z "${_f}" ] && err "missing flag (-m/-u/-b/-c/-x/-f/-s/-l/-n)"
|
||||
[ -z "${project}" ] && err "project name not specified"
|
||||
|
||||
if [ ! -f "config/${project}/build.list" ]; then
|
||||
build_projects $@
|
||||
else
|
||||
build_targets $@
|
||||
fi
|
||||
[ -f "config/${project}/build.list" ] && build_targets $@ && return 0
|
||||
build_projects $@
|
||||
}
|
||||
|
||||
build_projects()
|
||||
@@ -209,7 +205,7 @@ check_cross_compiler()
|
||||
fi
|
||||
|
||||
# we *must* ensure that u-boot's build system uses crossgcc first
|
||||
export PATH="$(pwd)/${cbdir}/util/crossgcc/xgcc/bin:$PATH"
|
||||
export PATH="${PWD}/${cbdir}/util/crossgcc/xgcc/bin:$PATH"
|
||||
}
|
||||
|
||||
check_config()
|
||||
|
||||
Vendored
+6
-4
@@ -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()
|
||||
|
||||
Vendored
+22
-12
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user