diff options
author | Leah Rowe <leah@libreboot.org> | 2023-10-15 10:00:23 +0100 |
---|---|---|
committer | Leah Rowe <leah@libreboot.org> | 2023-10-15 10:01:16 +0100 |
commit | d8c2c24507c0999240c74c4b85e33e1646d84e7f (patch) | |
tree | afc338b5173a518084420f708373d226a72c3a5b /script/update/vendor/download | |
parent | 0f807762a266ff228cc5603b165c2f8d94af8f69 (diff) |
vendor.sh: move some functions to vendor/download
they are the functions only used by the download
script, so they don't belong in vendor.sh
an include file should only contain variables and
functions used by multiple main scripts
Signed-off-by: Leah Rowe <leah@libreboot.org>
Diffstat (limited to 'script/update/vendor/download')
-rwxr-xr-x | script/update/vendor/download | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/script/update/vendor/download b/script/update/vendor/download index 6c83b0ca..a32be3ba 100755 --- a/script/update/vendor/download +++ b/script/update/vendor/download @@ -76,6 +76,60 @@ download_vendorfiles() "${CONFIG_MRC_FILE}" } +fetch() +{ + dl_type="${1}" + dl="${2}" + dl_bkup="${3}" + dlsum="${4}" + [ "${5# }" = "${5}" ] || err "fetch: space not allowed in _dest: '${5}'" + [ "${5#/}" = "${5}" ] || err "fetch: absolute path not allowed: '${5}'" + _dest="${5##*../}" + _dl="${vendir}/cache/${dlsum}" + + x_ mkdir -p "${_dl%/*}" + + dl_fail="y" + vendor_checksum "${dlsum}" "${_dl}" && dl_fail="n" + for url in "${dl}" "${dl_bkup}"; do + [ "${dl_fail}" = "n" ] && break + [ -z "${url}" ] && continue + x_ rm -f "${_dl}" + curl --location --retry 3 -A "${_ua}" "${url}" -o "${_dl}" || \ + wget --tries 3 -U "${_ua}" "${url}" -O "${_dl}" || \ + continue + vendor_checksum "${dlsum}" "${_dl}" && dl_fail="n" + done + [ "${dl_fail}" = "y" ] && \ + err "fetch ${dlsum}: matched file unavailable" + + x_ rm -Rf "${_dl}_extracted" + mkdirs "${_dest}" "extract_${dl_type}" || return 0 + eval "extract_${dl_type}" + + [ -f "${_dest}" ] && return 0 + err "extract_${dl_type} (fetch): missing file: '${_dest}'" +} + +vendor_checksum() +{ + [ "$(sha512sum ${2} | awk '{print $1}')" != "${1}" ] || return 0 + printf "Bad checksum for file: %s\n" "${2}" 1>&2 + rm -f "${2}" || : + return 1 +} + +mkdirs() +{ + [ -f "${1}" ] && \ + printf "mkdirs ${1} ${2}: already downloaded\n" 1>&2 && return 1 + x_ mkdir -p "${1%/*}" + x_ rm -Rf "${appdir}" + x_ mkdir -p "${appdir}/" + extract_archive "${_dl}" "${appdir}" || \ + [ "${2}" = "extract_e6400vga" ] || err "mkdirs ${1} ${2}: !extract" +} + extract_intel_me() { _me="${PWD}/${_dest}" # must always be an absolute path @@ -111,6 +165,13 @@ extract_intel_me() rm -Rf "${sdir}" || err "extract_intel_me: !rm -Rf ${sdir}" } +extract_archive() +{ + innoextract "${1}" -d "${2}" || python "${pfs_extract}" "${1}" -e || \ + 7z x "${1}" -o"${2}" || unar "${1}" -o "${2}" || \ + unzip "${1}" -d "${2}" || return 1 +} + extract_kbc1126ec() { ( |