From 62f23123cb2a5ef594f405053d0b111c6e01de87 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 21 Aug 2023 19:41:49 +0100 Subject: general code cleanup on lbmk shell scripts in update/blobs/download, i saw instances where appdir was being deleted with rm -r, but the more appropriate command would rm -Rf. this is now fixed. other than that, i've mostly just simplified a bunch of if statements and consolidated some duplicated logic (e.g. if/else block for dependencies in build_dependencies() of update/blobs/download one or two functions and/or variables have been renamed, for greater clarity in the code, also removed a few messages that were redundant used printf instead of echo, in a few places, also fixed up the indentation in a few places Signed-off-by: Leah Rowe --- resources/scripts/build/boot/roms | 47 ++---- resources/scripts/build/boot/roms_helper | 124 +++++++--------- resources/scripts/build/clean/cbutils | 9 +- resources/scripts/build/clean/crossgcc | 7 +- resources/scripts/build/coreboot/utils | 15 +- resources/scripts/build/descriptors/ich9m | 6 +- resources/scripts/build/grub/payload | 33 ++--- resources/scripts/build/grub/utils | 15 +- resources/scripts/build/release/roms | 53 +++---- resources/scripts/build/release/src | 21 +-- resources/scripts/build/src/for | 4 +- resources/scripts/handle/config/file | 17 +-- resources/scripts/misc/versioncheck | 18 +-- resources/scripts/update/blobs/download | 238 ++++++++++-------------------- resources/scripts/update/blobs/extract | 68 +++------ resources/scripts/update/blobs/inject | 155 +++++++------------ resources/scripts/update/blobs/mrc | 58 +++----- 17 files changed, 307 insertions(+), 581 deletions(-) (limited to 'resources/scripts') diff --git a/resources/scripts/build/boot/roms b/resources/scripts/build/boot/roms index 70054fd4..44b7cb8e 100755 --- a/resources/scripts/build/boot/roms +++ b/resources/scripts/build/boot/roms @@ -36,20 +36,11 @@ firstoption="" main() { - if [ $# -lt 1 ]; then - usage - exit 1 - fi - firstoption="${1}" + [ $# -lt 1 ] && usage && exit 1 - if [ "${firstoption}" = "help" ]; then - usage - exit 0 - fi - if [ "${firstoption}" = "list" ]; then - listboards - exit 0 - fi + firstoption="${1}" + [ "${firstoption}" = "help" ] && usage && exit 0 + [ "${firstoption}" = "list" ] && listboards && exit 0 while [ $# -gt 0 ]; do case ${1} in @@ -68,21 +59,16 @@ main() shift done - if [ -z ${opts+x} ]; then - opts="" - fi - + [ -z ${opts+x} ] && opts="" printf "Building %s ROM images\n" "${projectname}" if [ "${firstoption}" = "all" ]; then for boardname in $(listboards); do - buildrom "${boardname}" \ - || die "build/roms: error" + buildrom "${boardname}" || err "build/roms: error" done else for board in ${boards}; do - buildrom "${board}" \ - || die "build/roms: error" + buildrom "${board}" || err "build/roms: error" done fi @@ -116,9 +102,7 @@ usage() listboards() { for boarddir in resources/coreboot/*; do - if [ ! -d "${boarddir}" ]; then - continue - fi + [ ! -d "${boarddir}" ] && continue board="${boarddir##resources/coreboot/}" board="${board%/}" printf '%s\n' "${board##*/}" @@ -127,18 +111,13 @@ listboards() # Build ROM images for supported boards buildrom() { - board="$1" - - if [ -d "resources/coreboot/${board}/" ]; then - ./build boot roms_helper ${board}${opts} - else - printf "\nbuild/roms: target not defined: %s\n" ${board} - die "Run: ./build boot roms list" - fi + [ -d "resources/coreboot/${1}/" ] || \ + err "build/roms: target not defined: ${1}" + ./build boot roms_helper ${1}${opts} } -die() { - printf 'Error: %s\n' "${@}" 1>&2 +err() { + printf '%s\n' "${1}" 1>&2 exit 1 } diff --git a/resources/scripts/build/boot/roms_helper b/resources/scripts/build/boot/roms_helper index 5e2085d9..8438fffc 100755 --- a/resources/scripts/build/boot/roms_helper +++ b/resources/scripts/build/boot/roms_helper @@ -115,8 +115,8 @@ fi # NOTE: reverse logic must NOT be applied. If SeaBIOS-with-GRUB works, that # doesn't necessarily mean GRUb-with-SeaBIOS will. For example, the board # might have an external GPU, where it's recommended to boot SeaBIOS first -if [ "${payload_grub}" != "y" ] && [ "${payload_seabios}" != "y" ] \ - && [ "${payload_uboot}" != "y" ]; then +if [ "${payload_grub}" != "y" ] && [ "${payload_seabios}" != "y" ] && \ + [ "${payload_uboot}" != "y" ]; then for configfile in "resources/coreboot/${board}/config/"*; do [ ! -e "${configfile}" ] && continue printf "ERROR build/roms: Target '%s' defines no payload. " \ @@ -153,7 +153,7 @@ fi romdir="bin/${board}" cbdir="coreboot/${board}" -[ "${board}" != "${tree}" ] && \ +[ "${board}" = "${tree}" ] || \ cbdir="coreboot/${tree}" cbfstool="cbutils/${tree}/cbfstool" corebootrom="${cbdir}/build/coreboot.rom" @@ -191,10 +191,7 @@ if [ "${payload_grub}" = "y" ] \ printf "Required GRUB payloads not yet built. Building now:\n" fi for keymapfile in ${kmapdir}/*; do - - if [ ! -f "${keymapfile}" ]; then - continue - fi + [ -f "${keymapfile}" ] || continue keymap="${keymapfile##*/}" keymap="${keymap%.gkb}" @@ -216,7 +213,7 @@ if [ "${payload_uboot}" = "y" ]; then ubootelf="${ubdir}/u-boot.elf" [ ! -f "${ubootelf}" ] && [ -f "${ubdir}/u-boot.bin" ] && \ ubootelf="${ubdir}/u-boot.bin" - [ ! -f "${ubootelf}" ] && \ + [ -f "${ubootelf}" ] || \ err "Could not find u-boot build for board, ${board}" fi @@ -234,8 +231,7 @@ moverom() { if [ "${cuttype}" = "4MiB IFD BIOS region" ]; then dd if=${rompath} of=${newrompath} bs=1 \ - skip=$(($(stat -c %s ${rompath}) - 0x400000)) \ - count=4194304 + skip=$(($(stat -c %s ${rompath}) - 0x400000)) count=4194304 else cp ${rompath} ${newrompath} fi @@ -248,7 +244,7 @@ moverom() { touch "${emptyrom}" for deviceID in "0072" "3050"; do "${cbfstool}" "${newrompath}" add -f "${emptyrom}" \ - -n pci1000,${deviceID}.rom -t raw + -n pci1000,${deviceID}.rom -t raw done rm -f "${emptyrom}" fi @@ -256,30 +252,27 @@ moverom() { for romsize in 4 8 16; do ifdgbe="descriptors/ich9m/ich9fdgbe_${romsize}m.bin" if [ "${cuttype}" = "${romsize}MiB ICH9 IFD NOR flash" ]; then - if [ ! -f "${ifdgbe}" ]; then + [ -f "${ifdgbe}" ] || \ ./build descriptors ich9m - fi dd if=${ifdgbe} of=${newrompath} bs=1 count=12k \ - conv=notrunc + conv=notrunc fi cmpstr="${romsize}MiB ICH9 IFD NOGBE NOR flash" ifdgbe="descriptors/ich9m/ich9fdnogbe_${romsize}m.bin" if [ "${cuttype}" = "${cmpstr}" ]; then - if [ ! -f "${ifdgbe}" ]; then + [ -f "${ifdgbe}" ] || \ ./build descriptors ich9m - fi dd if=${ifdgbe} of=${newrompath} bs=1 count=4k \ - conv=notrunc + conv=notrunc fi done if [ "${cuttype}" = "i945 laptop" ]; then dd if=${newrompath} of=top64k.bin bs=1 \ - skip=$(($(stat -c %s ${newrompath}) - 0x10000)) \ - count=64k + skip=$(($(stat -c %s ${newrompath}) - 0x10000)) count=64k dd if=top64k.bin of=${newrompath} bs=1 \ - seek=$(($(stat -c %s ${newrompath}) - 0x20000)) \ - count=64k conv=notrunc + seek=$(($(stat -c %s ${newrompath}) - 0x20000)) count=64k \ + conv=notrunc rm -f top64k.bin fi @@ -288,11 +281,11 @@ moverom() { cp "${newrompath}" "${_newrom_b}" || exit 1 microcode_present="y" "${cbfstool}" "${_newrom_b}" remove -n \ - cpu_microcode_blob.bin || microcode_present="n" + cpu_microcode_blob.bin || microcode_present="n" if [ "${microcode_present}" = "n" ]; then rm -f "${_newrom_b}" || exit 1 printf "REMARK: '%s' already lacks microcode\n" \ - ${newrompath} + ${newrompath} printf "Renaming default ROM file instead.\n" mv "${newrompath}" "${_newrom_b}" || exit 1 fi @@ -313,27 +306,26 @@ mkSeabiosRom() { cp "${target_cbrom}" "${tmprom}" "${cbfstool}" "${tmprom}" add-payload -f "${target_seabioself}" \ - -n ${target_seabios_cbfs_path} -c lzma || exit 1 + -n ${target_seabios_cbfs_path} -c lzma || exit 1 "${cbfstool}" "${tmprom}" add-int -i 3000 -n etc/ps2-keyboard-spinup \ - || exit 1 + || exit 1 - if [ "${target_initmode}" = "normal" ] \ - || [ "${target_initmode}" = "libgfxinit" ]; then + if [ "${target_initmode}" = "normal" ] || \ + [ "${target_initmode}" = "libgfxinit" ]; then "${cbfstool}" "${tmprom}" add-int -i 2 \ - -n etc/pci-optionrom-exec || exit 1 + -n etc/pci-optionrom-exec || exit 1 elif [ "${target_initmode}" = "vgarom" ]; then # coreboot executes it "${cbfstool}" "${tmprom}" add-int -i 0 \ - -n etc/pci-optionrom-exec || exit 1 + -n etc/pci-optionrom-exec || exit 1 fi # for undefined modes, don't add this integer. use SeaBIOS defaults - "${cbfstool}" "${tmprom}" add-int -i 0 -n etc/optionroms-checksum \ - || exit 1 + "${cbfstool}" "${tmprom}" add-int -i 0 -n etc/optionroms-checksum || \ + exit 1 - if [ "${target_initmode}" = "libgfxinit" ]; then + [ "${target_initmode}" != "libgfxinit" ] || \ "${cbfstool}" "${tmprom}" add -f "${seavgabiosrom}" \ - -n vgaroms/seavgabios.bin -t raw || exit 1 - fi + -n vgaroms/seavgabios.bin -t raw || exit 1 printf "%s\n" "${tmprom}" } @@ -348,16 +340,16 @@ mkUbootRom() { target_ubdir="elf/u-boot/${board}/${target_uboot_config}" target_ubootelf="${target_ubdir}/u-boot.elf" - [ ! -f "${target_ubootelf}" ] && \ + [ -f "${target_ubootelf}" ] || \ target_ubootelf="${target_ubdir}/u-boot.bin" - [ ! -f "${target_ubootelf}" ] && \ + [ -f "${target_ubootelf}" ] || \ err "Could not find u-boot build for board, ${board}" tmprom=$(mktemp -t coreboot_rom.XXXXXXXXXX) cp "${target_cbrom}" "${tmprom}" "${cbfstool}" "${tmprom}" add-payload -f "${target_ubootelf}" \ - -n ${target_uboot_cbfs_path} -c lzma || exit 1 + -n ${target_uboot_cbfs_path} -c lzma || exit 1 printf "%s\n" "${tmprom}" } @@ -376,34 +368,34 @@ mkGrubRom() { cp "${target_cbrom}" "${tmprom}" || exit 1 "${cbfstool}" "${tmprom}" add-payload -f "${grubelf}" \ - -n ${target_grubelf_cbfs_path} -c lzma || exit 1 + -n ${target_grubelf_cbfs_path} -c lzma || exit 1 tmpgrubcfg=$(mktemp -t grub.cfg.XXXXXXXXXX) tmpgrubtestcfg=$(mktemp -t grubtest.cfg.XXXXXXXXXX) if [ "${grub_scan_disk}" = "ahci" ]; then sed \ 's/set\ grub_scan_disk=\"both\"/set\ grub_scan_disk=\"ahci\"/' \ - "${grubcfg}" > "${tmpgrubcfg}" + "${grubcfg}" > "${tmpgrubcfg}" sed \ 's/set\ grub_scan_disk=\"both\"/set\ grub_scan_disk=\"ahci\"/' \ - "${grubtestcfg}" > "${tmpgrubtestcfg}" + "${grubtestcfg}" > "${tmpgrubtestcfg}" elif [ "${grub_scan_disk}" = "ata" ]; then sed \ 's/set\ grub_scan_disk=\"both\"/set\ grub_scan_disk=\"ata\"/' \ - "${grubcfg}" > "${tmpgrubcfg}" + "${grubcfg}" > "${tmpgrubcfg}" sed \ 's/set\ grub_scan_disk=\"both\"/set\ grub_scan_disk=\"ata\"/' \ - "${grubtestcfg}" > "${tmpgrubtestcfg}" + "${grubtestcfg}" > "${tmpgrubtestcfg}" else cp "${grubcfg}" "${tmpgrubcfg}" cp "${grubtestcfg}" "${tmpgrubtestcfg}" fi - "${cbfstool}" "${tmprom}" add -f "${tmpgrubcfg}" -n grub.cfg -t raw \ - || exit 1 + "${cbfstool}" "${tmprom}" add -f "${tmpgrubcfg}" -n grub.cfg -t raw || \ + exit 1 "${cbfstool}" "${tmprom}" add -f "${tmpgrubtestcfg}" -n grubtest.cfg \ - -t raw || exit 1 + -t raw || exit 1 rm -f "${tmpgrubcfg}" "${tmpgrubtestcfg}" backgroundfile="background1280x800.png" @@ -413,7 +405,7 @@ mkGrubRom() { fi backgroundfile="resources/grub/background/${backgroundfile}" "${cbfstool}" "${tmprom}" add -f ${backgroundfile} -n background.png \ - -t raw || exit 1 + -t raw || exit 1 printf "%s\n" "${tmprom}" } @@ -427,20 +419,18 @@ mkRomsWithGrub() { x=${tmprompath} y=${initmode} - if [ "${payload_grub_withseabios}" = "y" ] \ - && [ "${firstpayloadname}" = "grub" ]; then - mv "$(mkSeabiosRom "${x}" "seabios.elf" "${y}")" \ - "${tmprompath}" - elif [ "${payload_seabios_withgrub}" ] \ - && [ "${firstpayloadname}" != "grub" ]; then + if [ "${payload_grub_withseabios}" = "y" ] && \ + [ "${firstpayloadname}" = "grub" ]; then + mv "$(mkSeabiosRom "${x}" "seabios.elf" "${y}")" "${tmprompath}" + elif [ "${payload_seabios_withgrub}" ] && \ + [ "${firstpayloadname}" != "grub" ]; then mv "$(mkSeabiosRom "${x}" "fallback/payload" "$y")" \ - "${tmprompath}" + "${tmprompath}" fi keymaps="" if [ -z ${keyboard_layouts} ]; then - for kmapfile in "${kmapdir}"/* - do + for kmapfile in "${kmapdir}"/*; do keymaps="${keymaps} ${kmapfile}" done else @@ -451,17 +441,14 @@ mkRomsWithGrub() { for keymapfile in ${keymaps}; do echo "keymaps is $keymaps, keymapfile is $keymapfile" - if [ ! -f "${keymapfile}" ]; then - continue - fi + [ -f "${keymapfile}" ] || continue keymap="${keymapfile##*/}" keymap="${keymap%.gkb}" grub_path_in_cbfs="fallback/payload" - if [ "${firstpayloadname}" != "grub" ]; then + [ "${firstpayloadname}" = "grub" ] || \ grub_path_in_cbfs="img/grub2" - fi # evil bofh rfc 2646 compliance hack x=${keymap} @@ -492,8 +479,7 @@ mkRoms() if [ ! -f "${cbcfgpath}" ]; then printf "'%s' does not exist. Skipping build for %s %s %s\n" \ - ${cbcfgpath} ${board} \ - ${displaymode} ${initmode} + ${cbcfgpath} ${board} ${displaymode} ${initmode} return 0 fi @@ -506,11 +492,10 @@ mkRoms() corebootrom="$(mktemp -t coreboot_rom.XXXXXXXXXX)" cp "${_corebootrom}" "${corebootrom}" - if [ "${displaymode}" = "txtmode" ] \ - && [ "${payload_memtest}" = "y" ]; then + if [ "${displaymode}" = "txtmode" ] && \ + [ "${payload_memtest}" = "y" ]; then "${cbfstool}" "${corebootrom}" add-payload \ - -f memtest86plus/memtest -n img/memtest \ - -c lzma || exit 1 + -f memtest86plus/memtest -n img/memtest -c lzma || exit 1 fi if [ "${payload_seabios}" = "y" ]; then @@ -533,15 +518,14 @@ mkRoms() tmprom=$(mktemp -t coreboot_rom.XXXXXXXXXX) cp "${corebootrom}" "${tmprom}" mkRomsWithGrub "${tmprom}" "${initmode}" \ - "${displaymode}" "seabios_withgrub" + "${displaymode}" "seabios_withgrub" rm -f "${tmprom}" fi fi - if [ "${payload_grub}" = "y" ]; then + [ "${payload_grub}" = "y" ] && \ mkRomsWithGrub "${corebootrom}" "${initmode}" \ - "${displaymode}" "grub" - fi + "${displaymode}" "grub" if [ "${payload_uboot}" = "y" ]; then x=${corebootrom} diff --git a/resources/scripts/build/clean/cbutils b/resources/scripts/build/clean/cbutils index de9a588f..dec8d944 100755 --- a/resources/scripts/build/clean/cbutils +++ b/resources/scripts/build/clean/cbutils @@ -33,12 +33,9 @@ rm -Rf cbutils [ ! -d "coreboot/" ] && exit 0 for tree in coreboot/*; do - if [ "${tree##*/}" = "coreboot" ]; then - continue - fi - if [ ! -d "${tree}" ]; then - continue - fi + [ "${tree##*/}" = "coreboot" ] && continue + [ -d "${tree}" ] || continue + # Clean coreboot, of course make -C "${tree}/" distclean diff --git a/resources/scripts/build/clean/crossgcc b/resources/scripts/build/clean/crossgcc index 6c09c878..8c61dd5f 100755 --- a/resources/scripts/build/clean/crossgcc +++ b/resources/scripts/build/clean/crossgcc @@ -25,14 +25,11 @@ set -u -e main() { printf "Cleaning crossgcc builds in all coreboot archives\n" - [ ! -d "coreboot/" ] && exit 0 for board in coreboot/*; do - [ "${board##*/}" = "coreboot" ] && \ - continue - [ ! -d "${board}" ] && \ - continue + [ "${board##*/}" = "coreboot" ] && continue + [ ! -d "${board}" ] && continue make -C "${board}/" crossgcc-clean || err "make-clean" done } diff --git a/resources/scripts/build/coreboot/utils b/resources/scripts/build/coreboot/utils index 45739e95..a21da691 100755 --- a/resources/scripts/build/coreboot/utils +++ b/resources/scripts/build/coreboot/utils @@ -39,10 +39,8 @@ main() build_for_mainboard() { board="${1}" - [ ! -d "resources/coreboot/${board}" ] && \ - continue - [ ! -f "resources/coreboot/${board}/target.cfg" ] && \ - continue + [ -d "resources/coreboot/${board}" ] || continue + [ -f "resources/coreboot/${board}/target.cfg" ] || continue tree="undefined" . "resources/coreboot/${board}/target.cfg" # source if [ "${tree}" = "undefined" ]; then @@ -55,15 +53,12 @@ build_for_mainboard() { buildutils() { tree="${1}" - if [ ! -d "coreboot/${tree}/" ]; then + [ -d "coreboot/${tree}/" ] || \ ./fetch_trees coreboot $tree || return 1 - fi for util in cbfstool ifdtool; do - [ -f "cbutils/${tree}/${util}" ] \ - && continue - if [ ! -d "cbutils/${tree}" ]; then + [ -f "cbutils/${tree}/${util}" ] && continue + [ -d "cbutils/${tree}" ] || \ mkdir -p "cbutils/${tree}" || return 1 - fi utildir="coreboot/${tree}/util/${util}" make distclean -C "${utildir}" || return 1 diff --git a/resources/scripts/build/descriptors/ich9m b/resources/scripts/build/descriptors/ich9m index 1623b94b..221131af 100755 --- a/resources/scripts/build/descriptors/ich9m +++ b/resources/scripts/build/descriptors/ich9m @@ -23,9 +23,9 @@ ich9gen="util/ich9utils/ich9gen" main() { - [ -f "${ich9gen}" ] || ./build src for -b ich9utils || err "ich9utils make" - [ ! -f "${ich9gen}" ] && \ - err "ich9gen doesn't exist" + [ -f "${ich9gen}" ] || ./build src for -b ich9utils || \ + err "ich9utils make" + [ ! -f "${ich9gen}" ] && err "ich9gen doesn't exist" [ -d "descriptors/ich9m/" ] || mkdir -p "descriptors/ich9m/" rm -f descriptors/ich9m/* || err "rm-rf" diff --git a/resources/scripts/build/grub/payload b/resources/scripts/build/grub/payload index bf52d2a1..4886a874 100755 --- a/resources/scripts/build/grub/payload +++ b/resources/scripts/build/grub/payload @@ -53,18 +53,15 @@ main() build_grub_payloads() { keylayoutfile=${1} + [ -f "${keylayoutfile}" ] || continue - if [ ! -f "${keylayoutfile}" ]; then - continue - fi keymap="${keylayoutfile##${grubcfgsdir}/keymap/}" keymap="${keymap%.gkb}" build_grub_elf "${keylayoutfile}" create_grub_config - printf "Created 'elf/grub/grub_%s.elf' and configs.'\n" \ - "${keymap}" + printf "Created 'elf/grub/grub_%s.elf' and configs.'\n" "${keymap}" } build_grub_elf() @@ -75,24 +72,22 @@ build_grub_elf() gcfg="${gcfg}/config/grub_memdisk.cfg" grubk="/boot/grub/layouts/${keymap}.gkb=${keylayoutfile}" grub/grub-mkstandalone \ - --grub-mkimage="grub/grub-mkimage" \ - -O i386-coreboot \ - -o elf/grub/grub_${keymap}.elf \ - -d grub/grub-core/ \ - --fonts= --themes= --locales= \ - --modules="${grub_modules}" \ - --install-modules="${grub_install_modules}" \ - ${gcfg} ${grubk} + --grub-mkimage="grub/grub-mkimage" \ + -O i386-coreboot \ + -o elf/grub/grub_${keymap}.elf \ + -d grub/grub-core/ \ + --fonts= --themes= --locales= \ + --modules="${grub_modules}" \ + --install-modules="${grub_install_modules}" \ + ${gcfg} ${grubk} } create_grub_config() { - sed "s/usqwerty/${keymap}/" \ - < ${grubcfgsdir}/config/grub.cfg \ - > elf/grub/grub_${keymap}.cfg - sed "s/grubtest.cfg/grub.cfg/" \ - < elf/grub/grub_${keymap}.cfg \ - > elf/grub/grub_${keymap}_test.cfg + sed "s/usqwerty/${keymap}/" < ${grubcfgsdir}/config/grub.cfg \ + > elf/grub/grub_${keymap}.cfg + sed "s/grubtest.cfg/grub.cfg/" < elf/grub/grub_${keymap}.cfg \ + > elf/grub/grub_${keymap}_test.cfg } main $@ diff --git a/resources/scripts/build/grub/utils b/resources/scripts/build/grub/utils index edad6b2a..3e379472 100755 --- a/resources/scripts/build/grub/utils +++ b/resources/scripts/build/grub/utils @@ -25,11 +25,7 @@ set -u -e main() { printf "Building GRUB\n" - - if [ ! -d "grub/" ]; then - ./fetch grub || exit 1 - fi - + [ -d "grub/" ] || ./fetch grub || exit 1 build_grub } @@ -37,15 +33,8 @@ build_grub() { ( cd grub/ || err "cd" - - # clean up first - if [ -d Makefile ]; then - make distclean || err "make-distclean" - fi - + [ ! -d Makefile ] || make distclean || err "make-distclean" ./bootstrap --gnulib-srcdir=gnulib/ --no-git || err "bootstrap" - - # build ./autogen.sh || err "autogen" ./configure --with-platform=coreboot || err "configure" make -j$(nproc) || err "make" diff --git a/resources/scripts/build/release/roms b/resources/scripts/build/release/roms index b9d2487e..ca0e9fe7 100755 --- a/resources/scripts/build/release/roms +++ b/resources/scripts/build/release/roms @@ -70,26 +70,22 @@ make_archive() target="${romdir##*/}" echo ${target} - if [ ! -d "${romdir}/" ]; then - continue - fi + [ -d "${romdir}/" ] || continue CONFIG_HAVE_MRC="y" CONFIG_HAVE_ME_BIN="y" CONFIG_KBC1126_FIRMWARE="y" CONFIG_INCLUDE_SMSC_SCH5545_EC_FW="y" - grep "CONFIG_HAVE_ME_BIN=y" \ - "resources/coreboot/${target}/config/"* \ - || CONFIG_HAVE_ME_BIN="n" - grep "CONFIG_HAVE_MRC=y" \ - "resources/coreboot/${target}/config/"* \ - || CONFIG_HAVE_MRC="n" + grep "CONFIG_HAVE_ME_BIN=y" "resources/coreboot/${target}/config/"* || \ + CONFIG_HAVE_ME_BIN="n" + grep "CONFIG_HAVE_MRC=y" "resources/coreboot/${target}/config/"* || \ + CONFIG_HAVE_MRC="n" grep "CONFIG_KBC1126_FIRMWARE=y" \ - "resources/coreboot/${target}/config"/* \ - || CONFIG_KBC1126_FIRMWARE="n" + "resources/coreboot/${target}/config"/* || \ + CONFIG_KBC1126_FIRMWARE="n" grep "CONFIG_INCLUDE_SMSC_SCH5545_EC_FW=y" \ - "resources/coreboot/${target}/config"/* \ - || CONFIG_INCLUDE_SMSC_SCH5545_EC_FW="n" + "resources/coreboot/${target}/config"/* || \ + CONFIG_INCLUDE_SMSC_SCH5545_EC_FW="n" # remove ME/MRC/EC firmware from ROM images if [ "${CONFIG_HAVE_ME_BIN}" = "y" ] \ @@ -107,8 +103,7 @@ make_archive() f="release/${version}/roms/${projectname}-${version}_${target##*/}" tar -c "${romdir}/" | xz -9e > "${f}.tar.xz" - if [ -d "${romdir}_tmp" ] - then + if [ -d "${romdir}_tmp" ]; then rm -Rf "${romdir}" mv "${romdir}_tmp" "${romdir}" fi @@ -118,9 +113,8 @@ strip_archive() { romdir=${1} - if [ ! -d coreboot/${tree} ]; then + [ -d coreboot/${tree} ] || \ ./fetch_trees coreboot ${tree} || exit 1 - fi ./build coreboot utils ${tree} || exit 1 rm -Rf "${romdir}_tmp" # dirty hack, to reduce disk io later @@ -128,17 +122,15 @@ strip_archive() mkdir "${romdir}_tmp" # Hash the rom before removing blobs - if [ ! -f "${romdir}/blobhashes" ]; then + [ -f "${romdir}/blobhashes" ] || \ printf "ROMs must match these hashes after blob insertion:" \ - > "${romdir}/blobhashes" - fi + > "${romdir}/blobhashes" ( cd ${romdir} || err "subshell: cd" sha1sum *.rom >> blobhashes || err "subshell: sha1sum" ) - for romfile in "${romdir}"/*.rom - do + for romfile in "${romdir}"/*.rom; do strip_rom_image "${romfile}" done } @@ -147,9 +139,7 @@ strip_rom_image() { romfile=${1} - if [ ! -f "${romfile}" ]; then - continue - fi + [ -f "${romfile}" ] || continue if [ "${CONFIG_HAVE_ME_BIN}" = "y" ]; then ${ifdtool} --nuke me "${romfile}" || exit 1 @@ -157,8 +147,7 @@ strip_rom_image() mv "${romfile}.new" "${romfile}" fi - if [ "${CONFIG_HAVE_MRC}" = "y" ] - then + if [ "${CONFIG_HAVE_MRC}" = "y" ]; then ${cbfstool} "${romfile}" remove -n mrc.bin || exit 1 ${cbfstool} "${romfile}" print fi @@ -168,16 +157,12 @@ strip_rom_image() ${cbfstool} "${romfile}" remove -n ecfw2.bin || exit 1 fi - if [ "${CONFIG_INCLUDE_SMSC_SCH5545_EC_FW}" = "y" ]; then + [ "${CONFIG_INCLUDE_SMSC_SCH5545_EC_FW}" != "y" ] || \ ${cbfstool} "${romfile}" remove -n sch5545_ecfw.bin || exit 1 - fi # TODO: replace this board-specific hack - if [ "${target}" = "e6400nvidia_4mb" ]; then - ${cbfstool} "${romfile}" remove \ - -n "pci10de,06eb.rom" \ - || exit 1 - fi + [ "${target}" != "e6400nvidia_4mb" ] || \ + ${cbfstool} "${romfile}" remove -n "pci10de,06eb.rom" || exit 1 } err() diff --git a/resources/scripts/build/release/src b/resources/scripts/build/release/src index 9e5e51d7..ba09a3d3 100755 --- a/resources/scripts/build/release/src +++ b/resources/scripts/build/release/src @@ -77,12 +77,10 @@ create_release_directory() download_modules() { for modname in ${trees_fetch_list}; do - [ ! -d "${modname}" ] && \ - ./fetch_trees ${modname} + [ ! -d "${modname}" ] && ./fetch_trees ${modname} done for modname in ${simple_fetch_list}; do - [ ! -d "${modname}/" ] && \ - ./fetch ${modname} + [ ! -d "${modname}/" ] && ./fetch ${modname} done } @@ -110,12 +108,10 @@ copy_blobs() for i in t440p xx20 xx30 hp8200sff hp_ivybridge hp_sandybridge \ hp8300usdt t1650; do for j in ifd gbe 4_ifd 8_ifd 12_ifd 16_ifd; do - if [ -f "blobs/${i}/${j}.bin" ]; then - if [ ! -e "${srcdir}/blobs/${i}" ]; then - mkdir -p "${srcdir}/blobs/${i}" - fi - cp blobs/${i}/${j}.bin "${srcdir}/blobs/${i}" - fi + [ -f "blobs/${i}/${j}.bin" ] || continue + [ -e "${srcdir}/blobs/${i}" ] || \ + mkdir -p "${srcdir}/blobs/${i}" + cp blobs/${i}/${j}.bin "${srcdir}/blobs/${i}" done done } @@ -125,8 +121,7 @@ purge_files() ( cd "${srcdir}/coreboot/" || err "cd1" for i in *; do - [ ! -d "${i}" ] && \ - continue + [ ! -d "${i}" ] && continue ( cd "${i}/" || err "cd2" make distclean || err "make-distclean1" @@ -148,7 +143,7 @@ purge_files() rm -Rf coreboot/coreboot/ || err "rm-rf1" rm -Rf .git .gitignore */.git* coreboot/*/.git* \ - coreboot/*/3rdparty/*/.git* || err "rm-rf2" + coreboot/*/3rdparty/*/.git* || err "rm-rf2" rm -Rf coreboot/*/util/nvidia/cbootimage/.git* || err "rm-rf3" rm -Rf u-boot/u-boot/ u-boot/*/.git* || err "rm-rf4" ) diff --git a/resources/scripts/build/src/for b/resources/scripts/build/src/for index 1b7c7483..032895e2 100755 --- a/resources/scripts/build/src/for +++ b/resources/scripts/build/src/for @@ -44,8 +44,8 @@ main() [ -z "${project}" ] && err "project name not specified" [ "${project}" = "ich9utils" ] && project="util/ich9utils" - [ -d "${project}" ] || ./fetch "${project}" \ - || err "Cannot download project, ${project}" + [ -d "${project}" ] || ./fetch "${project}" || \ + err "Cannot download project, ${project}" [ -d "${project}" ] || err "Project, ${project}, not downloaded" if [ "${project}" = "uefitool" ]; then diff --git a/resources/scripts/handle/config/file b/resources/scripts/handle/config/file index 6c4bd86e..bbd0ff0c 100755 --- a/resources/scripts/handle/config/file +++ b/resources/scripts/handle/config/file @@ -89,9 +89,8 @@ main() target="${x}" printf "Running 'make %s' for project '%s, target '%s''\n" \ "${mode}" "${project}" "${target}" - if [ "${project}" = "coreboot" ] && [ "${mode}" = "all" ]; then + [ "${project}" != "coreboot" ] || [ "${mode}" != "all" ] || \ ./update blobs download ${target} || err "blobutil" - fi handle_defconfig || exit 1 done @@ -166,35 +165,29 @@ check_cross_compiler() err "check_cross_compiler" if [ "${arch}" = "x86_32" ] || [ "${arch}" = "x86_64" ]; then - if [ ! -d "${cbdir}/util/crossgcc/xgcc/i386-elf/" ]; then - # Even for 64-bit machines, coreboot builds 32-bit ROM - # images, so we only need to worry about i386-elf + [ -d "${cbdir}/util/crossgcc/xgcc/i386-elf/" ] || \ make -C "${cbdir}" crossgcc-i386 CPUS=$(nproc) || \ return 1 - fi case "$(uname -m)" in x86*|i*86|amd64) : ;; *) export CROSS_COMPILE=i386-elf- ;; esac elif [ "${arch}" = "ARMv7" ]; then - if [ ! -d "${cbdir}/util/crossgcc/xgcc/arm-eabi/" ]; then + [ -d "${cbdir}/util/crossgcc/xgcc/arm-eabi/" ] || \ make -C "${cbdir}" crossgcc-arm CPUS=$(nproc) || \ return 1 - fi case "$(uname -m)" in arm|arm32|armv6*|armv7*) : ;; *) export CROSS_COMPILE=arm-eabi- ;; esac elif [ "${arch}" = "AArch64" ]; then - if [ ! -d "${cbdir}/util/crossgcc/xgcc/aarch64-elf/" ]; then + [ -d "${cbdir}/util/crossgcc/xgcc/aarch64-elf/" ] || \ make -C "${cbdir}" crossgcc-aarch64 CPUS=$(nproc) || \ return 1 - fi # aarch64 also needs armv7 toolchain for arm-trusted-firmware - if [ ! -d "${cbdir}/util/crossgcc/xgcc/arm-eabi/" ]; then + [ -d "${cbdir}/util/crossgcc/xgcc/arm-eabi/" ] || \ make -C "${cbdir}" crossgcc-arm CPUS=$(nproc) || \ return 1 - fi case "$(uname -m)" in arm64|aarch64) : ;; *) export CROSS_COMPILE=aarch64-elf- ;; diff --git a/resources/scripts/misc/versioncheck b/resources/scripts/misc/versioncheck index 3118e297..01e69231 100755 --- a/resources/scripts/misc/versioncheck +++ b/resources/scripts/misc/versioncheck @@ -20,24 +20,20 @@ set -u -e version="version-unknown" -if [ -f version ]; then - version="$(cat version)" -fi +[ -f version ] && version="$(cat version)" version_="${version}" if [ -e ".git" ]; then - version="$(git describe --tags HEAD 2>&1)" \ - || version="git-$(git rev-parse HEAD 2>&1)" \ - || version="${version_}" + version="$(git describe --tags HEAD 2>&1)" || \ + version="git-$(git rev-parse HEAD 2>&1)" || \ + version="${version_}" printf "%s\n" "${version}" > version fi versiondate="version-date-unknown" -if [ -f versiondate ]; then - versiondate="$(cat versiondate)" -fi +[ -f versiondate ] && versiondate="$(cat versiondate)" versiondate_="${versiondate}" if [ -e ".git" ]; then - versiondate="$(git show --no-patch --no-notes --pretty='%ct' HEAD)" \ - || versiondate="${versiondate_}" + versiondate="$(git show --no-patch --no-notes --pretty='%ct' HEAD)" || \ + versiondate="${versiondate_}" printf "%s\n" "${versiondate}" > versiondate fi diff --git a/resources/scripts/update/blobs/download b/resources/scripts/update/blobs/download index bac48786..cad40895 100755 --- a/resources/scripts/update/blobs/download +++ b/resources/scripts/update/blobs/download @@ -54,15 +54,13 @@ main() boarddir="${cbcfgsdir}/${board}" [ ! -d "${boarddir}" ] && \ - fail "Board target, ${board}, not defined" + fail "Board target, ${board}, not defined" [ ! -f "${boarddir}/target.cfg" ] && \ - fail "Target missing target.cfg" + fail "Target missing target.cfg" no_config="printf \"No config for target, %s\\n\" ${board} 1>&2; exit 0" for x in "${boarddir}"/config/*; do - if [ -f "${x}" ]; then - no_config="" - fi + [ -f "${x}" ] && no_config="" done eval "${no_config}" @@ -79,34 +77,19 @@ detect_firmware() . ${1} 2>/dev/null . "${boarddir}/target.cfg" - if [ "${CONFIG_HAVE_MRC}" = "y" ]; then - needs="${needs} MRC" - fi - if [ "${CONFIG_HAVE_IFD_BIN}" = "y" ]; then - needs="${needs} IFD" - fi - if [ "${CONFIG_HAVE_ME_BIN}" = "y" ]; then - needs="${needs} ME" - fi - if [ "${CONFIG_HAVE_GBE_BIN}" = "y" ]; then - needs="${needs} GBE" - fi - if [ "${CONFIG_KBC1126_FIRMWARE}" = "y" ]; then - needs="${needs} EC" - fi - if [ "${CONFIG_BOARD_DELL_E6400}" = "y" ] \ - && [ "${CONFIG_VGA_BIOS_FILE}" != "" ]; then - needs="${needs} E6400VGA" - fi - if [ "${CONFIG_INCLUDE_SMSC_SCH5545_EC_FW}" = "y" ]; then - needs="${needs} SCH5545EC" - fi - if [ -z ${needs+x} ]; then - printf 'No binary blobs needed for this board\n' + [ "${CONFIG_HAVE_MRC}" = "y" ] && needs="${needs} MRC" + [ "${CONFIG_HAVE_IFD_BIN}" = "y" ] && needs="${needs} IFD" + [ "${CONFIG_HAVE_ME_BIN}" = "y" ] && needs="${needs} ME" + [ "${CONFIG_HAVE_GBE_BIN}" = "y" ] && needs="${needs} GBE" + [ "${CONFIG_KBC1126_FIRMWARE}" = "y" ] && needs="${needs} EC" + [ "${CONFIG_BOARD_DELL_E6400}" = "y" ] && \ + [ "${CONFIG_VGA_BIOS_FILE}" != "" ] && needs="${needs} E6400VGA" + [ "${CONFIG_INCLUDE_SMSC_SCH5545_EC_FW}" = "y" ] && \ + needs="${needs} SCH5545EC" + [ -z ${needs+x} ] && \ + printf 'No binary blobs needed for this board\n' && \ return 1 - fi - printf "Firmware needed for board '%s':\n" ${board} - printf "%s\n" ${needs} + printf "Firmware needed for board '%s':\n%s\n" ${board} ${needs} } scan_sources_config() @@ -120,60 +103,46 @@ scan_sources_config() case ${line} in EC_url_bkup*) set ${line} - ec_url_bkup=${2} - ;; + ec_url_bkup=${2} ;; EC_url*) set ${line} - ec_url=${2} - ;; + ec_url=${2} ;; EC_hash*) set ${line} - ec_hash=${2} - ;; + ec_hash=${2} ;; DL_hash*) set ${line} - dl_hash=${2} - ;; + dl_hash=${2} ;; DL_url_bkup*) set ${line} - dl_url_bkup=${2} - ;; + dl_url_bkup=${2} ;; DL_url*) set ${line} - dl_url=${2} - ;; + dl_url=${2} ;; E6400_VGA_DL_hash*) set ${line} - e6400_vga_dl_hash=${2} - ;; + e6400_vga_dl_hash=${2} ;; E6400_VGA_DL_url_bkup*) set ${line} - e6400_vga_dl_url_bkup=${2} - ;; + e6400_vga_dl_url_bkup=${2} ;; E6400_VGA_DL_url*) set ${line} - e6400_vga_dl_url=${2} - ;; + e6400_vga_dl_url=${2} ;; E6400_VGA_offset*) set ${line} - e6400_vga_offset=${2} - ;; + e6400_vga_offset=${2} ;; E6400_VGA_romname*) set ${line} - e6400_vga_romname=${2} - ;; + e6400_vga_romname=${2} ;; SCH5545EC_DL_hash*) set ${line} - sch5545ec_dl_hash=${2} - ;; + sch5545ec_dl_hash=${2} ;; SCH5545EC_DL_url_bkup*) set ${line} - sch5545ec_dl_url_bkup=${2} - ;; + sch5545ec_dl_url_bkup=${2} ;; SCH5545EC_DL_url*) set ${line} - sch5545ec_dl_url=${2} - ;; + sch5545ec_dl_url=${2} ;; esac done << EOF $(eval "awk '${awkstr}' resources/blobs/sources") @@ -182,44 +151,18 @@ EOF build_dependencies() { - if [ ! -d me_cleaner ]; then - printf "downloading me_cleaner\n" - ./fetch me_cleaner || fail "could not download me_cleaner" - fi - if [ ! -d ${cbdir} ]; then - printf "downloading coreboot\n" - ./fetch_trees coreboot default \ - || fail "could not download coreboot" - fi - if [ ! -d bios_extract ]; then - printf "downloading bios_extract\n" - ./fetch bios_extract \ - || fail "could not download bios_extract" - fi - if [ ! -d biosutilities ]; then - printf "downloading biosutilities\n" - ./fetch biosutilities \ - || fail "could not download biosutilities" - fi - if [ ! -d uefitool ]; then - printf "download uefitool (for UEFIExtract)\n" - ./fetch uefitool \ - || fail "could not download uefitool" - fi - if [ ! -f uefitool/uefiextract ]; then - ./build src for -b uefitool \ - || fail "could not build uefitool" - fi - if [ ! -f ${cbdir}/util/kbc1126/kbc1126_ec_dump ]; then - printf "Building kbc1126_ec_dump from coreboot\n" - make -BC ${cbdir}/util/kbc1126 \ - || fail "could not build kbc1126_ec_dump" - fi - if [ ! -f "${cbdir}/util/ifdtool/ifdtool" ]; then - printf "building ifdtool from coreboot\n" - make -C ${cbdir}/util/ifdtool \ - || fail 'could not build ifdtool' - fi + [ -d ${cbdir} ] || \ + ./fetch_trees coreboot ${cbdir##*/} || \ + fail "can't download to ${cbdir}" + for d in uefitool biosutilities bios_extract me_cleaner; do + [ -d "${d}" ] && continue + ./fetch ${d} || fail "can't download ${d}" + done + [ -f uefitool/uefiextract ] || \ + ./build src for -b uefitool || fail "can't build uefitool" + [ -f ${cbdir}/util/kbc1126/kbc1126_ec_dump ] || \ + make -BC ${cbdir}/util/kbc1126 || \ + fail "can't build kbc1126_ec_dump" } download_blobs() @@ -227,26 +170,20 @@ download_blobs() for need in ${needs}; do case ${need} in *ME*) - download_blob_intel_me || _failed="${_failed} me" - ;; + download_blob_intel_me || _failed="${_failed} me" ;; *SCH5545EC*) - download_sch5545ec || failed="${_failed} sch5545ec" - ;; + download_sch5545ec || failed="${_failed} sch5545ec" ;; *EC*) - download_ec || _failed="${_failed} ec" - ;; + download_ec || _failed="${_failed} ec" ;; *E6400VGA*) - download_e6400vga || _failed="${_failed} e6400vga" - ;; + download_e6400vga || _failed="${_failed} e6400vga" ;; *MRC*) - ./update blobs mrc || _failed="${_failed} mrc" - ;; + ./update blobs mrc || _failed="${_failed} mrc" ;; esac done - if [ ! -z ${_failed+x} ]; then + [ -z ${_failed+x} ] || \ fail "failed to obtain ${_failed}\nTry manual extraction?" - fi } download_blob_intel_me() @@ -263,12 +200,10 @@ extract_blob_intel_me() _me_destination=${CONFIG_ME_BIN_PATH#../../} - if [ ! -d "${_me_destination%/*}" ]; then + [ -d "${_me_destination%/*}" ] || \ mkdir -p ${_me_destination%/*} - fi - if [ -d "${appdir}" ]; then - rm -r ${appdir} - fi + [ -d "${appdir}" ] && \ + rm -Rf ${appdir} if [ -f "${_me_destination}" ]; then printf 'me already downloaded\n' return 0 @@ -276,14 +211,13 @@ extract_blob_intel_me() printf "Extracting and stripping Intel ME firmware\n" - innoextract ${dl_path} -d ${appdir} \ - || 7z x ${dl_path} -o${appdir} \ - || unar "${dl_path}" -o "${appdir}" \ - || fail 'Could not extract vendor update' + innoextract ${dl_path} -d ${appdir} || \ + 7z x ${dl_path} -o${appdir} || \ + unar "${dl_path}" -o "${appdir}" || \ + fail "Could not extract vendor update" bruteforce_extract_blob_intel_me "$(pwd)/${_me_destination}" \ - "$(pwd)/${appdir}" \ - || fail "Could not extract Intel ME firmware" + "$(pwd)/${appdir}" || fail "Could not extract Intel ME firmware" printf "Truncated and cleaned me output to ${_me_destination}\n" } @@ -294,9 +228,7 @@ bruteforce_extract_blob_intel_me() _me_destination="${1}" cdir="${2}" # must be an absolute path, not relative - if [ -f "${_me_destination}" ]; then - return 0 - fi + [ -f "${_me_destination}" ] && return 0 sdir="$(mktemp -d)" mkdir -p "${sdir}" || return 1 @@ -321,9 +253,9 @@ bruteforce_extract_blob_intel_me() && break # (we found me.bin) _7ztest="${_7ztest}a" 7z x "${i}" -o${_7ztest} \ - || innoextract "${i}" -d "${_7ztest}" \ - || unar "${i}" -o "${_7ztest}" \ - || continue + || innoextract "${i}" -d "${_7ztest}" \ + || unar "${i}" -o "${_7ztest}" \ + || continue bruteforce_extract_blob_intel_me "${_me_destination}" \ "${cdir}/${_7ztest}" elif [ -d "$i" ]; then @@ -351,21 +283,19 @@ download_ec() printf "Downloading KBC1126 EC firmware for HP laptop\n" fetch_update ec || return 1 - extract_ec || return 1 + extract_blob_kbc1126_ec || return 1 } -extract_ec() +extract_blob_kbc1126_ec() { printf "Extracting KBC1126 EC firmware for board: %s\n" ${board} _ec_destination=${CONFIG_KBC1126_FW1#../../} - if [ ! -d "${_ec_destination%/*}" ]; then + [ -d "${_ec_destination%/*}" ] || \ mkdir -p "${_ec_destination%/*}" - fi - if [ -d "${appdir}" ]; then + [ -d "${appdir}" ] && \ rm -Rf "${appdir}" - fi if [ -f "${_ec_destination}" ]; then printf "ec already downloaded\n" return 0 @@ -383,23 +313,15 @@ extract_ec() unar -D 68*.CAB Rom.bin mv Rom.bin ec.bin fi - if [ ! -f ec.bin ]; then - printf "could not extract ec.bin for board '%s'" ${board} \ - 1>&2 - fail "aborting the build. please audit lbmk carefully." - fi + [ -f ec.bin ] || fail "could not extract ec.bin for board, ${board}" "${kbc1126_ec_dump}" ec.bin ) for i in 1 2; do - if [ -f "${appdir}/${dl_path##*/}/ec.bin.fw${i}" ]; then - continue - fi - printf "Not found: %s/%s/ec.bin.fw%s\n" \ - ${appdir} ${dl_path##*/} ${i} + [ -f "${appdir}/${dl_path##*/}/ec.bin.fw${i}" ] && continue printf "Could not extract EC firmware for: %s\n" \ - ${board} + ${board} return 1 done @@ -424,12 +346,10 @@ extract_e6400vga() printf 'vga rom already downloaded\n' return 0 fi - if [ ! -d "${_vga_destination%/*}" ]; then + [ -d "${_vga_destination%/*}" ] || \ mkdir -p ${_vga_destination%/*} - fi - if [ -d "${appdir}" ]; then - rm -r ${appdir} - fi + [ -d "${appdir}" ] && \ + rm -Rf ${appdir} mkdir -p "${appdir}" mv "${dl_path}" "${appdir}" @@ -446,13 +366,11 @@ extract_e6400vga() cd "${appdir}" tail -c +${e6400_vga_offset} "${dl_path##*/}" \ | gunzip > bios.bin - if [ ! -f "bios.bin" ]; then - fail 'Could not extract bios.bin from Dell E6400 update' - fi + [ -f "bios.bin" ] || \ + fail "Could not extract bios.bin from Dell E6400 update" "${e6400_unpack}" bios.bin || printf "TODO: fix dell extract util\n" - if [ ! -f "${e6400_vga_romname}" ]; then - fail 'Could not extract VGA ROM from Dell E6400 BIOS update' - fi + [ -f "${e6400_vga_romname}" ] || \ + fail "Could not extract VGA ROM from Dell E6400 BIOS update" ) cp "${appdir}"/"${e6400_vga_romname}" "${_vga_destination}" @@ -482,11 +400,9 @@ extract_sch5545ec() return 0 fi - if [ -d "${appdir}" ]; then - rm -Rf "${appdir}" - fi - mkdir -p "${appdir}/" + [ -d "${appdir}" ] rm -Rf "${appdir}" + mkdir -p "${appdir}/" cp "${dl_path}" "${appdir}/" python "${pfs_extract}" "${appdir}/${dlsum}" -e || exit 1 @@ -545,9 +461,7 @@ fetch_update() dl_fail="y" vendor_checksum ${dlsum} && dl_fail="n" for x in "${dl}" "${dl_bkup}"; do - if [ "${dl_fail}" = "n" ]; then - break - fi + [ "${dl_fail}" = "n" ] && break rm -f "${dl_path}" wget -U "${agent}" ${x} -O ${dl_path} vendor_checksum ${dlsum} && dl_fail="n" diff --git a/resources/scripts/update/blobs/extract b/resources/scripts/update/blobs/extract index ad11afb4..6b18e962 100755 --- a/resources/scripts/update/blobs/extract +++ b/resources/scripts/update/blobs/extract @@ -29,13 +29,10 @@ _ifd_destination="" main() { sname=${0} - if [ $# -lt 2 ]; then - fail "Missing arguments (less than two)." - fi + [ $# -lt 2 ] && fail "Missing arguments (fewer than two)." board="${1}" vendor_rom="${2}" - boarddir="${cbcfgsdir}/${board}" check_board @@ -45,39 +42,22 @@ main() check_board() { - if [ ! -f "${vendor_rom}" ] ; then + [ -f "${vendor_rom}" ] || \ fail "file does not exist: ${vendor_rom}" - elif [ ! -d "${boarddir}" ]; then + [ -d "${boarddir}" ] || \ fail "build/roms ${board}: target not defined" - elif [ ! -f "${boarddir}/target.cfg" ]; then + [ -f "${boarddir}/target.cfg" ] || \ fail "build/roms ${board}: missing target.cfg" - fi } build_dependencies() { - if [ ! -d me_cleaner ]; then - printf "downloading me_cleaner\n" - ./fetch me_cleaner || fail 'could not download me_cleaner' - else - printf "me_cleaner already downloaded. Skipping.\n" - printf "run ./fetch me_cleaner to manually overwrite\n" - fi - - if [ ! -d ${cbdir} ]; then - printf "downloading coreboot\n" - ./fetch_trees coreboot default \ - || fail "could not download coreboot" - else - printf "coreboot already downloaded. Skipping.\n" - printf "run ./fetch_trees coreboot to manually overwrite\n" - fi - - if ! [ -f ${ifdtool} ]; then - printf "building ifdtool from coreboot\n" - make -C "${ifdtool%/ifdtool}" \ - || fail "could not build ifdtool" - fi + [ -d me_cleaner ] || \ + ./fetch me_cleaner || fail "can't fetch me_cleaner" + [ -d ${cbdir} ] || \ + ./fetch_trees coreboot default || fail "can't fetch coreboot" + [ -f ${ifdtool} ] || \ + make -C "${ifdtool%/ifdtool}" || fail "can't build ifdtool" } extract_blobs() @@ -88,10 +68,8 @@ extract_blobs() . ${1} 2>/dev/null . "${boarddir}/target.cfg" - if [ "$CONFIG_HAVE_MRC" = "y" ]; then - printf 'haswell board detected, downloading mrc\n' + [ "$CONFIG_HAVE_MRC" != "y" ] || \ ./update blobs mrc || fail "could not download mrc" - fi _me_destination=${CONFIG_ME_BIN_PATH#../../} _gbe_destination=${CONFIG_GBE_BIN_PATH#../../} @@ -103,13 +81,9 @@ extract_blobs() # Cleans up other files extracted with ifdtool rm -f flashregion*.bin 2> /dev/null - if [ -f ${_ifd_destination} ]; then - printf "gbe, ifd, and me extracted to %s\n" \ - ${_me_destination%/*} - else - printf "WARNING: Intel firmware descriptor could not " - printf "be extracted with modified me\n" - fi + [ -f ${_ifd_destination} ] || fail "Could not extract IFD" + printf "gbe, ifd, and me extracted to %s\n" \ + ${_me_destination%/*} } extract_blob_intel_me() @@ -117,25 +91,23 @@ extract_blob_intel_me() printf "extracting clean ime and modified ifd\n" ${mecleaner} -D ${_ifd_destination} \ - -M ${_me_destination} ${vendor_rom} -t -r -S \ - || ${me7updateparser} \ - -O ${_me_destination} ${vendor_rom} \ - || fail \ - "me_cleaner failed to extract blobs from rom" + -M ${_me_destination} ${vendor_rom} -t -r -S || \ + ${me7updateparser} \ + -O ${_me_destination} ${vendor_rom} || \ + fail "me_cleaner failed to extract blobs from rom" } extract_blob_intel_gbe_nvm() { printf "extracting gigabit ethernet firmware" ./${ifdtool} -x ${vendor_rom} - mv flashregion*gbe.bin ${_gbe_destination} \ - || fail 'could not extract gbe' + mv flashregion*gbe.bin ${_gbe_destination} || \ + fail 'could not extract gbe' } fail() { print_help - printf "\n%s: ERROR: %s\n" ${sname} $@ exit 1 } diff --git a/resources/scripts/update/blobs/inject b/resources/scripts/update/blobs/inject index 649b865d..696cd74d 100755 --- a/resources/scripts/update/blobs/inject +++ b/resources/scripts/update/blobs/inject @@ -41,12 +41,8 @@ main() { sname="${0}" - if [ $# -lt 1 ]; then - fail "No options specified." - elif [ "${1}" = "listboards" ]; then - listboards - exit 0 - fi + [ $# -lt 1 ] && fail "No options specified." + [ "${1}" = "listboards" ] && listboards && exit 0 archive="${1}" @@ -54,15 +50,12 @@ main() do case "${option}" in r) - rom=${OPTARG} - ;; + rom=${OPTARG} ;; b) - board=${OPTARG} - ;; + board=${OPTARG} ;; m) modifygbe=true - new_mac=${OPTARG} - ;; + new_mac=${OPTARG} ;; esac done @@ -78,39 +71,29 @@ main() check_board() { if ! check_release ${archive} ; then - if [ ! -f "${rom}" ]; then + [ -f "${rom}" ] || \ fail "${rom} is not a valid path" - elif [ -z ${rom+x} ]; then + [ -z ${rom+x} ] && \ fail 'no rom specified' - elif [ -z ${board+x} ]; then - board=$(detect_board ${rom}) \ - || fail 'no board specified' - fi + [ ! -z ${board+x} ] || \ + board=$(detect_board ${rom}) || \ + fail 'no board specified' else release=true releasearchive="${archive}" - board=$(detect_board ${archive}) \ - || fail 'Could not detect board type' + board=$(detect_board ${archive}) || \ + fail 'Could not detect board type' fi boarddir="${cbcfgsdir}/${board}" - if [ ! -d "${boarddir}" ]; then - fail "board ${board} not found" - fi + [ -d "${boarddir}" ] || fail "board ${board} not found" } check_release() { - if [ ! -f "${archive}" ]; then - return 1 - fi - - if [ "${archive##*.}" = "xz" ]; then - printf "%s\n" "Release archive ${archive} detected" - return 0 - else - return 1 - fi + [ -f "${archive}" ] || return 1 + [ "${archive##*.}" = "xz" ] || return 1 + printf "%s\n" "Release archive ${archive} detected" } # This function tries to determine the board from the filename of the rom. @@ -121,38 +104,25 @@ detect_board() filename=$(basename ${path}) case ${filename} in grub_*) - board=$(echo "${filename}" | cut -d '_' -f2-3) - ;; + board=$(echo "${filename}" | cut -d '_' -f2-3) ;; seabios_withgrub_*) - board=$(echo "${filename}" | cut -d '_' -f3-4) - ;; + board=$(echo "${filename}" | cut -d '_' -f3-4) ;; *.tar.xz) _stripped_prefix=${filename#*_} - board="${_stripped_prefix%.tar.xz}" - ;; + board="${_stripped_prefix%.tar.xz}" ;; *) return 1 esac - - if [ -d "${boarddir}/" ]; then - printf '%s\n' "${board}" - return 0 - else - return 1 - fi + [ -d "${boarddir}/" ] || return 1 + printf '%s\n' "${board}" } build_dependencies() { - if [ ! -d ${cbdir} ]; then - printf "downloading coreboot\n" - ./fetch_trees coreboot default - fi - + [ -d "${cbdir}" ] || ./fetch_trees coreboot default ./build coreboot utils default || fail "could not build cbutils" - ./update blobs download ${board} || \ - fail "Could not download blobs for ${board}" + fail "Could not download blobs for ${board}" } inject_blobs() @@ -188,12 +158,9 @@ patch_release_roms() done fi - if ! [ -d bin/release ]; then - mkdir -p bin/release - fi - + [ -d bin/release ] || mkdir -p bin/release mv ${_tmpdir}/bin/* bin/release/ && \ - printf '%s\n' 'Success! Your ROMs are in bin/release' + printf '%s\n' 'Success! Your ROMs are in bin/release' rm -r "${_tmpdir}" } @@ -206,31 +173,20 @@ patch_rom() . ${1} 2>/dev/null . "${boarddir}/target.cfg" - if [ "$CONFIG_HAVE_MRC" = "y" ]; then + [ "$CONFIG_HAVE_MRC" = "y" ] && \ inject_blob_intel_mrc "${rom}" - fi - - if [ "${CONFIG_HAVE_ME_BIN}" = "y" ]; then + [ "${CONFIG_HAVE_ME_BIN}" = "y" ] && \ inject_blob_intel_me "${rom}" - fi - - if [ "${CONFIG_KBC1126_FIRMWARE}" = "y" ]; then + [ "${CONFIG_KBC1126_FIRMWARE}" = "y" ] && \ inject_blob_hp_kbc1126_ec "${rom}" - fi - - if [ "${CONFIG_VGA_BIOS_FILE}" != "" ] \ - && [ "${CONFIG_VGA_BIOS_ID}" != "" ]; then + [ "${CONFIG_VGA_BIOS_FILE}" != "" ] && \ + [ "${CONFIG_VGA_BIOS_ID}" != "" ] && \ inject_blob_dell_e6400_vgarom_nvidia - fi - - if [ "${CONFIG_INCLUDE_SMSC_SCH5545_EC_FW}" = "y" ] \ - && [ "${CONFIG_SMSC_SCH5545_EC_FW_FILE}" != "" ]; then + [ "${CONFIG_INCLUDE_SMSC_SCH5545_EC_FW}" = "y" ] && \ + [ "${CONFIG_SMSC_SCH5545_EC_FW_FILE}" != "" ] && \ inject_blob_smsc_sch5545_ec "${rom}" - fi - - if [ "${modifygbe}" = "true" ] && ! [ "${release}" = "true" ]; then + [ "${modifygbe}" = "true" ] && ! [ "${release}" = "true" ] && \ modify_gbe ${rom} - fi } inject_blob_intel_mrc() @@ -266,16 +222,12 @@ inject_blob_intel_me() printf 'adding intel management engine\n' rom="${1}" - - if [ -z ${CONFIG_ME_BIN_PATH} ]; then + [ -z ${CONFIG_ME_BIN_PATH} ] && \ fail "CONFIG_ME_BIN_PATH not set" - fi _me_location=${CONFIG_ME_BIN_PATH#../../} - - if [ ! -f "${_me_location}" ]; then + [ ! -f "${_me_location}" ] && \ fail "CONFIG_ME_BIN_PATH points to missing file" - fi ${ifdtool} -i me:${_me_location} ${rom} -O ${rom} || exit 1 } @@ -293,23 +245,23 @@ inject_blob_hp_kbc1126_ec() if [ "${_ec1_offset}" = "" ] || [ "${_ec1_offset}" = "" ]; then printf "EC offsets not declared for board: %s\n" \ - "${board}" + "${board}" exit 1 fi if [ "${_ec1_location}" = "" ] || [ "${_ec2_location}" = "" ]; then printf "EC firmware path not declared for board: %s\n" \ - "${board}" + "${board}" fi if [ ! -f "${_ec1_location}" ] || [ ! -f "${_ec2_location}" ]; then printf "EC firmware not downloaded for board: %s\n" \ - "${board}" + "${board}" exit 1 fi ${cbfstool} "${rom}" add -f ${_ec1_location} -n ecfw1.bin \ - -b ${_ec1_offset} -t raw || exit 1 + -b ${_ec1_offset} -t raw || exit 1 ${cbfstool} "${rom}" add -f ${_ec2_location} -n ecfw2.bin \ - -b ${_ec2_offset} -t raw || exit 1 + -b ${_ec2_offset} -t raw || exit 1 } inject_blob_dell_e6400_vgarom_nvidia() @@ -332,8 +284,8 @@ inject_blob_dell_e6400_vgarom_nvidia() fi ${cbfstool} ${rom} add -f "${_vga_location}" \ - -n "pci${CONFIG_VGA_BIOS_ID}.rom" \ - -t optionrom || exit 1 + -n "pci${CONFIG_VGA_BIOS_ID}.rom" \ + -t optionrom || exit 1 } inject_blob_smsc_sch5545_ec() @@ -357,27 +309,22 @@ modify_gbe() rom=${1} - if [ -z ${CONFIG_GBE_BIN_PATH} ]; then + [ -z ${CONFIG_GBE_BIN_PATH} ] && \ fail "CONFIG_GBE_BIN_PATH not set" - fi _gbe_location=${CONFIG_GBE_BIN_PATH#../../} - if [ ! -f "${_gbe_location}" ]; then + [ -f "${_gbe_location}" ] || \ fail "CONFIG_GBE_BIN_PATH points to missing file" - fi - - if [ ! -f ${nvmutil} ]; then + [ -f ${nvmutil} ] || \ make -C util/nvmutil || fail 'failed to build nvmutil' - fi _gbe_tmp=$(mktemp -t gbeXXXX.bin) cp ${_gbe_location} ${_gbe_tmp} - ${nvmutil} "${_gbe_tmp}" setmac ${new_mac} \ - || fail 'failed to modify mac address' + ${nvmutil} "${_gbe_tmp}" setmac ${new_mac} || \ + fail 'failed to modify mac address' - ${ifdtool} -i GbE:${_gbe_tmp} "${rom}" \ - -O "${rom}" || exit 1 + ${ifdtool} -i GbE:${_gbe_tmp} "${rom}" -O "${rom}" || exit 1 rm -f ${_gbe_tmp} } @@ -385,7 +332,7 @@ modify_gbe() listboards() { for boarddir in ${cbcfgsdir}/*; do - if [ ! -d "${boarddir}" ]; then continue; fi + [ -d "${boarddir}" ] || continue board="${boarddir##${cbcfgsdir}/}" board="${board%/}" printf '%s\n' "${board##*/}" @@ -394,10 +341,8 @@ listboards() fail() { - if [ ! -z ${@+x} ]; then + [ -z ${@+x} ] || \ printf "\n%s: ERROR: ${@}\n" ${sname} - fi - usage exit 1 } diff --git a/resources/scripts/update/blobs/mrc b/resources/scripts/update/blobs/mrc index 8213e6c1..14a1d2b6 100755 --- a/resources/scripts/update/blobs/mrc +++ b/resources/scripts/update/blobs/mrc @@ -57,25 +57,19 @@ main() check_existing() { - if [ ! -f ${_mrc_complete} ]; then + [ -f ${_mrc_complete} ] || \ return 1 - fi - printf 'found existing mrc.bin, checking its hash\n' - if [ "$(sha1sum ${_mrc_complete} | awk '{print $1}')" \ - = "${_mrc_complete_hash}" ]; then - printf 'checksums matched, skipping downloading\n' + printf 'found existing mrc.bin\n' + [ "$(sha1sum ${_mrc_complete} | awk '{print $1}')" \ + = "${_mrc_complete_hash}" ] && \ return 0 - else - printf 'hashes did not match, starting over\n' - return 1 - fi + printf 'hashes did not match, starting over\n' + return 1 } build_dependencies() { - if [ ! -d "${cbdir}/" ]; then - ./fetch_trees coreboot default || return 1 - fi + [ -d "${cbdir}/" ] || ./fetch_trees coreboot default || return 1 ./build coreboot utils default || return 1 return 0 } @@ -88,23 +82,20 @@ fetch_mrc() cd mrc/haswell/ download_image ${_url} ${_file} ${_sha1sum} - if [ ! -f ${_file} ]; then + [ -f ${_file} ] || \ download_image ${_url2} ${_file} ${_sha1sum} - fi - if [ ! -f $_file ]; then + [ -f $_file ] || \ fail "%{_file} not downloaded / verification failed." - fi extract_partition ROOT-A ${_file} root-a.ext2 extract_shellball root-a.ext2 chromeos-firmwareupdate-${_board} extract_coreboot chromeos-firmwareupdate-${_board} - ../../${cbfstool} coreboot-*.bin extract -f mrc.bin \ - -n mrc.bin -r RO_SECTION \ - || fail "Could not fetch mrc.bin" + ../../${cbfstool} coreboot-*.bin extract -f mrc.bin -n mrc.bin \ + -r RO_SECTION || fail "Could not fetch mrc.bin" rm -f "chromeos-firmwareupdate-${_board}" coreboot-*.bin \ - "${_file}" "root-a.ext2" + "${_file}" "root-a.ext2" printf "\n\nmrc.bin saved to ${_mrc_complete}\n\n" ) @@ -118,19 +109,18 @@ download_image() _file=${2} _sha1sum=${3} - echo "Downloading recovery image" + printf "Downloading recovery image\n" curl "$url" > "$_file.zip" + printf "Verifying recovery image checksum\n" if [ "$(sha1sum ${_file}.zip | awk '{print $1}')" = "${_sha1sum}" ] then unzip -q "${_file}.zip" rm "${_file}.zip" - echo "Checksum verification passed for recovery image." return 0 - else - rm "${_file}.zip" - echo "Bad checksum. Recovery image deleted." - return 1 fi + rm "${_file}.zip" + printf "Bad checksum. Recovery image deleted.\n" + return 1 } extract_partition() @@ -140,15 +130,15 @@ extract_partition() ROOTFS=${3} _bs=1024 - echo "Extracting ROOT-A partition" + printf "Extracting ROOT-A partition\n" ROOTP=$( printf "unit\nB\nprint\nquit\n" | \ - parted ${FILE} 2>/dev/null | grep ${NAME} ) + parted ${FILE} 2>/dev/null | grep ${NAME} ) START=$(( $( echo ${ROOTP} | cut -f2 -d\ | tr -d "B" ) )) SIZE=$(( $( echo ${ROOTP} | cut -f4 -d\ | tr -d "B" ) )) dd if=${FILE} of=${ROOTFS} bs=${_bs} skip=$(( ${START} / ${_bs} )) \ - count=$(( ${SIZE} / ${_bs} )) > /dev/null + count=$(( ${SIZE} / ${_bs} )) > /dev/null } extract_shellball() @@ -156,9 +146,9 @@ extract_shellball() ROOTFS=${1} SHELLBALL=${2} - echo "Extracting chromeos-firmwareupdate" + printf "Extracting chromeos-firmwareupdate\n" printf "cd /usr/sbin\ndump chromeos-firmwareupdate ${SHELLBALL}\nquit" \ - | debugfs ${ROOTFS} > /dev/null 2>&1 + | debugfs ${ROOTFS} > /dev/null 2>&1 } extract_coreboot() @@ -166,11 +156,11 @@ extract_coreboot() _shellball=${1} _unpacked=$( mktemp -d ) - echo "Extracting coreboot image" + printf "Extracting coreboot image\n" sh ${_shellball} --unpack ${_unpacked} > /dev/null _version=$( cat ${_unpacked}/VERSION | grep BIOS\ version: | \ - cut -f2 -d: | tr -d \ ) + cut -f2 -d: | tr -d \ ) cp ${_unpacked}/bios.bin coreboot-${_version}.bin rm -r "${_unpacked}" -- cgit v1.2.1