patch for force fetch

Andriy Gapon avg at FreeBSD.org
Mon May 16 07:03:01 UTC 2011


I've noticed the following problem.
If a distfile is updated by a distributor without renaming it (so that checksum
and possibly size change), then more often than not the port build system would
fail to fetch the distfile.
An example:
...
 => SHA256 Checksum mismatch for eclipse/javax.servlet.jsp_2.0.0.v200806031607.jar.
...
=> javax.servlet.jsp_2.0.0.v200806031607.jar doesn't seem to exist in
/usr/ports/distfiles/eclipse.
=> Attempting to fetch
http://download.eclipse.org/tools/orbit/downloads/drops/R20100519200754/bundles/javax.servlet.jsp_2.0.0.v200806031607.jar
fetch:
http://download.eclipse.org/tools/orbit/downloads/drops/R20100519200754/bundles/javax.servlet.jsp_2.0.0.v200806031607.jar:
Requested Range Not Satisfiable
=> Attempting to fetch
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/eclipse/javax.servlet.jsp_2.0.0.v200806031607.jar
fetch:
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/eclipse/javax.servlet.jsp_2.0.0.v200806031607.jar:
size mismatch: expected 63889, actual 62707
=> Couldn't fetch it - please try to retrieve this
=> port manually into /usr/ports/distfiles/eclipse and try again.
*** Error code 1

I think that this happens because the old version of the distfile is still
present in download target location and fetch(1) thinks that it has a partially
downloaded file and tries to be smart.

The following patch simply tries to remove the stale distfile before calling
fetch.  Maybe there is a smarter way about this, like e.g. passing some option
to fetch.

--- /usr/ports/Mk/bsd.port.mk.orig	2011-05-16 09:53:49.461968872 +0300
+++ /usr/ports/Mk/bsd.port.mk	2011-05-16 09:56:47.995971662 +0300
@@ -3562,6 +3562,9 @@
 			   ${ECHO_MSG} "=> ${DISTDIR} is not writable by you; cannot fetch."; \
 			   exit 1; \
 			fi; \
+			if [ "$$force_fetch" = "true" ]; then \
+				rm -f $$file $$filebasename \
+			fi \
 			if [ ! -z "$$select" ] ; then \
 				__MASTER_SITES_TMP= ; \
 				for group in $$select; do \

-- 
Andriy Gapon


More information about the freebsd-ports mailing list