lbmk scripts: general code cleanup/optimisation

Signed-off-by: Leah Rowe <leah@libreboot.org>
9020vga
Leah Rowe 2023-12-23 16:16:26 +00:00
parent 25f9d9480f
commit 655d3cdc88
3 changed files with 30 additions and 52 deletions

21
build
View File

@ -37,22 +37,16 @@ main()
{ {
xx_ id -u 1>/dev/null 2>/dev/null xx_ id -u 1>/dev/null 2>/dev/null
[ $# -lt 1 ] && fail "Too few arguments. Try: ${0} help" [ $# -lt 1 ] && fail "Too few arguments. Try: ${0} help"
if [ "${1}" = "dependencies" ]; then
xx_ install_packages $@
lbmk_exit 0
fi
initialise_command $@ && shift 1 [ "${1}" = "dependencies" ] && xx_ install_packages $@ && lbmk_exit 0
check_git for cmd in initcmd check_git check_project git_init excmd; do
check_project eval "${cmd} \$@"
git_init done
execute_command $@
lbmk_exit 0 lbmk_exit 0
} }
initialise_command() initcmd()
{ {
[ "$(id -u)" != "0" ] || fail "this command as root is not permitted" [ "$(id -u)" != "0" ] || fail "this command as root is not permitted"
@ -104,11 +98,12 @@ git_init()
fail "${PWD}: cannot git-tag ${projectname}/${version}" fail "${PWD}: cannot git-tag ${projectname}/${version}"
} }
execute_command() excmd()
{ {
lbmkcmd="${buildpath}/${option}" lbmkcmd="${buildpath}/${option}"
echo "TEST: $lbmkcmd"
[ -f "${lbmkcmd}" ] || fail "Invalid command. Run: ${linkpath} help" [ -f "${lbmkcmd}" ] || fail "Invalid command. Run: ${linkpath} help"
"${lbmkcmd}" $@ || fail "execute_command: ${lbmkcmd} ${@}" shift 1; "$lbmkcmd" $@ || fail "excmd: ${lbmkcmd} ${@}"
} }
usage() usage()

View File

@ -1,7 +1,7 @@
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
# SPDX-FileCopyrightText: 2022, 2023 Leah Rowe <leah@libreboot.org> # SPDX-FileCopyrightText: 2022, 2023 Leah Rowe <leah@libreboot.org>
version=""; versiondate=""; projectname=""; _nogit="" version=""; version_=""; versiondate=""; versiondate_=""; projectname=""; _nogit=""
x_() { x_() {
[ $# -lt 1 ] || ${@} || err_exit err ${@} [ $# -lt 1 ] || ${@} || err_exit err ${@}
@ -48,17 +48,11 @@ check_project()
[ ! -e ".git" ] || versiondate="$(git show --no-patch --no-notes \ [ ! -e ".git" ] || versiondate="$(git show --no-patch --no-notes \
--pretty='%ct' HEAD)" || versiondate="${versiondate_}" --pretty='%ct' HEAD)" || versiondate="${versiondate_}"
[ -n "${versiondate}" ] || fail "Unknown version date" || \ for p in projectname version versiondate; do
err "Unknown version date" eval "[ -n \"\$$p\" ] || fail \"$p unset\" || err \"$p unset\""
[ -n "${version}" ] || fail "Unknown version" || \ p_="x_ printf \"%s\\n\" \"\$$p\" > $p"
err "Unknown version" eval "x$p_ || $p_"
[ -n "${projectname}" ] || fail "Unknown project" || \ done
err "Unknown project"
xx_ printf "%s\n" "${version}" > version || \
x_ printf "%s\n" "${version}" > version
xx_ printf "%s\n" "${versiondate}" > versiondate || \
x_ printf "%s\n" "${versiondate}" > versiondate
export LOCALVERSION="-${projectname}-${version%%-*}" export LOCALVERSION="-${projectname}-${version%%-*}"
} }
@ -67,8 +61,7 @@ setvars()
{ {
_setvars="" _setvars=""
[ $# -lt 2 ] && err "setvars: too few arguments" [ $# -lt 2 ] && err "setvars: too few arguments"
val="${1}" val="${1}" && shift 1
shift 1
for var in $@; do for var in $@; do
_setvars="${var}=\"${val}\"; ${_setvars}" _setvars="${var}=\"${val}\"; ${_setvars}"
done done

View File

@ -21,7 +21,7 @@ kmapdir="config/grub/keymap"
# target.cfg files have to specifically enable [a] payload(s) # target.cfg files have to specifically enable [a] payload(s)
pv="payload_grub payload_grub_withseabios payload_seabios payload_memtest t" pv="payload_grub payload_grub_withseabios payload_seabios payload_memtest t"
pv="${pv} payload_seabios_withgrub payload_seabios_grubonly payload_uboot memtest_bin" pv="${pv} payload_seabios_withgrub payload_seabios_grubonly payload_uboot memtest_bin"
v="romdir cbrom initmode displaymode cbcfg targetdir tree arch" v="romdir cbrom initmode displaymode cbcfg targetdir tree arch keymaps"
v="${v} grub_timeout ubdir board grub_scan_disk uboot_config" v="${v} grub_timeout ubdir board grub_scan_disk uboot_config"
eval "$(setvars "n" ${pv})" eval "$(setvars "n" ${pv})"
eval "$(setvars "" ${v} boards _displaymode _payload _keyboard all targets)" eval "$(setvars "" ${v} boards _displaymode _payload _keyboard all targets)"
@ -53,8 +53,7 @@ main()
err "Cannot generate list of boards for building" err "Cannot generate list of boards for building"
for x in ${boards}; do for x in ${boards}; do
eval "$(setvars "n" ${pv})" eval "$(setvars "n" ${pv}) $(setvars "" ${v})"
eval "$(setvars "" ${v})"
grub_background="background1280x800.png" grub_background="background1280x800.png"
board="${x}" board="${x}"
check_target check_target
@ -65,7 +64,8 @@ main()
[ -z "${targets}" ] && err "No ROM images were compiled" [ -z "${targets}" ] && err "No ROM images were compiled"
printf "\nROM images available in these directories:\n" printf "\nROM images available in these directories:\n"
printf "%s^^ ROM images available in these directories.\n\n" "$targets" eval "printf \"${targets}\""
printf "^^ ROM images available in these directories.\n\n"
printf "DO NOT flash ROM images from elf/ - please use bin/ instead.\n" printf "DO NOT flash ROM images from elf/ - please use bin/ instead.\n"
} }
@ -127,20 +127,15 @@ prepare_target()
cbfstool="cbutils/${tree}/cbfstool" cbfstool="cbutils/${tree}/cbfstool"
cbrom="${cbdir}/build/coreboot.rom" cbrom="${cbdir}/build/coreboot.rom"
[ -f "${cbfstool}" ] || \ [ -f "${cbfstool}" ] || x_ ./update trees -b coreboot utils ${tree}
x_ ./update trees -b coreboot utils ${tree}
build_dependency_seabios
memtest_bin="memtest86plus/build64/memtest.bin" memtest_bin="memtest86plus/build64/memtest.bin"
[ "${payload_memtest}" != "y" ] || [ -f "src/${memtest_bin}" ] || \ [ "${payload_memtest}" != "y" ] || [ -f "src/${memtest_bin}" ] || \
x_ ./update trees -b memtest86plus x_ ./update trees -b memtest86plus
rm -f "${romdir}/"* || err "!prepare, rm files, ${romdir}" for bt in dependency_seabios dependency_grub dependency_uboot target; do
eval "build_${bt}"
build_dependency_grub done
build_dependency_uboot
build_target
} }
build_dependency_seabios() build_dependency_seabios()
@ -162,14 +157,15 @@ build_dependency_grub()
rebuild_grub="n" rebuild_grub="n"
[ -f "${grubelf}" ] || rebuild_grub="y" [ -f "${grubelf}" ] || rebuild_grub="y"
for keymapfile in "${kmapdir}"/*.gkb; do for keymapfile in "${kmapdir}"/*.gkb; do
[ "${rebuild_grub}" = "y" ] || break
[ -f "${keymapfile}" ] || continue [ -f "${keymapfile}" ] || continue
keymaps="${keymaps} ${keymapfile}"
keymap="${keymapfile##*/}" keymap="${keymapfile##*/}"
keymap="${keymap%.gkb}" keymap="${keymap%.gkb}"
[ ! -f "elf/grub/keymap_${keymap}.cfg" ] && \ [ ! -f "elf/grub/keymap_${keymap}.cfg" ] && \
rebuild_grub="y" && break rebuild_grub="y"
done done
[ -n "${_keyboard}" ] && keymaps="${kmapdir}/${_keyboard}.gkb"
[ "${rebuild_grub}" = "y" ] || return 0 [ "${rebuild_grub}" = "y" ] || return 0
x_ ./build grub x_ ./build grub
} }
@ -189,6 +185,8 @@ build_dependency_uboot()
build_target() build_target()
{ {
rm -f "${romdir}/"* || err "!prepare, rm files, ${romdir}"
for x in "normal" "vgarom" "libgfxinit"; do for x in "normal" "vgarom" "libgfxinit"; do
initmode="${x}" initmode="${x}"
hmode="vesafb" hmode="vesafb"
@ -229,10 +227,8 @@ build_roms()
[ "${payload_memtest}" != "y" ] || \ [ "${payload_memtest}" != "y" ] || \
x_ "${cbfstool}" "${cbrom}" add-payload \ x_ "${cbfstool}" "${cbrom}" add-payload \
-f "src/${memtest_bin}" -n img/memtest -c lzma -f "src/${memtest_bin}" -n img/memtest -c lzma
[ "${payload_seabios}" = "y" ] && \ [ "${payload_seabios}" = "y" ] && build_seabios_roms
build_seabios_roms [ "${payload_grub}" != "y" ] || x_ build_grub_roms "${cbrom}" "grub"
[ "${payload_grub}" != "y" ] || \
x_ build_grub_roms "${cbrom}" "grub"
[ "${payload_uboot}" = "y" ] || return 0 [ "${payload_uboot}" = "y" ] || return 0
x_ cp "${_cbrom}" "${cbrom}" x_ cp "${_cbrom}" "${cbrom}"
build_uboot_roms build_uboot_roms
@ -299,12 +295,6 @@ build_grub_roms()
-f "${tmpcfg}" -n timeout.cfg -t raw -f "${tmpcfg}" -n timeout.cfg -t raw
x_ rm -f "${tmpcfg}" x_ rm -f "${tmpcfg}"
keymaps=""
for kmapfile in "${kmapdir}"/*; do
keymaps="${keymaps} ${kmapfile}"
done
[ -z "${_keyboard}" ] || keymaps="${kmapdir}/${_keyboard}.gkb"
for keymapfile in ${keymaps}; do for keymapfile in ${keymaps}; do
[ -f "${keymapfile}" ] || continue [ -f "${keymapfile}" ] || continue
keymap="${keymapfile##*/}" keymap="${keymapfile##*/}"