diff options
Diffstat (limited to 'resources/scripts/build/boot')
-rwxr-xr-x | resources/scripts/build/boot/roms | 47 | ||||
-rwxr-xr-x | resources/scripts/build/boot/roms_helper | 124 |
2 files changed, 67 insertions, 104 deletions
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} |