diff options
author | Leah Rowe <leah@libreboot.org> | 2023-09-30 01:31:40 +0100 |
---|---|---|
committer | Leah Rowe <leah@libreboot.org> | 2023-09-30 12:31:30 +0100 |
commit | 385eb90c8cd31bfb770a950dd9252a30ccd6955d (patch) | |
tree | ded66bc53f6f13ec8d87266f5c38d46b2e1d8b17 /script/update | |
parent | 9f5a5450afda39973d9da4fa3bed97c365a5acd2 (diff) |
update/*/*: unified scanning of revisions/sources
update/blobs/download and update/project/repo both use
the same logic, for setting variables with awk and a
specially formatted configuration file.
unify this logic under include/option.sh, and use that.
Signed-off-by: Leah Rowe <leah@libreboot.org>
Diffstat (limited to 'script/update')
-rwxr-xr-x | script/update/blobs/download | 26 | ||||
-rwxr-xr-x | script/update/project/repo | 62 |
2 files changed, 25 insertions, 63 deletions
diff --git a/script/update/blobs/download b/script/update/blobs/download index 2ccf3b77..51747824 100755 --- a/script/update/blobs/download +++ b/script/update/blobs/download @@ -7,6 +7,7 @@ . "include/err.sh" . "include/blobutil.sh" . "include/mrc.sh" +. "include/option.sh" export PATH="${PATH}:/sbin" @@ -15,10 +16,11 @@ main() [ $# -gt 0 ] || err "No argument given" board="${1}" boarddir="${cbcfgsdir}/${board}" + _b="${board%%_*mb}" # shorthand (avoid duplicating config per rom size) check_defconfig "${boarddir}" || exit 0 detect_firmware && exit 0 - scan_sources_config + scan_config "${_b}" "config/blobs" "err" build_dependencies download_blobs @@ -36,29 +38,19 @@ detect_firmware() printf "Blobs not needed for: %s\n" "${board}" 1>&2 } -scan_sources_config() -{ - _b=${board%%_*mb} # shorthand to avoid duplicating config per rom size - awkstr=" /\{.*${_b}.*}{/ {flag=1;next} /\}/{flag=0} flag { print }" - while read -r line ; do - set ${line} 1>/dev/null 2>/dev/null - eval "${1}=\"${2}\"" - done << EOF - $(eval "awk '${awkstr}' config/blobs/sources") -EOF -} - build_dependencies() { - [ -d ${cbdir} ] || ./update project trees coreboot ${cbdir##*/} || \ - err "build_dependencies: can't fetch ${cbdir}" + [ -d ${cbdir} ] || \ + ./update project trees coreboot ${cbdir##*/} || \ + err "build_dependencies: can't fetch ${cbdir}" for d in uefitool biosutilities bios_extract me_cleaner; do [ -d "${d}" ] && continue ./update project repo "${d}" || \ err "build_dependencies: can't fetch ${d}" done - [ -f uefitool/uefiextract ] || ./handle make file -b uefitool || \ - err "build_dependencies: can't build uefitool" + [ -f uefitool/uefiextract ] || \ + ./handle make file -b uefitool || \ + err "build_dependencies: can't build uefitool" [ -f "${cbdir}/util/kbc1126/kbc1126_ec_dump" ] || \ make -C "${cbdir}/util/kbc1126" || \ err "build_dependencies: can't build kbc1126_ec_dump" diff --git a/script/update/project/repo b/script/update/project/repo index 7e65ef29..4695b52b 100755 --- a/script/update/project/repo +++ b/script/update/project/repo @@ -6,10 +6,11 @@ . "include/err.sh" . "include/git.sh" +. "include/option.sh" name="" -revision="" -location="" +rev="" +loc="" url="" bkup_url="" tmp_dir="${PWD}/tmp/gitclone" @@ -22,7 +23,7 @@ main() [ -z "${1+x}" ] && fail 'main(): name not set' name=${1} - read_config + scan_config "${name}" "config/git" "fail" verify_config clone_project @@ -34,41 +35,10 @@ main() rm -Rf "${tmp_dir}" || fail "cannot remove tmpdir, ${tmp_dir}" } -read_config() -{ - revfile="$(mktemp -t gitrevisions.XXXXXXXXXX)" || \ - fail "read_config: Cannot initialise tmpfile" - - cat config/git/* > "${revfile}" || \ - fail "read_config: Cannot concatenate revision files" - - awkstr=" /\{.*${name}.*}{/ {flag=1;next} /\}/{flag=0} flag { print }" - while read -r line ; do - set ${line} || fail "read_config: set line" - case ${line} in - rev:*) - revision=${2} ;; - loc:*) - location=${2} ;; - url:*) - url=${2} ;; - bkup_url:*) - bkup_url=${2} ;; - depend:*) - depend="${depend} ${2} " ;; - esac - done << EOF - $(eval "awk \"${awkstr}\" \"${revfile}\"") -EOF - - rm -f "${revfile}" || \ - fail "read_config: can't remove tmp revfile" -} - verify_config() { - [ -z "${revision+x}" ] && fail 'verify_config: revision not set' - [ -z "${location+x}" ] && fail 'verify_config: location not set' + [ -z "${rev+x}" ] && fail 'verify_config: rev not set' + [ -z "${loc+x}" ] && fail 'verify_config: loc not set' [ -z "${url+x}" ] && fail 'verify_config: url not set' } @@ -79,24 +49,24 @@ clone_project() git clone ${url} "${tmp_dir}" || git clone ${bkup_url} "${tmp_dir}" || \ fail "clone_project: could not download ${name}" - git_reset_rev "${tmp_dir}" "${revision}" "fail" || \ - fail "clone_project ${location}/: cannot reset <- ${revision}" + git_reset_rev "${tmp_dir}" "${rev}" "fail" || \ + fail "clone_project ${loc}/: cannot reset <- ${rev}" git_am_patches "${tmp_dir}" "${PWD}/config/${name}/patches" "fail" || \ - fail "clone_project ${location}/: cannot apply patches" + fail "clone_project ${loc}/: cannot apply patches" - [ ! -d "${location}" ] || \ - rm -Rf "${location}" || \ - fail "clone_project: Can't remove directory '${location}'" - [ "${location}" = "${location%/*}" ] || mkdir -p ${location%/*} || \ + [ ! -d "${loc}" ] || \ + rm -Rf "${loc}" || \ + fail "clone_project: Can't remove directory '${loc}'" + [ "${loc}" = "${loc%/*}" ] || mkdir -p ${loc%/*} || \ fail "clone_project: cannot make directory for ${name}" - mv "${tmp_dir}" "${location}" || \ + mv "${tmp_dir}" "${loc}" || \ fail "clone_project: could not copy temp file to destination" } fail() { - for x in "${location}" "${tmp_dir}"; do - [ -z "${x}" ] || [ ! -d "${x}" ] || rm -Rf "${location}" || : + for x in "${loc}" "${tmp_dir}"; do + [ -z "${x}" ] || [ ! -d "${x}" ] || rm -Rf "${loc}" || : done usage err "${1}" |