aboutsummaryrefslogtreecommitdiff
path: root/Mk/bsd.port.mk
diff options
context:
space:
mode:
authorBryan Drewery <bdrewery@FreeBSD.org>2013-08-31 13:22:01 +0000
committerBryan Drewery <bdrewery@FreeBSD.org>2013-08-31 13:22:01 +0000
commit1045299f41bad9868a03709cb8476f41b3ddb325 (patch)
treef8035be7bb426775014988f4fa51516b91c12a2b /Mk/bsd.port.mk
parentcd1dd254b941ec5cd5bdb00c8142bf05945a3191 (diff)
downloadports-1045299f41bad9868a03709cb8476f41b3ddb325.tar.gz
ports-1045299f41bad9868a03709cb8476f41b3ddb325.zip
Notes
Diffstat (limited to 'Mk/bsd.port.mk')
-rw-r--r--Mk/bsd.port.mk19
1 files changed, 17 insertions, 2 deletions
diff --git a/Mk/bsd.port.mk b/Mk/bsd.port.mk
index 3f26568a6be5..aa3a17a94ddd 100644
--- a/Mk/bsd.port.mk
+++ b/Mk/bsd.port.mk
@@ -3413,7 +3413,13 @@ do-fetch:
else \
SORTED_MASTER_SITES_CMD_TMP="${SORTED_MASTER_SITES_DEFAULT_CMD}" ; \
fi; \
- for site in `eval $$SORTED_MASTER_SITES_CMD_TMP ${_RANDOMIZE_SITES}`; do \
+ sites_remaining=0; \
+ sites="`eval $$SORTED_MASTER_SITES_CMD_TMP ${_RANDOMIZE_SITES}`"; \
+ for site in $${sites}; do \
+ sites_remaining=$$(($${sites_remaining} + 1)); \
+ done; \
+ for site in $${sites}; do \
+ sites_remaining=$$(($${sites_remaining} - 1)); \
${ECHO_MSG} "=> Attempting to fetch $${site}$${file}"; \
CKSIZE=`alg=SIZE; ${DISTINFO_DATA}`; \
case $${file} in \
@@ -3422,7 +3428,16 @@ do-fetch:
*) args=$${site}$${file};; \
esac; \
if ${SETENV} ${FETCH_ENV} ${FETCH_CMD} ${FETCH_BEFORE_ARGS} $${args} ${FETCH_AFTER_ARGS}; then \
- continue 2; \
+ actual_size=`stat -f %z "$${file}"`; \
+ if [ $${actual_size} -eq $${CKSIZE} ]; then \
+ continue 2; \
+ else \
+ ${ECHO_MSG} "=> Fetched file size mismatch (expected $${CKSIZE}, actual $${actual_size})"; \
+ if [ $${sites_remaining} -gt 1 ]; then \
+ ${ECHO_MSG} "=> Trying next site"; \
+ ${RM} -f $${file}; \
+ fi; \
+ fi; \
fi; \
done; \
${ECHO_MSG} "=> Couldn't fetch it - please try to retrieve this";\