diff options
-rwxr-xr-x | build | 13 | ||||
-rwxr-xr-x | include/git.sh | 3 | ||||
-rwxr-xr-x | include/mrc.sh | 26 | ||||
-rwxr-xr-x | include/option.sh | 4 | ||||
-rwxr-xr-x | script/build/fw/coreboot | 26 | ||||
-rwxr-xr-x | script/update/project/trees | 16 | ||||
-rwxr-xr-x | script/update/vendor/download | 8 | ||||
-rwxr-xr-x | script/update/vendor/inject | 2 |
8 files changed, 39 insertions, 59 deletions
@@ -59,7 +59,7 @@ initialise_command() [ "${mode}" = "help" ] && usage ${0} && lbmk_exit 0 if [ "${mode}" = "list" ]; then - listitems "${buildpath}" + items "${buildpath}" lbmk_exit 0 elif [ $# -lt 2 ]; then usage ${0} @@ -91,15 +91,8 @@ install_packages() execute_command() { - if [ "${option}" = "list" ]; then - xx_ listitems "${buildpath}/${mode}" - lbmk_exit 0 - fi + [ "$option" = "list" ] && xx_ items "$buildpath/$mode" && lbmk_exit 0 lbmkcmd="${buildpath}/${mode}/${option}" - [ "${lbmkcmd}" = "./script/build/boot/roms" ] && \ - printf "NOTE: ./build boot roms now: ./build fw coreboot\n" 1>&2 - [ "${lbmkcmd%/*}" = "./script/update/blobs" ] && \ - printf "NOTE: ./update blobs is now: ./update vendor\n" 1>&2 [ -f "${lbmkcmd}" ] || fail "Invalid command. Run: ${linkpath} help" "${lbmkcmd}" $@ || fail "execute_command: ${lbmkcmd} ${@}" } @@ -111,7 +104,7 @@ usage() USAGE: ${progname} <MODE> <OPTION> possible values for 'mode': - $(listitems "${buildpath}") + $(items "${buildpath}") For each of the above modes, you may also do: ${progname} <MODE> list diff --git a/include/git.sh b/include/git.sh index 7f926c28..9e6c60db 100755 --- a/include/git.sh +++ b/include/git.sh @@ -4,8 +4,7 @@ # This file is only used by update/project/trees -eval "$(setvars "" _target rev _xm)" -eval "$(setvars "" loc url bkup_url depend)" +eval "$(setvars "" _target rev _xm loc url bkup_url depend)" tmp_git_dir="${PWD}/tmp/gitclone" fetch_project_trees() diff --git a/include/mrc.sh b/include/mrc.sh index 4ff067a9..3c6ac24e 100755 --- a/include/mrc.sh +++ b/include/mrc.sh @@ -4,7 +4,7 @@ # Modifications in this version are Copyright 2021 and 2023 Leah Rowe. # Original copyright detailed in repo: https://review.coreboot.org/coreboot/ -eval "$(setvars "" MRC_url MRC_url_bkup MRC_hash MRC_board)" +eval "$(setvars "" MRC_url MRC_url_bkup MRC_hash MRC_board ROOTFS SHELLBALL)" extract_mrc() { @@ -12,14 +12,14 @@ extract_mrc() [ -z "${CONFIG_MRC_FILE}" ] && \ err "extract_mrc $MRC_hash: CONFIG_MRC_FILE not set" - _file="${MRC_url##*/}" - _file="${_file%.zip}" + ROOTFS="root-a.ext2" + SHELLBALL="chromeos-firmwareupdate-${MRC_board}" ( x_ cd "${appdir}" - extract_partition ROOT-A "${_file}" root-a.ext2 - extract_shellball root-a.ext2 chromeos-firmwareupdate-${MRC_board} - extract_coreboot chromeos-firmwareupdate-${MRC_board} + extract_partition + extract_shellball + extract_coreboot ) x_ "${cbfstool}" "${appdir}/"coreboot-*.bin extract -n mrc.bin \ @@ -28,9 +28,9 @@ extract_mrc() extract_partition() { - NAME=${1} - FILE=${2} - ROOTFS=${3} + NAME="ROOT-A" + FILE="${MRC_url##*/}" + FILE="${FILE%.zip}" _bs=1024 printf "Extracting ROOT-A partition\n" @@ -46,9 +46,6 @@ extract_partition() extract_shellball() { - ROOTFS=${1} - SHELLBALL=${2} - printf "Extracting chromeos-firmwareupdate\n" printf "cd /usr/sbin\ndump chromeos-firmwareupdate ${SHELLBALL}\nquit" \ | debugfs "${ROOTFS}" || err "extract_shellball: debugfs" @@ -56,13 +53,12 @@ extract_shellball() extract_coreboot() { - _shellball=${1} _unpacked=$( mktemp -d ) printf "Extracting coreboot image\n" - [ -f "${_shellball}" ] || \ + [ -f "${SHELLBALL}" ] || \ err "extract_coreboot: shellball missing in google cros image" - x_ sh "${_shellball}" --unpack "${_unpacked}" + x_ sh "${SHELLBALL}" --unpack "${_unpacked}" # TODO: audit the f* out of that shellball, for each mrc version. # it has to be updated for each mrc update. we should ideally diff --git a/include/option.sh b/include/option.sh index 991ec0dc..73a567bb 100755 --- a/include/option.sh +++ b/include/option.sh @@ -17,11 +17,11 @@ eval "$(setvars "" CONFIG_BOARD_DELL_E6400 CONFIG_HAVE_MRC CONFIG_HAVE_ME_BIN \ CONFIG_INCLUDE_SMSC_SCH5545_EC_FW CONFIG_SMSC_SCH5545_EC_FW_FILE \ CONFIG_IFD_BIN_PATH CONFIG_MRC_FILE _dest board boarddir)" -listitems() +items() { rval=1 [ ! -d "${1}" ] && \ - printf "listitems: directory '%s' doesn't exist" "${1}" && \ + printf "items: directory '%s' doesn't exist" "${1}" && \ return 1 for x in "${1}/"*; do # -e used because this is for files *or* directories diff --git a/script/build/fw/coreboot b/script/build/fw/coreboot index 9e266ce7..8853f749 100755 --- a/script/build/fw/coreboot +++ b/script/build/fw/coreboot @@ -25,15 +25,14 @@ pv="${pv} payload_seabios_withgrub payload_uboot memtest_bin" v="romdir cbrom initmode displaymode cbcfg targetdir tree arch" v="${v} grub_timeout ubdir vendorfiles board grub_scan_disk uboot_config" eval "$(setvars "n" ${pv})" -eval "$(setvars "" ${v})" -eval "$(setvars "" boards _displaymode _payload _keyboard all targets)" +eval "$(setvars "" ${v} boards _displaymode _payload _keyboard all targets)" main() { while [ $# -gt 0 ]; do case ${1} in help) usage && exit 0 ;; - list) listitems config/coreboot && exit 0 ;; + list) items config/coreboot && exit 0 ;; -d) _displaymode="${2}" ;; -p) _payload="${2}" ;; -k) _keyboard="${2}" ;; @@ -45,7 +44,7 @@ main() shift 2 done - [ "${all}" != "y" ] || boards=$(listitems config/coreboot) || \ + [ "${all}" != "y" ] || boards=$(items config/coreboot) || \ err "Cannot generate list of boards for building" for x in ${boards}; do @@ -63,11 +62,7 @@ main() printf "\nROM images available in these directories:\n" printf "${targets}^^ ROM images available in these directories.\n\n" - printf "WARNING!!!!!!! PLEASE READ:\n\n" - - printf "DO NOT flash ROM images contained under elf/, because they lack" - printf " payloads and will BRICK your machine. Please flash ROM images" - printf " contained under bin/ instead. YOU HAVE BEEN WARNED.\n\n" + printf "DO NOT flash ROM images from elf/ - please use bin/ instead.\n" } check_target() @@ -151,13 +146,12 @@ prepare_target() build_dependency_seabios() { [ "${payload_seabios}" = "y" ] || return 0 + [ -f "${seavgabiosrom}" ] && \ + [ -f elf/seabios/default/libgfxinit/bios.bin.elf ] && \ + [ -f elf/seabios/default/vgarom/bios.bin.elf ] && \ + [ -f elf/seabios/default/normal/bios.bin.elf ] && return 0 - if [ ! -f "${seavgabiosrom}" ] \ - || [ ! -f elf/seabios/default/libgfxinit/bios.bin.elf ] \ - || [ ! -f elf/seabios/default/vgarom/bios.bin.elf ] \ - || [ ! -f elf/seabios/default/normal/bios.bin.elf ]; then - x_ ./update project trees -b seabios - fi + x_ ./update project trees -b seabios } build_dependency_grub() @@ -413,7 +407,7 @@ usage() ./build fw coreboot x60 -p grub -d corebootfb -k usqwerty possible values for 'target': - $(listitems "config/coreboot") + $(items "config/coreboot") Refer to the ${projectname} documentation for more information. EOF diff --git a/script/update/project/trees b/script/update/project/trees index c8643966..7ba9a38b 100755 --- a/script/update/project/trees +++ b/script/update/project/trees @@ -87,7 +87,7 @@ build_targets() [ $# -gt 0 ] && target1="${1}" [ "${target1}" = "utils" ] && [ "${project}" = "coreboot" ] && \ shift 1 - targets=$(listitems "${cfgsdir}") || \ + targets=$(items "${cfgsdir}") || \ err "Cannot get options for ${cfgsdir}" [ $# -gt 0 ] && targets=$@ @@ -173,15 +173,14 @@ handle_src_tree() fi [ "${target1}" = "utils" ] && [ "${project}" = "coreboot" ] && return 0 + [ "$project" != "coreboot" ] && [ "$project" != "u-boot" ] && return 0 # u-boot and coreboot are both compiled with coreboot's crossgcc - if [ "${project}" = "coreboot" ] || [ "${project}" = "u-boot" ]; then - [ ! -z ${mode} ] || check_cross_compiler || \ - err "handle_src_tree ${project}/${target}: crossgcc" - cbfstool="cbutils/${tree}/cbfstool" - [ -f "${cbfstool}" ] || \ - x_ ./update project trees -b coreboot utils "${tree}" - fi + [ ! -z ${mode} ] || check_cross_compiler || \ + err "handle_src_tree ${project}/${target}: crossgcc" + cbfstool="cbutils/${tree}/cbfstool" + [ -f "${cbfstool}" ] && return 0 + x_ ./update project trees -b coreboot utils "${tree}" } # set up cross-compiler (coreboot crossgcc) for u-boot and coreboot @@ -279,6 +278,7 @@ run_make_command() x_ printf "%s\n" "${version%%-*}" >"${codedir}/.coreboot-version" x_ make ${mode} -j$(nproc) -C "${codedir}" + [ "${mode}" != "clean" ] && return 0 make -C "${codedir}" distclean 2>/dev/null || : } diff --git a/script/update/vendor/download b/script/update/vendor/download index 87e9d3a5..b5618c3b 100755 --- a/script/update/vendor/download +++ b/script/update/vendor/download @@ -63,9 +63,8 @@ build_dependencies() x_ ./update project trees -b uefitool [ -f "${kbc1126_ec_dump}" ] || \ x_ make -C "${cbdir}/util/kbc1126" - if [ ! -f "${cbfstool}" ] || [ ! -f "${ifdtool}" ]; then - x_ ./update project trees -b coreboot utils default - fi + [ -f "${cbfstool}" ] && [ -f "${ifdtool}" ] && return 0 + x_ ./update project trees -b coreboot utils default } download_vendorfiles() @@ -85,8 +84,7 @@ download_vendorfiles() "${E6400_VGA_DL_url_bkup}" "${E6400_VGA_DL_hash}" \ "${CONFIG_VGA_BIOS_FILE}" [ -z "${CONFIG_HAVE_MRC}" ] && return 0 - fetch "mrc" "${MRC_url}" "${MRC_url_bkup}" "${MRC_hash}" \ - "${CONFIG_MRC_FILE}" + fetch "mrc" "$MRC_url" "$MRC_url_bkup" "$MRC_hash" "$CONFIG_MRC_FILE" } fetch() diff --git a/script/update/vendor/inject b/script/update/vendor/inject index c4a7f702..d156be25 100755 --- a/script/update/vendor/inject +++ b/script/update/vendor/inject @@ -15,7 +15,7 @@ main() { [ $# -lt 1 ] && err "No options specified." [ "${1}" = "listboards" ] && \ - listitems config/coreboot && exit 0 + items config/coreboot && exit 0 archive="${1}" |