diff options
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()  {  	( | 
