forked from LibreELEC/LibreELEC.tv
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathget_archive
More file actions
executable file
·67 lines (53 loc) · 2.46 KB
/
Copy pathget_archive
File metadata and controls
executable file
·67 lines (53 loc) · 2.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# SPDX-License-Identifier: GPL-2.0-only
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
_get_file_already_downloaded() {
{ [ ! -f "${PACKAGE}" ] || [ ! -f "${STAMP_URL}" ] || [ ! -f "${STAMP_SHA}" ]; } && return 1
{ [ -n "${PKG_SHA256}" ] && [ "$(cat ${STAMP_SHA} 2>/dev/null)" != "${PKG_SHA256}" ]; } && return 1
return 0
}
# Latest file already present, exit now...
_get_file_already_downloaded && exit 0
lock_source_dir "${1}"
# Check again in case of concurrent access - if nothing needs to be downloaded, exit now...
_get_file_already_downloaded && exit 0
# At this point, we need to download something...
build_msg "CLR_GET" "GET" "${1} (archive)" "indent"
pkg_lock_status "GETPKG" "${PKG_NAME}" "unpack" "downloading package..."
PACKAGE_MIRROR="${DISTRO_MIRROR}/${PKG_NAME}/${PKG_SOURCE_NAME}"
[ "${VERBOSE}" != "yes" ] && GET_OPT="--silent --show-error"
GET_CMD="curl ${GET_OPT} --fail --connect-timeout 30 --retry 3 --continue-at - --location --max-redirs 5 --output ${PACKAGE}"
# unset LD_LIBRARY_PATH to stop wget from using toolchain/lib and loading libssl.so/libcrypto.so instead of host libraries
unset LD_LIBRARY_PATH
rm -f "${STAMP_URL}" "${STAMP_SHA}"
NBGET=10
NBCHKS=2
while [ ${NBGET} -gt 0 ] && [ ${NBCHKS} -gt 0 ]; do
for url in "${PKG_URL}" "${PACKAGE_MIRROR}"; do
[ "${url}" = "${PKG_URL}" ] && src="primary" || src="mirror"
build_msg "CLR_GET" "GET" "${1} [${src}] ${url}"
rm -f "${PACKAGE}"
if ${GET_CMD} "${url}"; then
CALC_SHA256=$(sha256sum "${PACKAGE}" | cut -d" " -f1)
{ [ -z "${PKG_SHA256}" ] || [ "${PKG_SHA256}" = "${CALC_SHA256}" ]; } && break 2
if [ "${CHANGE_HASH}" = "yes" ]; then
if [[ "${PKG_NAME}" == "linux" ]]; then
sed -e "/^\s*\*)/,/^\s*;;/ s|^\(\s*PKG_SHA256=\).*|\1\"${CALC_SHA256}\"|" -i "${PKG_DIR}/package.mk"
else
sed -e "s|^PKG_SHA256=.*|PKG_SHA256=\"${CALC_SHA256}\"|" -i "${PKG_DIR}/package.mk"
fi
break 2
else
build_msg "CLR_WARNING" "WARNING" "Incorrect checksum calculated on downloaded file: got ${CALC_SHA256} wanted ${PKG_SHA256}"
NBCHKS=$((NBCHKS - 1))
fi
fi
done
NBGET=$((NBGET - 1))
done
if [ ${NBGET} -eq 0 ] || [ ${NBCHKS} -eq 0 ]; then
die "\nCannot get ${1} sources\n primary: ${PKG_URL}\n mirror: ${PACKAGE_MIRROR}\nTry later!"
else
build_msg "CLR_INFO" "INFO" "Calculated checksum: ${CALC_SHA256}"
echo "${PKG_URL}" > "${STAMP_URL}"
echo "${CALC_SHA256}" > "${STAMP_SHA}"
fi