diff --git a/include/vendor.sh b/include/vendor.sh index 4933a5e0..d9854d0f 100755 --- a/include/vendor.sh +++ b/include/vendor.sh @@ -40,64 +40,3 @@ check_defconfig() done return 1 } - -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_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 -} 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() { (