summaryrefslogtreecommitdiff
path: root/script/update/vendor
diff options
context:
space:
mode:
Diffstat (limited to 'script/update/vendor')
-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()
{
(