summaryrefslogtreecommitdiffhomepage
path: root/build.subr
diff options
context:
space:
mode:
authorLucio Andrés Illanes Albornoz (arab, vxp) <l.illanes@gmx.de>2016-06-09 20:06:07 +0000
committerLucio Andrés Illanes Albornoz (arab, vxp) <l.illanes@gmx.de>2016-06-09 20:06:07 +0000
commit02dfe37d917ebb0d4b8476ccf37081bdf7eeb31a (patch)
treec408f0a55b46557c061e86c72c1fd5f0c81f9a48 /build.subr
parent9d8145ce431a34e88096705f0870ef04a7cf6f1e (diff)
downloadmidipix_build-02dfe37d917ebb0d4b8476ccf37081bdf7eeb31a.tar.bz2
midipix_build-02dfe37d917ebb0d4b8476ccf37081bdf7eeb31a.tar.xz
Fix SourceForge URL downloads.
Diffstat (limited to 'build.subr')
-rw-r--r--build.subr22
1 files changed, 15 insertions, 7 deletions
diff --git a/build.subr b/build.subr
index 482ec3e3..d4fed1bd 100644
--- a/build.subr
+++ b/build.subr
@@ -178,14 +178,22 @@ clear_env_with_except() {
# N.B. URLs ($1) may contain `?' or '&' characters.
fetch() {
[ ${ARG_NO_DOWNLOAD:-0} -eq 1 ] && return;
- rm_if_exists $(get_basename ${1});
- wget ${WGET_ARGS} "${1}";
- if [ ${#} -eq 2 ]; then
- set -- $(get_basename ${1}) "$(compare_hash $(get_basename ${1}) ${2})" ${2};
- if [ -n "${2}" ]; then
- log_msg failexit "Error: hash mismatch for URL \`${1}' (is: ${2}, should be: ${3}.)";
- fi;
+ _f_url="${1}"; _f_sha256sum_src="${2}";
+ _f_url_dst="$(get_basename "${_f_url}")";
+ rm_if_exists ${_f_url_dst};
+ if match_any "${_f_url}" "/downloads.sourceforge.net/" ; then
+ _f_url="$(wget ${WGET_ARGS} "${_f_url}" -qO- |\
+ sed -n '/class="direct-download"/s,^.*href="\([^"]\+\)".*$,\1,p')";
fi;
+ wget ${WGET_ARGS} -O ${_f_url_dst} "${_f_url}";
+ if [ -n "${_f_sha256sum_src}" ]; then
+ _f_sha256sum_dst="$(compare_hash ${_f_url_dst} ${_f_sha256sum_src})";
+ if [ -n "${_f_sha256sum_dst}" ]; then
+ set -- "${_f_url}" ${_f_sha256sum_dst} ${_f_sha256sum_src};
+ unset _f_url _f_url_dst _f_sha256sum_src _f_sha256sum_dst;
+ log_msg failexit "Error: hash mismatch for URL \`${1}' (is: ${2}, should be: ${3}.)";
+ fi; unset _f_sha256sum_dst;
+ fi; unset _f_url _f_url_dst _f_sha256sum_src;
};
compare_hash() {