mirror of
https://github.com/tuna/tunasync-scripts.git
synced 2025-04-20 04:12:42 +00:00
1. Update anaconda.sh, adding retry limitation
2. added pyquery to Dockerfile
This commit is contained in:
parent
5dcf7ac087
commit
9e0fba56d9
@ -15,6 +15,7 @@ RUN pip install --upgrade pip setuptools && \
|
|||||||
RUN mkdir -p /home/tunasync-scripts
|
RUN mkdir -p /home/tunasync-scripts
|
||||||
ADD https://storage.googleapis.com/git-repo-downloads/repo /usr/local/bin/aosp-repo
|
ADD https://storage.googleapis.com/git-repo-downloads/repo /usr/local/bin/aosp-repo
|
||||||
RUN chmod a+x /usr/local/bin/aosp-repo
|
RUN chmod a+x /usr/local/bin/aosp-repo
|
||||||
|
RUN apt-get install -y python3-lxml && pip3 install pyquery
|
||||||
|
|
||||||
ENV HOME=/tmp
|
ENV HOME=/tmp
|
||||||
CMD /bin/bash
|
CMD /bin/bash
|
||||||
|
59
anaconda.sh
59
anaconda.sh
@ -15,6 +15,9 @@ TMP_DIR=$(mktemp -d)
|
|||||||
CONDA_REPOS=("free" "r" "mro" "pro")
|
CONDA_REPOS=("free" "r" "mro" "pro")
|
||||||
CONDA_ARCHES=("linux-64" "linux-32" "linux-armv6l" "linux-armv7l" "linux-ppc64le" "osx-64" "osx-32" "win-64" "win-32")
|
CONDA_ARCHES=("linux-64" "linux-32" "linux-armv6l" "linux-armv7l" "linux-ppc64le" "osx-64" "osx-32" "win-64" "win-32")
|
||||||
|
|
||||||
|
EXIT_STATUS=0
|
||||||
|
EXIT_MSG=""
|
||||||
|
|
||||||
function check-and-download() {
|
function check-and-download() {
|
||||||
remote_file=$1
|
remote_file=$1
|
||||||
local_file=$2
|
local_file=$2
|
||||||
@ -36,6 +39,27 @@ function cleanup () {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function download-with-checksum() {
|
||||||
|
local pkg_url=$1
|
||||||
|
local dest_file=$2
|
||||||
|
local pkgmd5=$3
|
||||||
|
|
||||||
|
local declare downloaded=false
|
||||||
|
local trials=0
|
||||||
|
|
||||||
|
while [[ $downloaded != true ]]; do
|
||||||
|
echo "downloading ${pkg_url}"
|
||||||
|
wget -q -O ${dest_file} ${pkg_url} && {
|
||||||
|
# two space for md5sum check format
|
||||||
|
{ md5sum -c - < <(echo "${pkgmd5} ${dest_file}"); } && downloaded=true || trials=$((trials + 1))
|
||||||
|
}
|
||||||
|
if (( $trials > 3 )); then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
trap cleanup EXIT
|
trap cleanup EXIT
|
||||||
|
|
||||||
echo ${TMP_DIR}
|
echo ${TMP_DIR}
|
||||||
@ -57,21 +81,18 @@ function sync_installer() {
|
|||||||
pkg_url="${repo_url}${fname}"
|
pkg_url="${repo_url}${fname}"
|
||||||
pkgsize=`curl --head -s ${pkg_url} | grep 'Content-Length' | awk '{print $2}' | tr -d '\r'`
|
pkgsize=`curl --head -s ${pkg_url} | grep 'Content-Length' | awk '{print $2}' | tr -d '\r'`
|
||||||
|
|
||||||
declare downloaded=false
|
|
||||||
if [[ -f ${dest_file} ]]; then
|
if [[ -f ${dest_file} ]]; then
|
||||||
rsize=`stat -c "%s" ${dest_file}`
|
rsize=`stat -c "%s" ${dest_file}`
|
||||||
if (( ${rsize} == ${pkgsize} )); then
|
if (( ${rsize} == ${pkgsize} )); then
|
||||||
downloaded=true
|
|
||||||
echo "Skipping ${fname}, size ${pkgsize}"
|
echo "Skipping ${fname}, size ${pkgsize}"
|
||||||
|
continue
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
while [[ $downloaded != true ]]; do
|
download-with-checksum ${pkg_url} ${dest_file} ${pkgmd5} || {
|
||||||
echo "downloading ${pkg_url}"
|
echo "Failed to download ${pkg_url}: checksum mismatch"
|
||||||
wget -q -O ${dest_file} ${pkg_url} && {
|
EXIT_STATUS=2
|
||||||
# two space for md5sum check format
|
EXIT_MSG="some files has bad checksum."
|
||||||
{ md5sum -c - < <(echo "${pkgmd5} ${dest_file}"); } && downloaded=true
|
|
||||||
}
|
}
|
||||||
done
|
|
||||||
done < <(wget -O- ${repo_url} | $HTMLPARSE)
|
done < <(wget -O- ${repo_url} | $HTMLPARSE)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,8 +113,8 @@ for repo in ${CONDA_REPOS[@]}; do
|
|||||||
check-and-download ${bz2_repodata_url} ${tmp_bz2_repodata}
|
check-and-download ${bz2_repodata_url} ${tmp_bz2_repodata}
|
||||||
|
|
||||||
jq_cmd='.packages | to_entries[] | [.key, .value.size, .value.md5] | map(tostring) | join(" ")'
|
jq_cmd='.packages | to_entries[] | [.key, .value.size, .value.md5] | map(tostring) | join(" ")'
|
||||||
bzip2 -c -d ${tmp_bz2_repodata} | jq -r "${jq_cmd}" | while read line;
|
|
||||||
do
|
while read line; do
|
||||||
read -a tokens <<< $line
|
read -a tokens <<< $line
|
||||||
pkgfile=${tokens[0]}
|
pkgfile=${tokens[0]}
|
||||||
pkgsize=${tokens[1]}
|
pkgsize=${tokens[1]}
|
||||||
@ -102,25 +123,25 @@ for repo in ${CONDA_REPOS[@]}; do
|
|||||||
pkg_url="${PKG_REPO_BASE}/${pkgfile}"
|
pkg_url="${PKG_REPO_BASE}/${pkgfile}"
|
||||||
dest_file="${LOCAL_DIR}/${pkgfile}"
|
dest_file="${LOCAL_DIR}/${pkgfile}"
|
||||||
|
|
||||||
declare downloaded=false
|
|
||||||
if [[ -f ${dest_file} ]]; then
|
if [[ -f ${dest_file} ]]; then
|
||||||
rsize=`stat -c "%s" ${dest_file}`
|
rsize=`stat -c "%s" ${dest_file}`
|
||||||
if (( ${rsize} == ${pkgsize} )); then
|
if (( ${rsize} == ${pkgsize} )); then
|
||||||
downloaded=true
|
|
||||||
echo "Skipping ${pkgfile}, size ${pkgsize}"
|
echo "Skipping ${pkgfile}, size ${pkgsize}"
|
||||||
|
continue
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
while [[ $downloaded != true ]]; do
|
download-with-checksum ${pkg_url} ${dest_file} ${pkgmd5} || {
|
||||||
echo "downloading ${pkg_url}"
|
echo "Failed to download ${pkg_url}: checksum mismatch"
|
||||||
wget -q -O ${dest_file} ${pkg_url} && {
|
EXIT_STATUS=2
|
||||||
# two space for md5sum check format
|
EXIT_MSG="some files has bad checksum."
|
||||||
{ md5sum -c - < <(echo "${pkgmd5} ${dest_file}"); } && downloaded=true
|
|
||||||
}
|
}
|
||||||
done
|
|
||||||
done
|
done < <(bzip2 -c -d ${tmp_bz2_repodata} | jq -r "${jq_cmd}")
|
||||||
|
|
||||||
mv -f "${TMP_DIR}/repodata.json" "${LOCAL_DIR}/repodata.json"
|
mv -f "${TMP_DIR}/repodata.json" "${LOCAL_DIR}/repodata.json"
|
||||||
mv -f "${TMP_DIR}/repodata.json.bz2" "${LOCAL_DIR}/repodata.json.bz2"
|
mv -f "${TMP_DIR}/repodata.json.bz2" "${LOCAL_DIR}/repodata.json.bz2"
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
|
[[ -z $EXIT_MSG ]] || echo $EXIT_MSG
|
||||||
|
exit $EXIT_STATUS
|
||||||
|
Loading…
x
Reference in New Issue
Block a user