summaryrefslogtreecommitdiff
path: root/script
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2023-10-15 10:00:23 +0100
committerLeah Rowe <leah@libreboot.org>2023-10-15 10:01:16 +0100
commitd8c2c24507c0999240c74c4b85e33e1646d84e7f (patch)
treeafc338b5173a518084420f708373d226a72c3a5b /script
parent0f807762a266ff228cc5603b165c2f8d94af8f69 (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')
-rwxr-xr-xscript/update/vendor/download61
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()
{
(